Пакетне перетворення 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
безглуздо, оскільки ви запускаєте це безпосередньо в інтерактивній оболонці.