FFMPEG का उपयोग करके लाइव ऑडियो स्ट्रीम


14

मैं लाइव ऑडियो स्ट्रीम ffmpegऔर बाहरी यूएसबी माइक्रोफोन का उपयोग करने की कोशिश करता हूं । मैंने इस लगभग ट्यूटोरियल का अनुसरण किया

मुझे कुछ चरणों को अनुकूलित करना था लेकिन आखिरकार, मैंने इस कमांड का उपयोग करके अपने लैपटॉप को स्ट्रीम प्राप्त करने के लिए प्राप्त किया:

ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234

सीपीयू 100% के पास है, मेरे पास दो सेकंड के दौरान एक खराब ध्वनि है और कुछ भी नहीं होने के बाद ... मैं विंडसर्क में देखता हूं कि बोर्ड लगातार फ्रेम भेज रहा है।

क्या किसी के पास CPU उपयोग को कम करने के लिए विचार हैं?


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

क्या आपने पहले एक स्थानीय फ़ाइल में लिखने की कोशिश की थी? मैं कदम से कदम जाने की कोशिश करूँगा: 1) एक तरंग फाइल करने के लिए रीयलटाइम रिकॉर्डिंग, 2) एक एमपी 3 फ़ाइल को रीयलटाइम रिकॉर्डिंग 3) नेटवर्क पर सामान स्ट्रीमिंग
पिक्सेलस्टीक

इस क्षण नहीं। पूर्ण स्वचालित ffmpeg के मैन्युअल बजाय सभी thoses चरण करने की जटिल लगती ;-)
hotips

आप क्या रिकॉर्ड कर रहे हैं?
एलेक्स चेम्बरलेन

1
मैं एक ईथरनेट बेबीफोन बनाने की कोशिश कर रहा हूं
हॉटस्पॉट

जवाबों:


7

अपने विशिष्ट प्रश्न का उत्तर देने के लिए, आप ffmpeg में एस्कॉर्ड को पाइप करके सीपीयू को कम कर सकते हैं:

arecord -f cd -D plughw:1,0 | ffmpeg -i - -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://234.5.5.5:1234

आपको अपने विशिष्ट साउंड कार्ड के साथ plughw: 1,0 को बदलना होगा। जानकारी के लिए arecord -l देखें। मेरे रास्प पाई पर यह ~ 95% सीपीयू से ~ 35% हो गया।


6

ALSA इनपुट

एक विकल्प ALSA के माध्यम से जाना है। ऊपर एक समान कमांड होगी

ffmpeg -ac 1 -f alsa -i hw:0,0 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://localhost:1234

मुझे यकीन नहीं है कि यह CPU उपयोग को कैसे प्रभावित करेगा।


मैंने कोशिश की: ffmpeg -ac 1 -f alsa -i hw: 1,0 -acodec libmp3lame -ab 32k -ac 1 -re rtp rtp: //192.168.1.116: 12.1 सेकंड के बाद ffmpeg क्रैश: [alsa @ 0x7a1510] ALSA बफ़र xrun। कोई अन्य विचार?
हॉट्स

मैंने ffmpeg -f oss -i / dev / dsp1 -ab 32k -ac 1 -re -f rtp rtp: //192.168.28.116: 1234 का परीक्षण किया, लेकिन ध्वनि बहुत खराब है ... अंतराल पर 6 सेकंड के आसपास है। किसी भी विचार के लिए एक बेहतर समाधान है?
हॉट्स

1
@ si2w मुझे लगता है कि एमपी के लिए 32k एक मजाक है। या तो ऊपर है, या एक अलग कोडेक की कोशिश करो। शायद टेलीफोन के लिए डिज़ाइन की गई G2xx श्रृंखला में से एक
एलेक्स चेम्बरलेन

3

यह काम करता है और CPU उपयोग को कम करता है:

ffmpeg -f alsa -i default:CARD=U0x46d0x819 -acodec mp2 -ac 1 -re -f rtp rtp://234.5.5.5:1234 2> /tmp/mylog.log &

डिफ़ॉल्ट को बदलना सुनिश्चित करें: CARD = U0x46d0x819 अपने माइक्रोफ़ोन आईडी के साथ, (arecord -l से प्राप्त) या आप कैड निर्दिष्ट करें -i hw:0,0(या जो भी उपकरण हो)।

मुझे एक समान समस्या थी - एमपी 3 एन्कोडिंग ने 90% + सीपीयू बिजली ली और बस ऑडियो के साथ नहीं रख सका - इसलिए मैंने इसे एमपी 2 एन्कोडिंग में बदल दिया। इसमें लगभग 15-18% CPU (मापा vi top) और मेरे LAN पर VLC पर आसानी से स्ट्रीम होता है। यह एक आदर्श बच्चे की निगरानी करेगा, या जो भी हो। सिर्फ एक या दूसरी देरी है, जो VLC के अंत में बफरिंग है।

नोट: आईपी ​​एड्रेस एक मल्टीकास्ट एड्रेस ([224-239] .xyz) है। आपको अपने लैन पर किसी विशेष नेटवर्क डिवाइस पर इसे लक्षित करने की आवश्यकता नहीं है, और आपका ब्रॉडबैंड राउटर ट्रैफ़िक स्थानीय (डिफ़ॉल्ट रूप से) रखेगा।


2

आप इनपुट डिवाइस ( -ar 8000 पहले -f alsa ) की ऑडियो नमूना दर को कम करके और कोडेक ऑडियो बिट दर को 128k ( -b:a 128k) में सेट करके CPU लोड को काफी कम कर सकते हैं । विडंबना यह है कि चैनलों की संख्या को कम करना ( -ac 1) सीपीयू लोड को बढ़ाना प्रतीत होता है इसलिए मैंने पाया है कि यह कमांड बहुत कम सीपीयू पर चलता है:

ffmpeg -ar 8000 -f alsa -i hw:0 -acodec mp2 -b:a 128k -f rtp rtp://other:4444

यद्यपि किसी को यह याद रखने की आवश्यकता है कि यह कैप्चर हार्डवेयर की क्षमताओं पर भी निर्भर करता है जिसका उपयोग करने की कोशिश की जा रही है, और ffmpeg / avconv के संस्करण।

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