2013-05-13 13 views
6

का उपयोग कर व्यक्तिगत रूप से ट्रांसकोड एचएलएस सेगमेंट मैं उच्च-बिटरेट एचएलएस स्ट्रीम में निरंतर, लाइव स्ट्रीम रिकॉर्ड कर रहा हूं। मैं फिर असीमित रूप से विभिन्न प्रारूपों/बिट्रेट्स को ट्रांसकोड करना चाहता हूं। मेरे पास यह काम है, ज्यादातर, ऑडियो विभाजन को छोड़कर प्रत्येक सेगमेंट (अंतराल और पॉप) के बीच दिखाई दे रहा है।एफएफएमपीईजी

ffmpeg -threads 1 -nostdin -loglevel verbose \ 
    -nostdin -y -i input.ts -c:a libfdk_aac \ 
    -ac 2 -b:a 64k -y -metadata -vn output.ts 

एक उदाहरण ध्वनि फ़ाइल से पता चलता ऑडियो के अंत में एक अंतर है कि वहाँ का निरीक्षण:

End

और की शुरुआत

यहाँ एक उदाहरण ffmpeg कमांड लाइन है फ़ाइल संदिग्ध रूप से क्षीण हो जाती है (हालांकि यह कोई मुद्दा नहीं हो सकता है):

Start

मेरा संदेह यह है कि ये कलाकृतियों का कारण हो रहा है क्योंकि पूरी तरह से स्ट्रीम के संदर्भ के बिना ट्रांसकोडिंग हो रही है।

एफएफएमपीईजी को ऑडियो उत्पन्न करने के लिए किसी भी विचार को एचएलएस स्ट्रीम में वापस फिट करने के लिए कैसे समझें?

** अद्यतन 1 **

यहाँ मूल खंड के प्रारंभ/समाप्ति कर रहे हैं। जैसा कि आप देख सकते हैं, स्टार्ट अभी भी वही दिखाई देता है, लेकिन अंत 30 के दशक में साफ हो गया है। मैं हानिपूर्ण एन्कोडिंग के साथ गद्दी के कुछ डिग्री की उम्मीद है, लेकिन मैं किसी तरह कि एचएलएस इसमें लगातार प्लेबैक करने के लिए प्रबंधन करता है (कस्टम मेटाडाटा के साथ इस संबंधित आई धुनों के विधि है?)

Original Start Original End

** अपडेट 2 **

तो, मैंने दोनों मूल (एमपीईजी 2 टीएस में 128k एएसी) और ट्रांसकोडेड (एएसी/एडेट कंटेनर में 64k एएसी) को डब्ल्यूएवी में परिवर्तित कर दिया और दोनों तरफ से एक तरफ रखा। यह परिणाम है:

Side-by-side start Side-by-side end

मुझे यकीन है कि अगर यह कैसे एक ग्राहक इसे वापस खेलेंगे का प्रतिनिधित्व करता है नहीं कर रहा हूँ, लेकिन यह है कि ट्रांसकोड एक डिकोडिंग पर एक अंतर का परिचय थोड़ा अजीब लगता है सेगमेंट लंबा से शुरू करें और बनाता है। यह देखते हुए कि वे दोनों हानिकारक एन्कोडिंग हैं, मैं उम्मीद करता था कि पैडिंग दोनों में समान रूप से उपस्थित होने की उम्मीद है (यदि बिल्कुल)।

** अद्यतन 3 **

http://en.wikipedia.org/wiki/Gapless_playback के अनुसार - एनकोडर के केवल एक मुट्ठी का समर्थन इसमें लगातार - एमपी 3 के लिए, मैं ffmpeg में लंगड़ा करने के लिए स्विच कर लें, और समस्या अब तक दिखाई देता है चले गए हैं।

एएसी के लिए (http://en.wikipedia.org/wiki/FAAC देखें), मैंने libfaac (libfdk_aac के विपरीत) की कोशिश की है और यह भी अंतहीन ऑडियो उत्पन्न करने लगता है। हालांकि, उत्तरार्द्ध की गुणवत्ता उस महान नहीं है और मैं libfdk_aac का उपयोग करना चाहूंगा।

+0

और वेवफ़ॉर्म इनपुट फ़ाइल के साथ तुलना कैसे करता है? – vipw

+0

मूल और तुलनात्मक तरंगों के साथ अद्यतन – rayh

उत्तर

0

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

मेरा सुझाव आपके असम्पीडित इनपुट ऑडियो को बिल्कुल विभाजित नहीं करना है, लेकिन केवल एक कंप्रेस्ड संपीड़ित स्ट्रीम उत्पन्न करता है जिसे आप ऑडियो प्रॉक्सी में पाइप करते हैं जैसे कि Icecast2 सर्वर (या इसी तरह, यदि हिमकास्ट एएसी का समर्थन नहीं करता है) और फिर संपीड़ित ऑडियो के हिस्सों का उपयोग कर प्रॉक्सी के क्लाइंट-साइड पर विभाजित/पुनर्मूल्यांकन करें।

तो, यहां विधि नियमित रूप से (कहें, हर 60sec?) प्रॉक्सी से कनेक्ट होगी और ऑडियो की एक हिस्से को उस अवधि की तुलना में थोड़ा बड़ा इकट्ठा करेगी जो आप मतदान कर रहे हैं (कहें, 75sec लायक?) - यह समानांतर में चलाने के लिए सेट अप करने की आवश्यकता है, क्योंकि कुछ बिंदुओं पर दो क्लाइंट चलेंगे - यह शेल स्क्रिप्ट से पृष्ठभूमि या पृष्ठभूमि की आवश्यकता होने पर क्रॉन से भी चलाया जा सकता है ...

एक बार यह काम कर रहा है, तो आप ऑडियो के टुकड़ों की एक श्रृंखला है जो थोड़ी ओवरलैप करती है - आपको इनकी तुलना करने के लिए कुछ प्रसंस्करण कार्य करने की आवश्यकता होती है और बीच में ऑडियो के अनुभाग को अलग कर दिया जाता है जो प्रत्येक खंड के लिए अद्वितीय है ...

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

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

+0

मुझे एक साधारण प्रॉक्सी रखने का विचार पसंद है जो डिवाइस से ऑडियो डेटा को बफर करेगा .. यह डेटा खोए बिना एन्कोडिंग को पुनरारंभ करने की अनुमति देगा ... विशेष रूप से यदि यह नमूने को समझता है और डेटा को चुन सकता है नमूना सीमाएं – rayh

+0

हालांकि, मूल समस्या को हल किए बिना, 60 के दशक में ट्रांसकोडिंग केवल उन मुद्दों को सीमाओं की सीमा पर पेश करेगी - कलाकृतियों एएसी एन्कोडिंग का परिणाम प्रतीत होता है, इसलिए वे किसी भी whizzily विलय ऑडियो फ़ाइलों को भी प्रभावित करेंगे। – rayh

+0

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

संबंधित मुद्दे