Пакетное преобразование H.265 в H.264
Эти примеры были написаны за последние ffmpeg
. Избавьте себя от проблем и загрузите последнюю версию. Затем поместите ffmpeg
двоичный файл в ~/bin
или /usr/local/bin
(может потребоваться выйти из системы, а затем войти в систему, чтобы ее заметили).
Матроска выходной
mkdir h264vids
for f in *.mp4; do ffmpeg -i "$f" -map 0 -c copy -c:v libx264 -crf 23 -preset medium h264vids/"${f%.*}.mkv"; done
Этот пример будет выводить в каталог с именем h264vids
.
В этом примере предполагается, что ваши входные данные .mp4
. Если нет, измените .mp4
экземпляр в примере на ваш тип входного файла или просто используйте жадные *
алгоритмы.
Настройте -crf
качество и -preset
скорость / эффективность кодирования. Или просто удалите эти параметры и используйте значения по умолчанию, которые являются довольно хорошими и должны быть достаточными для большинства (в примере используются значения по умолчанию для этих параметров). См. FFmpeg Wiki: H.264 для получения дополнительной информации об этих параметрах.
Выход MP4
Этот немного сложнее. Это будет выполнять условное кодирование в зависимости от того, является ли входной звук AAC или нет. Если входной аудиосигнал имеет формат AAC, тогда аудиосигнал будет скопирован в потоковом режиме (переделан заново) как есть, и ненужное перекодирование будет исключено. Если входной звук не AAC, то он будет перекодирован в AAC.
Вот простой скрипт, демонстрирующий, как сделать это, используя ffprobe
и ffmpeg
. Скопируйте и сохраните его в каталог, содержащий ваши видео для конвертации, дайте ему разрешение на выполнение с помощью chmod +x yourscriptname
, а затем запустите его с ./yourscriptname
.
#!/bin/bash
mkdir h264vids
for f in *.mkv
do
audioformat=$(ffprobe -loglevel error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1:nk=1 "$f")
if [ "$audioformat" = "aac" ]; then
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart h264vids/"${f%.*}.mp4"
else
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a aac -movflags +faststart h264vids/"${f%.*}.mp4"
fi
done
Этот пример будет выводить в каталог с именем h264vids
.
В этом примере предполагается, что ваши входные данные .mkv
. Если нет, измените .mkv
экземпляр в примере на ваш тип входного файла или просто используйте жадные *
алгоритмы.
См. Примечание выше относительно -crf
и -preset
.
Вы можете приостановить кодирование с помощью ctrl+ zи продолжить с помощью fg
.
sleep 3
это не нужно (но возможно полезно для завершения цикла) и неINPUT=$1
имеет смысла, так как вы запускаете это непосредственно в интерактивной оболочке.