H.264 और x264 के बीच अंतर और इसे कैसे खेलना है


23

अस्वीकरण : यह एक वास्तविक प्रश्न नहीं है, बल्कि "अपना ज्ञान, प्रश्नोत्तर शैली साझा करें"

इसलिए, मैं अपने रास्पबेरी पाई पर एक्सबीएमसी चला रहा हूं और मुझे यह समझने में परेशानी हो रही है कि मैं वास्तव में इसके साथ क्या खेल सकता हूं और क्या नहीं।

मैंने पढ़ा है कि RPI H.264 एन्कोडेड वीडियो चला सकता है, लेकिन मैं केवल x264 एन्कोडेड वीडियो पा सकता हूं । क्या वह भी काम करेगा? और यदि हां, तो कुछ फाइलें शायद काम क्यों नहीं करेंगी?

जवाबों:


41

वास्तव में H.264 (एक डॉट के साथ) के आसपास बहुत सी गलतफहमी होने लगती है। तो, विकिपीडिया से उद्धृत :

H.264 / MPEG-4 भाग 10 या AVC (उन्नत वीडियो कोडिंग) वीडियो संपीड़न के लिए एक मानक है , और वर्तमान में सबसे अधिक उपयोग किए जाने वाले प्रारूपों में से एक है [...]

यहाँ खींचने के लिए महत्वपूर्ण हिस्सा यह है कि यह केवल एक मानक है । इसका मतलब है कि, वीडियो वास्तव में H.264 के साथ एन्कोडेड नहीं हैं, लेकिन एक कोडेक के साथ जो H.264 मानक को पूरा करता है। सबसे आम लोगों में से एक x264 है (लोअर-केस x, नो डॉट):

X264 H.264 / MPEG-4 AVC प्रारूप में वीडियो स्ट्रीम एन्कोडिंग के लिए एक मुफ्त सॉफ्टवेयर लाइब्रेरी है
[...]
X264 अन्य H.264 एनकोडर की तुलना में बड़ी संख्या में सुविधाओं को लागू करता है।

तो, H.264 एक इंटरफ़ेस की तरह है और x264 उस इंटरफ़ेस का एक कार्यान्वयन (वास्तविक कार्यक्षमता के साथ) है।

इसलिए, पाई x264 एन्कोडेड फाइलों को ठीक-ठाक चलाएगी।


फिर कुछ x264 एन्कोडेड फाइलें सुचारू रूप से क्यों नहीं चलती हैं, लेकिन हर 4-6 सेकंड (GPU- राम की मात्रा के आधार पर) को रोकती हैं ?

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

Pi (फिलहाल) DTS-track को हार्डवेयर-डीकोड करने में सक्षम नहीं है और यह CPU पर्याप्त शक्तिशाली नहीं है। आधिकारिक मंचों पर इस बारे में चर्चा चल रही है जो देखने लायक है।

यह पता लगाने के लिए कि क्या आपके लिए यह मामला है, आप mediainfo-tool का उपयोग कर सकते हैं (अवश्य स्थापित किया जाना चाहिए, पैकेज-नाम आपके मेट्रो पर निर्भर करते हैं:

[tv@raspberry]$ mediainfo some_random_movie.mkv 
# Shortened output!
Audio #2
ID                                       : 3
Format                                   : DTS
Format/Info                              : Digital Theater Systems
Codec ID                                 : A_DTS

अब आपके पास दो विकल्प हैं:

  1. DTS- सक्षम रिसीवर खरीदें (हो सकता है कि आपका टीवी भी ऐसा कर सकता है?) और Xbmc में "पास-थ्रू" (अंतिम बिंदु) या (जो भी खिलाड़ी आप उपयोग कर रहे हैं) सक्षम करें।
  2. DTS-Tracks को AC3 में बदलें, जिसे (तेज) या सीपीयू डिकोड किया जा सकता है।

यह पता लगाने के लिए कि आपका रिसीवर (आपके एचडीएमआई-केबल को जिस चीज में प्लग किया गया है) क्या है, tvservice-tool (जो कि पथ में नहीं है , का उपयोग करें , इसलिए आपको पूर्ण पथ की आवश्यकता होगी):

[tv@raspberry ~]$ /opt/vc/bin/tvservice -a
     PCM supported: Max channels: 2, Max samplerate:  48kHz, Max samplesize 24 bits.
     AC3 supported: Max channels: 6, Max samplerate:  48kHz, Max rate  640 kb/s.

जैसा कि आप देख सकते हैं, मेरा वर्तमान रिसीवर पीसीएम और एसी 3 (डीटीएस नहीं) को डिकोड करने में सक्षम है।

इस समस्या का मेरा समाधान ऑडियो-ट्रैक्स को DTS AC3 में बदलना है। यहाँ एक छोटा सा लाइनर है जो AC3 में सभी ऑडियो-स्ट्रीम को कनवर्ट infile.mkvकरता है और वीडियो को नहीं छूता है:

ffmpeg :

ffmpeg -i infile.mkv -map 0 -codec:v copy -codec:s copy -codec:a ac3 outfile.mkv

एवोकन :

avconv -i infile.mkv -map 0 -vcodec copy -acodec ac3 -ab 256k outfile.mkv

नोट: उपरोक्त कमांड भी परिणामी AC3 एन्कोडेड ऑडियो-स्ट्रीम के लिए बिट-दर निर्धारित करता है (जो आवश्यक है, ऐसा लगता है)। जबकि 256kbps काफी अच्छा है (अधिकांश डीवीडी का उपयोग 192kbps), आप इसे कम / कम कर सकते हैं।

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


अभी भी 1080p फुलएचडी मूवीज धमाकेदार हैं , कुछ सेकंड के लिए स्क्रीन बिना किसी आवाज के साथ काली हो जाती है, लेकिन वीडियो-प्लेबैक जारी रहता है। मूवी H.264 AC3 पटरियों के साथ MKV कंटेनर में एन्कोडेड है। समस्या क्या है?

सबसे अधिक संभावना है, फिल्म-फ़ाइल में कुछ भी गलत नहीं है, लेकिन आपकी एक्सबीएमसी सेटिंग्स के साथ। मेरे मामले में, समस्या Xbmc की "ताज़ा दर" थी । यह डिफ़ॉल्ट रूप से 60Hz पर सेट है। 720p और किसी भी अन्य छोटी वीडियो फ़ाइलों के लिए, यह Pi के लिए कोई समस्या नहीं है, लेकिन 1080p फ़ाइलों का परिणाम उपरोक्त समस्या है।

कम ताज़ा दर 60Hz से कम कुछ करने के लिए (कम से कम 24Hz फिल्म के लिए पर्याप्त हैं)। यहां दो विकल्प हैं:

  1. ग्लोबल एक्सबीएमसी (एक्सबीएमसी सहित): System -> Settings -> System -> Video output -> Refresh rate
  2. केवल फिल्में (वीडियो फ़ाइल द्वारा निर्धारित): System -> Settings -> Video -> Playback -> Adjust display refresh rate to match video

रिफ्रेश रेट कम करने के बाद, 1080p फिल्मों को भी ठीक-ठाक खेलना चाहिए।


7
RaspberryPi.stackexchange.com पर संभवतः सबसे अच्छा जवाब।
विंसेंट पी

ओह, मैं यह भी देखता हूं कि आरपीआई के लिए भी ffmpeg उपलब्ध है। sudo apt-get install ffmpeg। क्या आपने आरपीआई पर यह कोशिश की है? क्या यह अच्छी तरह से काम करता है?
विंसेंट पी

3
@ राफेल नहीं, यह नहीं है: stackoverflow.com/a/9477756/717341
लुकास नुथ

1
@ राफेल यह आपके डिस्ट्रो पर निर्भर करता है। ArchLinux में, मैं इस समस्या को नहीं देखता।
लुकास नुथ

1
@LukasKnuth अच्छा जवाब सिवाय ffmpegनिराश नहीं किया गया है। avconvएक कांटा है।
एनर्जिस्टल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.