विशिष्ट स्थान पर ऑडियो रखने वाला ffmpeg [बंद]


3

कुछ इनपुट स्रोत मिले और मैं आउटपुट में ऑडियो को विशिष्ट स्थान पर रखना चाहता हूं

वर्तमान में जटिल फ़िल्टर अभिव्यक्ति मूल ऑडियो को काट रही है और इसे उसी स्थान पर रख रही है

मैं इसे निर्दिष्ट स्थान के बीच रखना चाहता हूं।


संपादित करें

यहाँ आउटपुट के साथ पूर्ण कमांड है:

ffmpeg version N-60489-g03911c4 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 10 2014 05:14:06 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 63.101 / 52. 63.101
  libavcodec     55. 50.100 / 55. 50.100
  libavformat    55. 31.100 / 55. 31.100
  libavdevice    55.  8.100 / 55.  8.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/a.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2014-02-12 09:37:39
  Duration: 00:00:30.98, start: 0.000000, bitrate: 524 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 426 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
    Metadata:
      creation_time   : 2014-02-12 09:37:39
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, wav, from '/tmp/1.wav':
  Duration: 00:00:08.79, bitrate: 1536 kb/s
    Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Guessed Channel Layout for  Input Stream #2.0 : stereo
Input #2, wav, from '/tmp/2.wav':
  Duration: 00:00:12.46, bitrate: 1536 kb/s
    Stream #2:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Output #0, mp4, to '/tmp/out.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf55.31.100
    Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 426 kb/s, 25 fps, 12800 tbn, 25 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s (default)
Stream mapping:
  Stream #0:1 (aac) -> atrim
  Stream #0:1 (aac) -> atrim
  Stream #1:0 (pcm_s16le) -> atrim
  Stream #2:0 (pcm_s16le) -> atrim
  Stream #0:0 -> #0:0 (copy)
  concat -> Stream #0:1 (libvo_aacenc)
Press [q] to stop, [?] for help
[output stream 0:1 @ 0xa8cee60] 100 buffers queued in output stream 0:1, something may be wrong.
frame=  774 fps=572 q=-1.0 Lsize=    2404kB time=00:00:49.21 bitrate= 400.1kbits/s    
video:1611kB audio:770kB subtitle:0 data:0 global headers:0kB muxing overhead 0.996036%

मैं मूल वीडियो में ऑडियो संगीत रखने की कोशिश कर रहा हूं।

मुसीबत

एक 30 सेकंड का वीडियो 46 सेकंड का बनाया गया था (और ऑडियो को गलत तरीके से रखा गया था) .. भले ही ऑडियो वीडियो रेंज के भीतर ही रखे गए हों। मैं बाएं से सुनता हूं और फिर दाएं से वही ?? क्या इससे वीडियो की लंबाई बढ़ रही है?


क्या आप किसी भी मौजूदा ऑडियो को नए ऑडियो से बदलना चाहते हैं या उन्हें मिक्स करना चाहते हैं? कृपया हमेशा पूर्ण ffmpegकमांड और पूर्ण ffmpegकंसोल आउटपुट शामिल करें।
लीलगन

मेरा मानना ​​है कि आप वीडियो पर कई ऑडियो ट्रैक बिछा रहे हैं, प्रत्येक अलग-अलग समय पर। तो जैसा कि एक वीडियो समयरेखा संपादित करता है, आपको कई ट्रैक्स की आवश्यकता होती है। इसके बजाय, आप कई ऑडियो फाइलें ले रहे हैं और उन्हें 'समेट' रहे हैं, जो कि उनके साथ जुड़ रही है। जुड़ने की वजह से लंबाई बढ़ रही है, और परिणाम शायद वैसे भी शुरुआत में रखा गया है। ऑफसेट का प्रभाव अब मिटा दिया गया है।
राजीव

महोदय, मैं .. इस क्षेत्र में नया हूँ और यह करने के लिए मिल गया है .. आप क्या बात कर रहे हैं के कुछ आदेश दे कृपया
shrw

मैं बाएं से सुन रहा हूं और फिर दाएं से भी। इस वीडियो की लंबाई बढ़ती जा रही है
shrw

नवीन, कृपया स्पष्ट करें कि आप कुछ और स्पष्ट रूप से क्या हासिल करना चाहते हैं। आप समय में विभिन्न बिंदुओं पर वीडियो ट्रैक पर कई ऑडियो फ़ाइलें रखना चाहते हैं? मेरा नया उत्तर देखें जो मैं अनुमान लगा रहा हूं कि आप क्या हासिल करना चाहते हैं, केवल कम संख्या में इनपुट के साथ।
राजीब

जवाबों:


7

मान लें कि आप विभिन्न बिंदुओं पर वीडियो फ़ाइल पर ऑडियो ट्रैक रखना चाहते हैं। आपके द्वारा उपयोग किए जाने वाले ऑडियो ट्रैक विभिन्न बिंदुओं पर कट और ट्रिम किए जाएंगे। निम्नलिखित उदाहरण में, एक ऑडियो वीडियो फ़ाइल से ही है, और विशुद्ध रूप से ऑडियो फ़ाइल से एक दूसरा एक है- एक wav फ़ाइल। वीडियो फ़ाइल है videoandaudio.movऔर ऑडियो है audio_only.wav

atrimफिल्टर "कटौती" ऑडियो चैनलों। adelayफिल्टर विभिन्न बिंदुओं पर ऑडियो देता है। amixफिल्टर एक भी मिश्रित उत्पादन में उन ऑडियो मिक्स। aformatफिल्टर स्थिरता सुनिश्चित करता है। विशेष रूप से flv के लिए आपको 44100Hz से अधिक के नमूने की आवश्यकता है।

उदाहरण में वीडियो फ़ाइल का ऑडियो 20 सेकंड तक उपयोग किया जाता है। दूसरा ऑडियो वास्तव में 10000 मिलीसेकंड पर शुरू होता है, जो ऑडियो (20 सेकंड) के अंत से पहले है लेकिन यह उदाहरण उदाहरण जानबूझकर दिखाता है जो amixइसे संभाल सकता है। उसके बाद दूसरा ऑडियो अंदर आता है और तब तक चला जाता है जब तक हम अंत को 240 सेकंड में ट्रिम नहीं कर लेते। Flv1 कोडर फिर से केवल उदाहरण है- आप कुछ भी उपयोग कर सकते हैं। वीडियो के लिए अच्छे बिटरेट और अन्य मापदंडों का उपयोग करना सुनिश्चित करें। ऑडियो के लिए आप ऐसा नहीं कर सकते -acodec copyयदि आप फ़िल्टरग्राफ का उपयोग करते हैं तो मैं पीसीएम के साथ दिखा रहा हूं।

ffmpeg -i videoandaudio.mov -i audio_only.wav  -filter_complex 
  "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=mono,
     atrim=end=20[aud1];
   [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=mono,
     atrim=end=240[bud2];
   [bud2]adelay=10000[aud2];
   [aud1][aud2]amix=inputs=2"
  -map 0:v -c:v flv1 -pix_fmt yuv420p -c:a pcm_s16le out.flv

काम करता है, जिस दिन मुझे 15 प्रतिनिधि मिलेंगे .. मैं इसे वोट करूंगा .. धन्यवाद
8

1
यह जानकर अच्छा लगा कि यह काम करता है। क्या आप टिक मार्क के साथ उत्तर स्वीकार कर सकते हैं?
राजिब

क्षमा करें एक नौसिखिया!
shrw

1
यह काम करता है, लेकिन एक ही ऑडियो डुप्लिकेट हो जाता है। पहला वीडियो की शुरुआत में शुरू होता है, और एक निर्दिष्ट समय के बाद शुरू होता है।
अक्टूबर को

2
@ एंजो आपको प्रत्येक चैनल के लिए एडले सेट करने की आवश्यकता है। इसलिए यदि आप जिस ऑडियो फ़ाइल में देरी कर रहे हैं, वह स्टीरियो है, तो आपको एडले = 5000 | 5000 जैसा कुछ करने की आवश्यकता होगी। जो आप शायद सुन रहे हैं वह शुरुआत में सही चैनल है और फिर देरी से छोड़ा हुआ चैनल है।
blim8183

0

आपको adelayएक श्रृंखला में फिल्टर की आवश्यकता है । इस दस्तावेज को देखें ।

एक पैड के उत्पादन में देरी करने के लिए, यदि यह [aud1]प्रयोग किया जाता है कि श्रंखला के अंत में एडेल फिल्टर के इनपुट के रूप में:

[1:a]atrim=end=4,asetpts=PTS-STARTPTS[aud1];[aud1]adelay=2000[delayedaudio]    

देरी मिलीसेकंड में होती है।


क्या हम ... [1: a] atrim = end = 4, asetpts = PTS-STARTPTS, adelay = 2000 [aud1] OR [1] a: atrim = end = 4, adelay = 2000 [aud1 ... वे मान्य कथन हैं
15:13 पर

आप कोशिश करके देख सकते हैं। कारण जो मैंने आउट-इन पैड का उपयोग करने का सुझाव दिया है, क्योंकि आप वैसे भी जटिल फिल्टर का उपयोग कर रहे हैं और एक श्रृंखला जाने का एक सुरक्षित तरीका है। पैड के बिना फिल्टर उत्तराधिकार में ऑडियो को संसाधित करेगा- सिद्धांत रूप में यह इस मामले में समान प्रभाव की तरह दिखता है, लेकिन ffmpeg अक्सर उन चीजों को फेंक देता है जिन्हें मैं पहली नज़र में देखने में विफल रहता हूं।
राजिब

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