हार्डवेयर-त्वरित h264 एन्कोडिंग संभव है?


12

कैमरा बोर्ड से वीडियो रिकॉर्ड करते समय रास्पबेरी पाई हार्डवेयर त्वरित h264 एन्कोडिंग करेगा। जब स्रोत चित्र सीधे कैमरे से नहीं आ रहे हैं तो मैं h264 (हार्डवेयर त्वरण का उपयोग करके) को कैसे एन्कोड कर सकता हूं?

क्या कोई कमांड लाइन उपकरण हैं जो इसका समर्थन करते हैं?

यदि नहीं, तो मुझे इसे संभव बनाने के लिए क्या एपीआई देखना चाहिए?


क्या आप एन्कोडिंग कर रहे हैं, और वर्तमान में कैसे? - क्या आप वीडियो फ़ाइलों को परिवर्तित कर रहे हैं, उन्हें छवियों और ध्वनि, आदि से प्रदान कर रहे हैं ...
Wilf

@Wilf मैं सामान्य रूप से इसमें दिलचस्पी लेता हूं, हालांकि मेरे पास एक वर्तमान एप्लिकेशन है: एक समय चूक सीधे वीडियो के लिए एन्कोडिंग। मैं raspivid का उपयोग नहीं कर सकता क्योंकि मुझे 1/5 और 2 एफपीएस के बीच कम फ्रैमरेट्स की आवश्यकता होती है। इसके अलावा, मेरे प्रकाश की स्थिति (कम रोशनी) के तहत raspivid ऑटो-एक्सपोज़र दोलनों में चला जाता है। इसलिए मैं raspistill का उपयोग करना चाहता हूं, लेकिन सीधे वीडियो को एन्कोड कर देता हूं ताकि परिणाम बहुत अधिक स्थान न ले (जैसा कि JPEGs करेगा)। एक दूसरे आवेदन के रूप में, मैं Mathematica (CPU के बहुत समय लेगा) का उपयोग करके वास्तविक समय में प्रत्येक फ्रेम को पोस्ट करना चाहता हूं, और फिर उन्हें h264 में एन्कोडेड करने के लिए भेजता हूं।
ज़ाबोलक्स

1
@Wilf मेरे पास एक आंशिक समाधान है जो मुझे लगता है कि काम करना संभव होना चाहिए: विचार कुछ ऐसा है raspiyuv -o - | rpi-encode-yuv(मोटे तौर पर) जहां rpi-encode-yuvउपकरण यहां से है । इस टूल में फ़्रेम का आकार हार्ड-कोडेड है, इसलिए आपको इसे सी फ़ाइल और recompile की शुरुआत में बदलना होगा। दुर्भाग्य से मैं अभी तक एक अच्छी तरह से संरेखित आउटपुट प्राप्त करने में कामयाब नहीं हुआ हूं, क्योंकि raspiyuvइसके उत्पादन में फ्रेम आकार को सांकेतिक शब्दों में बदलना नहीं लगता है। मुझे धीरे-धीरे शिफ्टिंग वाली तस्वीर मिलती है जो अंततः कचरे में बदल जाती है। अभी तक उस पर कार्य कर रहा हूं।
ज़ाबोलक्स

जवाबों:


8

GStreamer रास्पियन में शामिल है और इसके OpenMAX प्लगइन के साथ यह रास्पबेरी पाई की हार्डवेयर एन्कोडिंग क्षमताओं का उपयोग करेगा।

आप क्या देख रहे हैं, इसे करने के लिए एक ट्यूटोरियल के लिए यह लिंक देखें: https://www.raspberrypi.org/forums/viewtopic.php?t=72435

यदि आप ट्रांसकोडिंग में रुचि रखते हैं, तो मैंने सिर्फ एक और प्रश्न का उत्तर पोस्ट किया है जो आपको रुचि दे सकता है: हार्डवेयर-एच 264-एन्कोडिंग से मैं किस गति की उम्मीद कर सकता हूं?


धन्यवाद! मैं अभी इसका परीक्षण नहीं कर सकता, लेकिन आपके ट्यूटोरियल के आधार पर अग्रिम में स्वीकार करूंगा।
स्ज़बोल्स्क

1

अपने आप से RPM3B + पर आप ffmpeg को कंप्लीट करके देख सकते हैं

एक 1920 x 1080 जेपीईजी दृश्य अनुक्रम से उच्च गुणवत्ता वाले 30 एफपीएस वीडियो को संलग्न करना - विशिष्ट गति और अंतरंग विवरण - उच्च गुणवत्ता सेटिंग:

सॉफ्टवेयर-आधारित H.264 एनकोडिंग (CPU): 2.6 FPS (वास्तविक समय की तुलना में 11.5 गुना धीमा)

हार्डवेयर-आधारित H.264 एनकोडिंग (GPU): 6.3 FPS (वास्तविक समय की तुलना में 4.8 गुना धीमा)

एक 640 X 480 जेपीईजी इमेज सीन से संबंधित उच्च गुणवत्ता वाले 30 एफपीएस वीडियो को संलग्न करना - विशिष्ट गति और अंतरंग विवरण - उच्च गुणवत्ता सेटिंग:

सॉफ्टवेयर-आधारित H.264 एनकोडिंग (CPU): 18 FPS (वास्तविक समय की तुलना में 1.7 गुना धीमा)

हार्डवेयर-आधारित H.264 एन्कोडिंग (GPU): 38 FPS (वास्तविक समय की तुलना में 1.3 गुना अधिक)

यह सब हासिल करने में मदद करने के लिए स्क्रिप्ट एक फोरम थ्रेड में है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.