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