4

У меня 2 команды ffmpeg работают нормально в одиночку

ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "drawtext=fontfile=test.ttf:text=awesome:fontcolor=white:fontsize=20:x=0:y=10+th"  test_video_text.mp4 -y

а также

ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "volume=0"  test_video_text.mp4 -y

когда объединены эти команды как

ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "drawtext=fontfile=Lato-Light.ttf:text=awesome:fontcolor=white:fontsize=20:x=0:y=10+th,volume=0"  test_video_text.mp4 -y

Получение следующей ошибки:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_video.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp41mp42isom
    creation_time   : 2015-09-24 18:32:33
  Duration: 00:00:09.87, start: 0.068254, bitrate: 235 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x320, 183 kb/s, 29.67 fps, 29.67 tbr, 29673 tbn, 59.35 tbc (default)
    Metadata:
      creation_time   : 2015-09-24 18:32:33
      handler_name    : Core Media Video
    Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 48 kb/s (default)
    Metadata:
      creation_time   : 2015-09-24 18:32:33
      handler_name    : Core Media Audio
[Parsed_drawtext_0 @ 0x7f814af06260] Media type mismatch between the 'Parsed_drawtext_0' filter output pad 0 (video) and the 'Parsed_volume_1' filter input pad 0 (audio)
[AVFilterGraph @ 0x7f814ae00360] Cannot create the link drawtext:0 -> volume:0
Error initializing complex filters.
Invalid argument

Пожалуйста, кто-нибудь, помогите мне, что я делаю не так?

1 ответ1

7

Если у вас есть сложный фильтр с более чем одним входом и выходом, вам нужно явно указать, какие входные и выходные потоки используются каким фильтром. Кроме того, для разделения цепочек фильтров вы должны будете использовать точку с запятой (;) вместо простой запятой (,). Наконец, вы должны отобразить выходные данные этих цепочек фильтров в выходной файл, используя опцию -map .

ffmpeg -y -i test_video.mp4 -vcodec libx264 -filter_complex \
  "[0:v]drawtext=fontfile=Lato-Light.ttf:text=awesome:fontcolor=white:fontsize=20:\
   x=0:y=10+th[outv];\
   [0:a]volume=0[outa]"\
   -map "[outv]" -map "[outa]"\
   test_video_text.mp4

Я вставил обратную косую черту для лучшей читаемости. Для получения более подробной информации смотрите документацию filtergraph и filter_complex .

Кроме того, поскольку -y является глобальной опцией, вы должны переместить ее в начало команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .