Некоторые рекомендации
Я понимаю, что ffmpeg - это приложение для Linux, однако я надеюсь достичь этого в Windows 7 64-bit.
ffmpeg
доступен для Windows, OS X, Linux и других платформ. Смотрите страницу загрузки FFmpeg для нескольких вариантов.
Первым делом вы должны загрузить последнюю сборку ffmpeg
. Рекомендуется регулярно получать новую сборку, так как разработка FFmpeg очень активна и использовать исправленные ошибки. Ежедневные сборки для Windows доступны на Zeranoe FFmpeg Builds .
Я использую то, что мне сказали, это крайне устаревшая предустановка, однако она соответствует моим потребностям, и я являюсь привычкой, когда дело доходит до моих методов кодирования.
Нет причин использовать старую неподдерживаемую предустановку, которая может использовать старые неподдерживаемые параметры. Просто используйте вместо этого -preset veryfast
: он в основном очень похож на ваш старый, неподдерживаемый пресет. ffmpeg
больше не использует текстовый тип файлов "эмулирующих" пресетов для x264, но теперь обращается к ним напрямую.
Добавление водяного знака
Используйте overlay
видеофильтр:
ffmpeg -i input.flv -i logo.png -filter_complex \
"[0:v][1:v]overlay=W-w-10:H-h-10[watermark]" -map "[watermark]" \
-map 0:a -codec:v libx264 -preset veryfast -crf 18 -codec:a copy \
output.mp4
График фильтра: [0:v][1:v]overlay=W-w-10:H-h-10[watermark]
[0:v]
является спецификатором потока, ссылающимся на видеопоток (ы) первого ввода (input.flv
). [1:v]
относится к видеопотоку (ам) второго входа (logo.png
).
W-w-10
размещает ось x и относится к ширине основного входа (W
) и ширине оверлейного входа (w
). H-h-10
аналогична , но для оси у. В этом примере логотип размещается внизу справа с отступом в 10 пикселей. Смотрите overlay
документации видео фильтра для получения дополнительной информации.
[watermark]
- метка выходной ссылки. Некоторые опускают это, но я предпочитаю явно обозначать свои выводы, чтобы устранить неоднозначность.
-crf 18
часто считается "визуально без потерь", поэтому я предполагаю, что значение будет достаточно для вас. Если нет, то уменьшите значение до достижения приемлемого качества. Затем используйте самый медленный пресет, к которому у вас есть терпение. См. Руководство по кодированию FFmpeg и x264 для получения дополнительной информации о -crf
и -preset
.
-codec:a copy
будет транслировать поток аудио. Если вашему плееру не нравится то, что я считаю MP3-аудио, используйте вместо этого что-то вроде -codec:a aac -strict experimental -b:a 128k
. Для получения дополнительной информации см. Руководство по кодированию FFmpeg и AAC .
Сегментация видео
Используйте segment
мультиплексор:
ffmpeg -i input.flv -i logo.png -filter_complex \
"[0:v][1:v]overlay=W-w-10:H-h-10[watermark]" -map "[watermark]" \
-map 0:a -codec:v libx264 -preset veryfast -crf 18 -codec:a copy \
-f segment -segment_time 20 -segment_list out.csv output.mp4
Продолжительность сегментов будет приблизительно 20 секунд, а выходные данные будут называться output-000.mp4
, output-001.mp4
, output-002.mp4
и т. Д. Более подробную информацию и примеры см. В документации по segment
мультиплексору .
Пакетное кодирование
Linux
Использование Bash "для цикла":
$ mkdir outputdir
$ for file in *.flv; do ffmpeg -i "$file" -i logo.png -filter_complex \
"[0:v][1:v]overlay=W-w-10:H-h-10[watermark]" -map "[watermark]" \
-map 0:a -codec:v libx264 -preset veryfast -crf 18 -codec:a copy \
-f segment -segment_time 20 -segment_list outputdir/out.csv \
outputdir/"${file%.flv}-%03d.mp4"; done
Windows
for %%a in ("*.flv") do ffmpeg -i "%%a" -i logo.png -filter_complex "[0:v][1:v]overlay=W-w-10:H-h-10[watermark]" -map "[watermark]" -map 0:a -codec:v libx264 -preset veryfast -crf 18 -codec:a copy -f segment -segment_time 20 -segment_list "outputfolder\out.csv" "outputfolder\%%~na-%%03d.mp4"
pause
Вы можете сохранить это в текстовом редакторе и назвать его watermark.bat
а затем дважды щелкнуть его, чтобы выполнить. В проводнике Windows вам, вероятно, придется показывать скрытые системные файлы для показа watermark.bat
.