
Обычно, когда я меняю частоту кадров, я использую Adobe Premiere и интерпретирую видеоматериал как новую частоту кадров, поэтому длительность меняется. Это нормально. Но поскольку это файл mkv, который я хотел преобразовать, я использую ffmpeg.
Но у меня возникла странная проблема с ffmpeg при добавлении таймкода.
Код, который я использую, выглядит так:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -vf drawtext="fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01\:00\:00\:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
Длительность созданного видео составляет около 42 минут.
Когда я рендерю видео без drawtext:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -sn -y "/Volumes/videos/$FILENAME.mov"
Тогда продолжительность отрендеренного видео составляет 40мин59сек. Это та продолжительность, которую я хотел, и это то же самое, что создает Adobe.
Почему продолжительность видео с нарисованным на картинке таймкодом больше, чем без него?
Как мне преобразовать mkv в DNxHD с 25 кадрами в секунду и прошитым таймкодом, используя ffmpeg? Подскажите, пожалуйста, как правильно?
решение1
В вашем журнале записано:
Multiple -filter, -af or -vf options specified for stream 0, only the last option '-filter:v drawtext' will be used.
Это означает, что ваши настройки игнорируются, и поэтому продолжительность увеличивается.
Используйте только один из них -vf
или используйте -filter_complex
оба варианта фильтрации: аудио и видео:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS,drawtext=fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01:00:00:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
- Возможно, вам придется изменить
timecode='01:00:00:00'
наtimecode='01\:00\:00\:00'
. - ВидетьФильтрация Введение.