वीडियो के कुछ हिस्सों को निकालते समय Ffmpeg सिंक


2

इस सवाल का एक विस्तार के रूप में देखा जा सकता है इस सवाल का । मैं ffmpeg 2.0.1 का उपयोग कर रहा हूं।

जब आप एक बड़ी वीडियो फ़ाइल दिए गए समय निर्माताओं के कुछ हिस्सों को निकालना चाहते हैं तो निम्नलिखित कमांड उपयोगी है।

ffmpeg -i 00402.MTS -s 1280x720 -ss 0:00:05.38608 -vcodec libxvid -qscale:v 2 -acodec ac3 -ar 48000 -ab 256k -t 0:00:06.61391 m001.avi

मेरी समस्या यह है कि ouput फ़ाइल में, प्रारंभ मान 0 है और ऑडियो और वीडियो के बीच ~ 50ms शिफ्ट है। बड़े वीडियो फ़ाइल ('.mts') के गंभीर हिस्सों को निकालते समय मुझे इस 'स्टार्ट वैल्यू' को ध्यान में रखने के लिए किस तर्क का उपयोग करना चाहिए? इस 'स्टार्ट वैल्यू' का क्या मतलब है?

बड़े एमटीएस वीडियो फ़ाइल से ffprobe आउटपुट

ffprobe m001.MTS 
ffprobe version 2.0.1 Copyright (c) 2007-2013 the FFmpeg developers built on Sep 24 2013 05:31:18 with gcc 4.8 (Debian 4.8.1-10)
configuration: --extra-cflags=-I../static/include --extra-ldflags='-L../static/lib -static' --enable-gpl --enable-version3 --enable-static --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --disable-ffserver
libavutil      52. 38.100 / 52. 38.100
libavcodec     55. 18.102 / 55. 18.102
libavformat    55. 12.100 / 55. 12.100
libavdevice    55.  3.100 / 55.  3.100
libavfilter     3. 79.101 /  3. 79.101
libswscale      2.  3.100 /  2.  3.100
libswresample   0. 17.102 /  0. 17.102
libpostproc    52.  3.100 / 52.  3.100
Input #0, mpegts, from 'm001.MTS':
Duration: 00:01:18.25, start: 0.455556, bitrate: 12217 kb/s
Program 1 
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1440x1080 [SAR 4:3       DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s

निकालने के नमूने से ffprobe ouput

Input #0, avi, from 'm001.avi':
Metadata:
encoder         : Lavf55.12.100
Duration: 00:00:06.64, start: 0.000000, bitrate: 4950 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (xvid / 0x64697678), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, mono, fltp, 256 kb/s

क्या आप कंसोल आउटपुट जोड़ सकते हैं? "स्टार्ट वैल्यू" से आपका क्या मतलब है, यह निश्चित नहीं है। यदि आप उपयोग कर रहे हैं ffmpeg -iया ffprobe, कृपया कंसोल का आउटपुट जोड़ें।
राजिब

आप उपरोक्त ffprobe आउटपुट में स्टार्ट वैल्यू पा सकते हैं: स्टार्ट: 0.455556
एरिक

बड़ी समस्या यह है कि निकाले गए वीडियो आउटपुट में ऑडियो और वीडियो सिंक नहीं होते हैं। मूल्य के बारे में 50ms की शिफ्ट (कि मूल्य शुरू करने के लिए correponds): MTS मूल फ़ाइल में 0.455556।
एरिक

पैरामीटर जोड़ने का प्रयास करें -async 1। क्या ऑडियो देर से या जल्दी शुरू होता है?
1937 को har37mc

ऑडियो देर से शुरू। विकल्प -async 1कुछ भी नहीं बदला।
एरिक

जवाबों:


1

मैं इस समस्या से पहले आया हूं, और इसका एकमात्र उपाय है इसके ऑफसेट और मानचित्र का उपयोग करना।

ffmpeg -i 00402.MTS -itsoffset 0.455556 -i 00402.MTS -map 1:0 -map 0:1 -s 1280x720 -ss 0:00:05.38608 -vcodec libxvid -qscale:v 2 -acodec ac3 -ar 48000 -ab 256k -t 0:00:06.61391 m001.avi

इस पृष्ठ पर एक अच्छी व्याख्या है कि यह क्यों और कैसे काम करता है।

http
://www.kkon अवधारणाओं.net/blog/fixing-out-sync-audio-and-video-ffmpeg (अब मूल लिंक पर उपलब्ध नहीं; अब web-beta.archive.org से)

EDIT यहां दो मुख्य उपकरण हैं: 1) इसके 2 नक्शे के बारे में पता होना

इसका ऑउटफिट सिंक से बाहर निकलने वाली धारा को ऑफसेट करने के लिए मौजूद है, जबकि मैप विशिष्ट इनपुट से कुछ धाराओं का उपयोग करने के लिए ffmpeg को सूचित करता है और उन्हें आउटपुट पर लागू करता है।

इस उदाहरण में, हम एक ही इनपुट का दो बार उपयोग कर रहे हैं, इस प्रकार धाराओं की मैपिंग करते हैं: हम पहले इनपुट के वीडियो स्ट्रीम का उपयोग करते हैं (जो 00: 00: 00.00 पर शुरू होता है) हम ऑडियो इनपुट के रूप में दूसरे इनपुट का उपयोग करते हैं, लेकिन ऑफसेट इनपुट समय 0.455556 सेकंड।

उपर्युक्त साइट से:

यहां "-मैप 1: 0" दूसरी इनपुट फ़ाइल (1) का उपयोग करने के लिए ffmpeg को बताता है और वीडियो स्रोत के रूप में इसकी पहली स्ट्रीम (0) लेता है। चूंकि यह इनपुट "-itsoffset" स्विच का अनुसरण करता है, इसलिए वह स्ट्रीम है जो विलंबित होगी। फिर "-मैप 0.1" इसे ऑडियो के रूप में पहले इनपुट से दूसरी स्ट्रीम का उपयोग करने के लिए कहता है। चूंकि पहली इनपुट फ़ाइल पर कोई ऑफसेट लागू नहीं है, इसलिए इसे सामान्य रूप से संसाधित किया जाएगा।


दिए गए लिंक नीचे है। क्या आप इसे अपडेट कर सकते हैं?
एरिक

यहां इसी तरह की जानकारी के साथ एक और लिंक है। बस इसकी खोज के लिए पृष्ठ खोजें: howto-pages.org/ffmpeg
denjello

सभी जानकारी के लिए धन्यवाद, हालांकि परिणाम अभी भी async है। मुझे वास्तव में पता नहीं है कि सिंक वीडियो के कुछ हिस्सों को निकालने के लिए एसिंक्स के कुछ हिस्सों को कहां ले जाया जा सकता है। वास्तव में 'स्टार्ट वैल्यू' का क्या अर्थ है?
एरिक

डालने की कोशिश -0: 00: 05.38608 के सामने -i --- जैसे ffmpeg में -ss 0: 00: 05.38608 -i 00402.MTS ...
denjello

ffmpeg version git-2014-01-20-4014b40इनपुट के बाद scomp विकल्प को फिर से जोड़ने और डालने के बाद, शिफ्ट घटकर 256 नमूने (... !!) हो गया। जब आउटपुट (। Wav) ऑडियो को आउटपुट से निकाला गया ।AVI, और ऑडियो को सीधे ओरिजिनल से निकाला गया। एमटीएस, मुझे एक 256 सैंपल शि (f) t .. फिर से मिला, क्यों?
एरिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.