2010-11-10 9 views
5

मैं एक टीएस फ़ाइल को एमपीईजी फ़ाइल में कनवर्ट करना चाहता हूं। क्या ऐसी प्रक्रिया का वर्णन करने वाले कोई दस्तावेज हैं? मुझे टीएस आर्किटेक्चर पता है, लेकिन मुझे एमपीईजी फ़ाइल आर्किटेक्चर नहीं पता है। इस विषय पर किसी भी जानकारी की अत्यधिक सराहना की जाएगी।परिवहन स्ट्रीम और एमपीईजी फ़ाइल प्रारूप

धन्यवाद।

उत्तर

12

आप जो करना चाहते हैं वह एमपीईजी-टीएस (ट्रांसपोर्ट स्ट्रीम) से एमपीईजी-पीएस (प्रोग्राम स्ट्रीम) में कनवर्ट करना है। एमपीईजी-पीएस एक मानक .mpg फ़ाइल के प्रारूप के साथ-साथ डीवीडी वीडियो उपयोग प्रारूप भी है।

आपको शायद मानक पर रोक लगाना चाहिए जो आईएसओ/आईईसी 13818-1 है। इस मानक में सभी एमपीईजी-टीएस और एमपीईजी-पीएस कंटेनर विवरण शामिल हैं (इसमें कोड किए गए वीडियो को शामिल नहीं किया गया है जो आईएसओ/आईईसी 13818-2 में शामिल है)।

सौभाग्य से, यह रूपांतरण अपेक्षाकृत सरल है क्योंकि अधिकांश एमपीईजी-पीएस संरचना एमपीईजी-टीएस प्रारूप में निहित है। परिवहन धारा में 188 बाइट पैकेट की एक श्रृंखला होती है जिसमें प्रत्येक के पास हेडर होता है। पीईएस (कार्यक्रम प्राथमिक धारा) पैकेट पैकेट पेलोड के भीतर निहित हैं। पीईएस पैकेट में वास्तविक वीडियो या ऑडियो पेलोड होता है। एक पीईएस पैकेट किसी भी लंबाई हो सकता है और अधिकांश समय वे कई टीएस पैकेट फैलते हैं। परिवहन धारा से पीईएस पैकेट को डिमक्स करना वास्तव में केवल टीएस हेडर को हटाने और पीईएस पैकेट बनाने के लिए सही ढंग से पेलोड डेटा को जोड़ना शामिल है।

एक बार आपके पास पीईएस पैकेट की स्ट्रीम हो जाने के बाद, आप उन्हें मानक स्ट्रीम में प्रारूपित प्रोग्राम स्ट्रीम प्रारूप में मल्टीप्लेक्स करेंगे। तो मूल रूप से, आपको पीईएस पैकेट या उनकी सामग्री को पार्स करने की आवश्यकता नहीं है, आप उन्हें केवल एक प्रारूप से उठा सकते हैं और उन्हें दूसरे में डाल सकते हैं।

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

+0

उस के लिए thx, वास्तव में महान जवाब! –

2

FFMPEG का उपयोग टीएस से एमपीईजी में कनवर्ट करने के लिए किया जा सकता है। अधिक जानकारी here

+0

मुझे पता है, लेकिन मुझे टीएस-> एमपीईजी का अपना कार्यान्वयन लिखना है। यही कारण है कि मुझे एमपीईजी फ़ाइल आर्किटेक्चर के बारे में कुछ पता होना चाहिए। –

+0

@Natko - FFMPEG एलजीपीएल है यदि आप कुछ बिल्ड विकल्पों का उपयोग करते हैं, तो हो सकता है कि इसका उपयोग करना सबसे अच्छा हो। –

+2

@natko - एफएफएमपीईजी खुला स्रोत है। क्या आप इसे अपने प्रारूप को रिवर्स-इंजीनियर करने के लिए मॉडल के रूप में उपयोग नहीं कर सकते हैं, भले ही आपको अपना कोड लिखना पड़े? –

9

मैं कुछ अच्छे संसाधन जोड़ने की कोशिश कर रहा हूं जो मदद कर सकते हैं।

यहां कुछ दस्तावेज हैं जो परिवहन और कार्यक्रम धाराओं और संबंधित पैकेटिज़ेशन संरचनाओं के विवरण बताते हैं।

  1. यह ट्रांसपोर्ट स्ट्रीम और प्रोग्राम स्ट्रीम के बीच अंतर बताता है। http://www.vbrick.com/docs/VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf

  2. यह एमपीईजी के ओवर व्यू को बताता है और इसमें पैकेटिज़ेशन भी शामिल है। http://www.img.lx.it.pt/~fp/cav/Additional_material/MPEG2_overview.pdf

  3. यह कैसे कार्यक्रमों का चयन किया जाता तालिकाओं का उपयोग पर परिवहन धाराओं के अन्य पहलुओं बताते आदि http://www.bitrouter.com/pdf/tutorial-psip.pdf

मूल रूप से, आप परिवहन स्ट्रीम depacketize और PES पैकेट में विघटित (के साथ करने की जरूरत है समय टिकटें) और फिर प्रोग्राम स्ट्रीम पैकेटेशन प्रक्रिया लागू करें।

महत्वपूर्ण बात यह है कि आप पीएस धाराओं में पैकेट के सापेक्ष अंतर और समय को कैसे बनाए रखते हैं जब आप इसे वापस करते हैं।इसलिए, आपको पीईएस पैकेट में पीटीएस/डीटीएस टाइमस्टैम्प को सुरक्षित रखना होगा।

मैं यहां कुछ टूल सूचीबद्ध कर रहा हूं - यह आपके काम के हिस्से के लिए अच्छा उदाहरण है - और वे एमपीईजी 2 सिस्टम मानक के अनुपालन के साथ बेहतर तरीके से जाने जाते हैं।

  1. tstools (http://tstools.berlios.de/)
  2. mplex (mjpegtools से)
  3. डीवीबी-mplex (libdvb का हिस्सा है, http://www.metzlerbros.org/dvb/)
  4. डीवीबी-replax (भी libdvb का हिस्सा है, http://freshmeat.net/projects/dvb-replex/ या http://www.metzlerbros.org/dvb/)
  5. Avidemux। http://avidemux.sourceforge.net/

एक और अच्छा तरीका सीखने शुरू कर दिया करने के लिए Gstreamer प्लग में ढांचे का उपयोग करने के लिए करता है, तो आप जल्दी से व्यापक प्रवाह को समझने के लिए चाहते हैं।