अप्रैल 2015 तक GStreamer 1.2 को Raspbian में शामिल किया गया था, OpenMAX हार्डवेयर को omxh264enc के माध्यम से H.264 एन्कोडिंग को गति देता है।
मैंने कुछ बेंचमार्किंग की तुलना की है:
- मैकबुक प्रो (प्रारंभिक 2011) दोहरे कोर i7-2620M 2.7GHz (सैंडी ब्रिज) - 4 जीबी रैम
- रास्पबेरी पी 2 मॉडल बी 900MHz क्वाड-कोर एआरएम कॉर्टेक्स-ए 7 सीपीयू - 1 जीबी रैम
सैंपल फाइल: फिल्म एलाट्रिस्ट (2006) से 60 के दशक का नमूना। मूल फ़ाइल 1080p है और 30MB लेता है। मैंने फ़ाइल को 720p में ट्रांसकोड किया। वीडियो ट्रांसकोडिंग पर अध्ययन को केंद्रित करने के लिए सभी ऑडियो ट्रैकों की अनदेखी की गई।
परिणाम:
ऑन (1), हैंडब्रेक (x264 कोडेक) का उपयोग करते हुए मैंने x264-सेटिंग्स veryslow और औसत बिटरेट 1145kbps (1-पास) के साथ ट्रांसकोड किया, जिसके परिणामस्वरूप 7.7MB फ़ाइल थी। प्रोफ़ाइल उच्च, स्तर 4.0। एन्कोडिंग 4 थ्रेड्स का उपयोग करके 3min 36s लिया। हैंडब्रेक की कुल संचयी सीपीयू चार्ज ~ 380%। वीडियो की गुणवत्ता बहुत अच्छी थी। छोटी कलाकृतियों का अवलोकन किया जा सकता है और विस्तार का नुकसान आसानी से नहीं देखा जा सकता है। अभी भी नीचे देखें।
पर (2), GStreamer और omxh264enc (हार्डवेयर त्वरित) का उपयोग करके मैंने लक्ष्य-बिटरेट = 1145000 (1145kbps), नियंत्रण-दर = 1 (चर बिटरेट नियंत्रण विधि) के साथ ट्रांसकोड किया, जिसके परिणामस्वरूप 6.9MB फ़ाइल थी। एन्कोडिंग 1 धागा का उपयोग कर 7min 4s लिया। Gst-launch-1.0 ~ 100% का कुल संचयी सीपीयू शुल्क। वीडियो की गुणवत्ता स्पष्ट रूप से स्पष्ट रूप से दिखाई देने वाली कलाकृतियों के साथ अपमानित हुई और आसानी से विस्तार से देखने योग्य नुकसान हुई। अभी भी नीचे देखें।
gst-launch-1.0 -v filesrc location=sample-1080p.mp4 ! decodebin ! videoconvert ! \
videoscale ! video/x-raw,width=1280,height=688 ! omxh264enc control-rate=1 \
target-bitrate=1145000 ! h264parse ! mp4mux ! \
filesink location=sample-720p-OMX-1145kbps.mp4
एन्कोडर के रूप में x264enc के साथ GStreamer का उपयोग करते समय, gst-launch-1.0 का कुल संचयी सीपीयू चार्ज लगभग 380% हो जाता है, जो इस तथ्य का समर्थन करता है कि omxh264enc वास्तव में GPU का उपयोग करता है। इसके अलावा, (2) में x264enc के साथ, समय 15min से आगे निकल जाता है।
निष्कर्ष:
एक समान फ़ाइल आकार के लिए, हार्डवेयर-त्वरित रास्पबेरी पी 2 जीपीयू एनकोडर द्वारा बिताया गया समय दोहरे कोर i7-2620M पर सॉफ्टवेयर x264 एनकोडर के लगभग दोगुना था। इस परीक्षण के दौरान बड़े पैमाने पर अप्रयुक्त सीपीयू के कारण ऑडियो ट्रांसकोडिंग और मल्टीप्लेक्सिंग को जोड़ने से यह अंतर थोड़ा कम हो सकता है। सॉफ़्टवेयर-एन्कोडेड फ़ाइल पर वीडियो की गुणवत्ता स्पष्ट रूप से बेहतर थी। नीचे चित्र देखें।
Omxh264enc के लिए उपलब्ध कॉन्फ़िगरेशन विकल्प (gst-inspect-1.0 द्वारा उजागर) x264 एनकोडर की तुलना में सीमित हैं लेकिन आगे प्रयोग बेहतर गुणवत्ता प्रदान कर सकता है।
अनुलग्नक:
रास्पियन रिपोजिटरी से GStreamer और OpenMax की स्थापना:
$ apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.2.0
GStreamer 1.2.0
मैकबुक प्रो पर हैंडब्रेक (x264) का उपयोग करते हुए अभी भी 720p वीडियो का एक्सट्रैक्टेड एक्सट्रो एक्स (पूर्ण विवरण के लिए खुला या डाउनलोड इमेज):
अभी भी एक रास्पबेरी पाई 2 पर GStreamer (OpenMAX के माध्यम से हार्डवेयर एन्कोडिंग) का उपयोग करके 720p वीडियो का क्विक एक्स ट्रांसकोड किया गया है (पूर्ण विवरण के लिए छवि डाउनलोड या डाउनलोड करें):
अद्यतन करें:
बाद ecc29 के सुझाव विधि स्केलिंग Lanczos का उपयोग कर के मैं एक परीक्षण जोड़ने प्रदर्शन method=lanczos
करने के लिए videoscale
। एन्कोडिंग प्रक्रिया समय में दोगुनी हो गई, लगभग 7min से 14min 37s तक कूद गई। परिणाम गुणवत्ता में लगभग समान है (विधि बिलिनियर के बिना)। दरअसल, दोष मुख्य रूप से हार्डवेयर में एन्कोडिंग प्रक्रिया से आते हैं। वे स्पष्ट रूप से संपीड़न कलाकृतियों हैं।