Logitech C920 के साथ H264 स्ट्रीमिंग


13

मेरे पास एक Logitech C920 वेबकैम है। यह H264 में सीधे वीडियो को एनकोड करने की क्षमता रखता है।

मैं एक बीगलबोन के साथ जो किया गया था, उसे पुन: प्रस्तुत करना चाहता हूं, लेकिन रास्पबेरी पाई का उपयोग करके: नेटवर्क को एक H264 स्ट्रीम भेजें । रास्पबेरी पाई तब केवल RTP में स्ट्रीम को पैकेट करने के लिए है, वीडियो संपीड़न वेब कैमरा द्वारा ही किया जाता है। H264 मोड को video4linux का उपयोग करके लागू किया गया है।

अब तक, और अगर मैं उबंटू के नवीनतम संस्करण के साथ एक सामान्य कंप्यूटर का उपयोग करता हूं, तो यह वीएलसी का उपयोग सर्वर या GStreamer के रूप में करता है। उदाहरण के लिए, यदि मैं Raspberry Pi को VLC सर्वर पर कमांड का उपयोग करके लॉन्च करता हूं:

cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'

... और फिर अगर मैं दूसरे कंप्यूटर पर वीएलसी के साथ स्ट्रीम पढ़ता हूं, तो सब सही है।

हालांकि, अगर मैं वीडियो स्ट्रीम भेजने के लिए रास्पबेरी पाई का उपयोग करता हूं, तो परिणाम काफी खराब है। जैसे ही कुछ चलता है, छवि में बहुत सारा कचरा। छवि कुंजियां हर 10 सेकंड में अच्छी तरह से प्राप्त होती हैं, लेकिन इस बीच, यह एक सामान्य कंप्यूटर से स्ट्रीम की तुलना में पर्याप्त अच्छा नहीं है।

मैंने प्रदान की गई "कैप्चर" उपयोगिता के साथ बीगलबोन के लिए वर्णित विधि की भी कोशिश की : ठीक है अगर मैं एक वास्तविक कंप्यूटर से स्ट्रीम करता हूं, एक ही कचरा समस्या अगर मैं एक रास्पबेरी पाई से स्ट्रीम करता हूं।

यह कोई नेटवर्क समस्या नहीं है: मैंने कुछ नेटवर्क जांच विरेशर और वीएलसी के आंकड़ों के साथ की, मुझे कोई पैकेट नुकसान नहीं हुआ है। मैंने रास्पियन के साथ कोशिश की, और रास्पनी के लिए आर्क लिनक्स (रास्पियन में gstreamer 0.10, आर्क लिनक्स में 1.0 gstreamer)।

मुझे नहीं पता कि यह प्रासंगिक है या नहीं, लेकिन मैंने रास्पियन के सॉफ्ट फ्लोट समर्थन संस्करण के साथ भी परीक्षण किया। 3.2 कर्नेल का उपयोग करने के लिए सबसे पहले एक अपडेट किया जाना चाहिए; लेकिन एक ही समस्या है, वीडियो में कुछ कचरा है।

वीडियो की गुणवत्ता बढ़ाने के लिए मैं क्या कर सकता हूं इस पर कोई विचार?


फ्रेम दर को कम करने का प्रयास करें। RPi का CPU बहुत खराब है, इसलिए मुझे लगता है कि 30xPS पर 800x600 की छवि प्रसारित करना बहुत अधिक है। केवल नया rPI कैमरा बोर्ड जो MIPI / CIS कनेक्टर (USB के बजाय) से जुड़ा हुआ है, 1080p को 15-30 PPS पर स्ट्रीम करता है।
मथायस

इसकी एफपीएस नहीं है। पाई 60 पीपीएस पर एचडी कैमरा मॉड्यूल का उपयोग करने में कोई समस्या नहीं है। अगर Logitech के कैमरे ने H264 वीडियो को पहले ही इनकोड किया है और पाई को पैकेट को फिर से बोरडकास्ट करने की जरूरत है .. जो कि पूरी तरह से सक्षम है। वास्तव में यह 6 HD @ 25FPS धाराओं को अधिकतम करने से पहले रीबोरोडकास्ट कर सकता है। यह V4L चालक भ्रष्ट पैकेट होना चाहिए
Piotr Kula

मुझे पता है कि यह एक पुराना धागा है, लेकिन क्या आपको आखिरकार कुछ मिला है जो काम करता है? Im कुछ ऐसा ही करने और अटकने की कोशिश कर रहा है
Ajith

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

विन्सेन्ट, मुझे 'v4l2 url नहीं खोल सकता' त्रुटि मिल रही है। क्या यह आदेश अब पुराना है?
dalanmiller

जवाबों:


6

मुझे भी यही समस्या थी, हार्डवेयर एनकोडर की खोज करते समय यह धागा मिला, c920 मुद्दों के लिए नहीं।

फिर भी, रास्पबेरी पाई और कचरे के लिए एक फर्मवेयर अपडेट निष्पादित करें

$> sudo rpi- अपडेट

मैंने स्वयं इसका समाधान यहां पाया: http://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264#Raspberry_Pi


इस प्रश्न को बंद करने के लिए, मैं उस उत्तर को स्वीकार करता हूं। समस्या एक टूटी हुई USB ड्राइवर की वजह से थी, USB संचार में कुछ पैकेट की कमी थी। एक अद्यतन प्रणाली / फर्मवेयर को चाल करना चाहिए।
विन्सेन्ट हिरीबरेन

2

आप FFMPEG का उपयोग कर सकते हैं। लेकिन समस्या रिपॉजिटरी संस्करण का उपयोग करने के लिए नहीं है क्योंकि यह पार कर गया है। एक कांटा संस्करण है जो वास्तव में अच्छी तरह से काम करता है।

आपको इसे संकलित करना होगा जो 5 या तो घंटे लेता है या एक पूर्व-निर्धारित बाइनरी डाउनलोड करता है।

फिर आप इन सेटिंग्स के साथ V4L ड्राइवर से FFMPEG तक डेटा को पाइप कर सकते हैं। जहां -i "fifo"केवल -iपाइप्ड स्ट्रीम को कैप्यूट करना चाहिए और -fआपको यह जांचने की आवश्यकता होगी कि इसे H264 कैसे आउटपुट किया जाए। FLV इसे FLV में रीपैकेज करता है जिसे HTML खिलाड़ियों के साथ खेला जा सकता है।

ffmpeg -y \  
  -f h264 \  
  -i "$fifo" \  
  -c:v copy \  
  -map 0:0 \  
  -f flv "$urllocal"   

या एक बहिर्गमन मैंने पाया कि V4L को सीधे लक्षित करता है, लेकिन ओयो के पास कैमरा मौजूद है /dev/video* जहां * 1या अधिक है ...

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi

में -fआउटपुट को दर्शाता है। इसका मतलब यह नहीं है कि यह H264 की तरह इसे FLV में ट्रांसकोड कर देगा और FLV प्रारूप में लिपट जाता है। फिर अपने क्लाइंट VLC प्लेयर का पता बदलें। उदाहरण के लिए-f mpegts udp:192.168.1.19:1234

VLC पाई पर बहुत अच्छी तरह से काम नहीं करता है। मुझे UDP का उपयोग करके अपने पीसी के लिए Pi ceraera मॉड्यूल को आगे बढ़ाने में बहुत कम सफलता मिली। इसने काम किया लेकिन यह स्थिर नहीं था।

आप rtmp मॉड्यूल के साथ स्थापित nginx को भी देख सकते हैं जो एक उपचार का काम करता है। इस गाइड को देखें लेकिन आपको सेटिंग्स को थोड़ा मोड़ना होगा। फिर आप अपने VLC प्लेयर को nginx-rtmp स्ट्रीम से कनेक्ट करते हैं और यह एक आकर्षण की तरह काम करेगा।


1
कौन सा कांटा संस्करण अच्छा काम करता है?
ब्रायन

1

यह मेरे लिए काम करने लगता है @ कम से कम ... cvlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/live.ts}" -I dummy


0

वीडियो प्रदर्शित करने वाले क्लाइंट पर बड़े बफर के साथ प्रयास करें। मेरे लिए 1000ms बफर और 200ms बफर के बीच नाटकीय अंतर है। 5000ms बफर 1000ms बफर से बेहतर दिखता है।

: नेटवर्क कैशिंग = 2000


यह LAN पर अजीब घबराहट के साथ 0 कैशिंग के साथ काम करना चाहिए। मुझे पाई कैमरा मॉड्यूल काम करने के लिए मिला, जिसमें कोई समस्या नहीं है।
पायोतर कुला

0

मैंने लाइव555 पर आधारित हल्के RTSP सर्वर का उपयोग करके रास्पबेरी फ़ोरम में एक संभावित समाधान पोस्ट किया है जो V4L2 ड्राइवर से H264 को कैप्चर करता है। यह github h264_v4l2_rtspserver से उपलब्ध है

यह raspicamera के लिए किया गया था, लेकिन इसे किसी भी V4L2 डिवाइस के साथ काम करना चाहिए जो H264 प्रदान करता है।


-1

अगर मैं आपकी स्थिति को अच्छी तरह से समझ गया हूं, तो आप चाहते हैं कि रास्पबेरी वीडियो को H264 में ट्रांसकोड करें? मुझे लगता है कि इस कारण आपको खराब प्रदर्शन मिलता है, क्योंकि वीएलसी सॉफ्टवेयर एन्कोडिंग का उपयोग कर रहा है और रास्पबेरीिस उस कार्य के लिए शक्तिशाली नहीं है।

मैं Gstreamer और gst-omxप्लगइन्स के साथ प्रयास करने का सुझाव दूंगा । हार्डवेयर वीडियो एन्कोडिंग के लिए एक तत्व है जो आपके रास्पबेरी से अच्छा सर्वर बना देगा।


1
जैसा कि उन्होंने कहा, लॉजिटेक कैमरा पहले से ही H.264 प्रदान करता है। तो rPi केवल तख्ते परिवहन कर रहा है, लेकिन कोई एन्कोडिंग नहीं कर रहा है।
मथायस

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