Destio

Массовое удаление аудиодорожек в Linux

Если есть нужда удалить звуковые дорожки из видеофайлов в Linux (а они иногда занимают до 20% объема видео), с этим хорошо справляется ffmpeg:

ffmpeg -i inputVideo -vcodec copy -an outputVideo

Оригинальный файл останется. Время конвертации примерно равно времени записи файла на диск, приемлемо. Мне показалось, что этот способ портит первый кадр видео, невелика беда.

Чтобы можно было удалять аудио сразу у всех файлов в папке, можно завернуть ффмпег в небольшой баш скрипт. Приведенная версия сохраняет новый файл с префиксом noaudio- и не будет конвертировать файлы с таким префиксом:

#!/bin/bash

set -euo pipefail
IFS=$'\n\t'

function removeAudioTrack () {
    ffmpeg -i "$1" -vcodec copy -an "noaudio-$1"
}

for file in "$@"
do
    isAlreadyFixed=$(echo $(expr match "$file" ".*noaudio-"))
    if [[ -f "$file" && $isAlreadyFixed < 1 ]] 
    then
        echo "$file"
        removeAudioTrack "$file"
    fi
done

Иногда удаление дорожки портит все видео, так что надо всегда проверять результат.

Ярлыки: , ,


Ближайшие сообщения:

Похожие сообщения:

Комментарии к этой записи отключены.