ffmpeg filter_complex कई फिल्टर म्यूट और टेक्स्ट


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

कृपया कोई मेरी मदद करे कि मैं क्या गलत कर रहा हूँ?

जवाबों:


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एक वैश्विक विकल्प है, इसलिए आपको इसे कमांड की शुरुआत में ले जाना चाहिए।


विस्मयकारी @slhck क्या आप कृपया सारांश दे सकते हैं कि यह क्या करता है "-outv" "-map" [outa] "?
user1640954

यह मूल रूप से कहता है, आउटपुट फ़ाइल के लिए फ़िल्टर से इन दो आउटपुट का उपयोग करें।
13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.