#windows #batch-file #ffmpeg #drawtext
#Windows #пакетный файл #ffmpeg #drawtext
Вопрос:
В настоящее время я использую три разные команды для создания трех файлов формата mp4 только для удаления двух «временных» видео с использованием этого кода.
@ECHO OFF
ffmpeg -f lavfi -i color=size=1280x720:duration=5:rate=25:color=Black -vf "drawtext=fontfile='GothamRnd-Book.otf':line_spacing=15:fontsize=15:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text=Stack Exchange" "out1.mp4"
ffmpeg -i "out1.mp4" -i logo.png -filter_complex "overlay=x=10:y=10" "out2.mp4"
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -i "out2.mp4" -c:v copy -c:a aac -shortest "out3.mp4"
del "out1.mp4"
del "out2.mp4"
pause
Ближайшее, к чему я пришел, — это перемещение anullsrc=channel_layout
в -filter_complex
, но это приводит к длительному кодированию, которое я действительно не понимаю, что происходит, потому что, если я ctrl-c
отменю пакет, он все равно будет создан out3.mp4
правильно.
ffmpeg -f lavfi -i color=size=1280x720:duration=5:rate=25:color=Black -vf "drawtext=fontfile='GothamRnd-Book.otf':line_spacing=15:fontsize=15:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text=Stack Exchange" "out1.mp4"
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -i "out1.mp4" -i logo.png -filter_complex "overlay=x=10:y=10" "out3.mp4"
Похоже, это можно упростить, чтобы не создавать временные файлы.
Но, возможно, это единственный способ сделать это. Спасибо за любую помощь и извините, если ответ очевиден.
Рори
Ответ №1:
Использовать
ffmpeg -f lavfi -i color=s=1280x720:d=5:r=25:color=black -i logo.png -f lavfi -i anullsrc=cl=stereo:d=5:r=48000 -filter_complex "[0]drawtext=fontfile='GothamRnd-Book.otf':line_spacing=15:fontsize=15:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text=Stack Exchange[vid];[vid][1]overlay=x=10:y=10" -c:v libx264 -c:a aac "out3.mp4"
Комментарии:
1. Сработало ли это для вас? Ошибка I:
[Parsed_anullsrc_0 @ 000002316c8a0b80] Option 'd' not found [lavfi @ 000002316c89aa80] Error initializing filter 'anullsrc' with args 'cl=stereo:r=48000:d=5' anullsrc=cl=stereo:r=48000:d=5: Option not found
и когда я удаляю параметр продолжительности, он становится:[AVFilterGraph @ 000001c361d76f40] Unable to parse graph description substring: "]vid];[vid][1]overlay=x=10:y=10" Error initializing complex filters. Invalid argument
2.
]vid]
это опечатка. Исправлено.d
inanullsrc
— это новый вариант. Вам понадобится недавняя сборка git. Для более старых версий вы можете добавить-t 5
раньше-i anullsrc
.3. Теперь это работает с
-t 5
опцией.-i
Все ли входные данные должны быть определены перед чем-либо еще? Я читал о-map 0:v:0
потоках, но нет[vid]
. Должно быть, это и есть-filter_complex
отображение. Еще раз спасибо.4. re:
-i
строго нет, но это рекомендуется для ясности в командах.[vid]
внутри filtergraphs находится панель фильтров, см. ffmpeg.org/ffmpeg-filters.html#Filtergraph-description5. Отлично. Спасибо.