लिनक्स पर नकली वेबकैम के रूप में डेस्कटॉप का उपयोग करना


47

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

किसी को भी ऐसा करने के लिए एक विधि (या सॉफ्टवेयर) की सिफारिश कर सकते हैं?


जब तक आपने "नकली वेब-स्टाइल डिवाइस फ़्लैश द्वारा उपयोग करने योग्य" नहीं कहा, तब तक यह सब हंकी-डोरी था।
इग्नासियो वाज़केज़-अब्राम्स

मुझे नहीं पता तुम्हारा क्या मतलब है? "वेबकैम-शैली" डिवाइस से मेरा मतलब नकली / देव / वीडियोएन डिवाइस फ़ाइल या कुछ इसी तरह का था। मुझे लगता है कि इस तरह से कब्जा कर लिया वीडियो फ्लैश द्वारा प्रयोग करने योग्य होगा।
bkconrad

ठीक ठीक। वह मुश्किल है।
इग्नासियो वाज़केज़-अब्राम्स

जवाबों:


51

आप v4l2loopback स्थापित कर सकते हैं । यह एक कर्नेल मॉड्यूल है जो एक वेबकैम का अनुकरण करता है। इसे लोड करें:

modprobe v4l2loopback

फिर आपको ffmpeg जैसे प्रोग्राम का उपयोग करके वीडियो स्ट्रीम को डिवाइस / देव / वीडियो 0 पर भेजने की आवश्यकता है। डेस्कटॉप को पकड़ने और इसे ffmpeg के साथ / dev / video0 पर अग्रेषित करने के लिए, आप निम्न कमांड लाइन का उपयोग कर सकते हैं:

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

यदि आप एक अलग फ्रेम दर चाहते हैं, तो 15 से मूल्य को कुछ और बदल दें। रिज़ॉल्यूशन को -s पैरामीटर में चुना जाता है। यदि आप स्क्रीन के ऊपरी-बाएँ कोने से एक ऑफसेट निर्दिष्ट करना चाहते हैं, तो इसे "-i: 0.0 + x, y" के रूप में ini पैरामीटर में पास करें, जहाँ क्रमशः x और y क्षैतिज और ऊर्ध्वाधर ऑफ़सेट हैं।


5
आपकी छवि को प्रतिबिंबित किया जा सकता है, मेरा मतलब है कि आपके ffmpeg बिल्ड के आधार पर क्षैतिज फ्लिप प्राप्त करें । वीडियो फिल्टर -vf hflip का उपयोग करें । यदि आप पहले से ही एक vf का उपयोग करते हैं, तो उन्हें उद्धरणों के अंदर रखें और अल्पविराम द्वारा अलग करें, जैसे -vf 'hflip, scale = 640: 360'।
मार्सेलो टेक्सेरा रगार्गी

3
मैं इस में कुछ त्रुटियां हो रही है [x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesize, [v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argumentऔरCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
लोटस

1
मैं ffmpeg 3.1.4 के साथ @Lotus के समान सटीक आउटपुट प्राप्त कर रहा हूं। वहाँ कोई विशेष codecs या संकुल v4l2loopback और ffmpeg के बगल में आवश्यक हैं?
9

1
@ लोटस मैं इस समस्या को हल करने में कामयाब रहा, जब मैं दूसरे / देव / वीडियो डिवाइस का उपयोग करता हूं। आपको v4l2 वीडियो डिवाइस (जो मेरे मामले में / dev / video1 है) का उपयोग करना सुनिश्चित करना चाहिए। ऑफसेट / देव / वीडियो 0 का उपयोग करके पहले से मौजूद वास्तविक वेबकैम डिवाइस के कारण हो सकता है।
9

2
@Lotus सुनिश्चित करें कि आपके क्रोम ब्राउज़र को शुरू करने से पहले modprobe कमांड (रूट के रूप में या sudo के साथ) चलाया गया है। जांचें कि मॉड्यूल को सही तरीके से लोड किया गया है <code> lsmod | grep v4l2loopback </ code>।
cguenther

6

Mplayer के साथ v4l2loopback का उपयोग करें ।

  1. डाउनलोड करो,
  2. इसे संकलित करें ( makeऔर su -c 'make install'),
  3. मॉड्यूल को लोड करें su -c 'modprobe v4l2loopback',
  4. तब examples/yuv4mpeg_to_v4l2.cसे v4l2loopback स्रोत फ़ोल्डर की फ़ाइल में एक पंक्ति बदलें

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
    

    सेवा

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
    
  5. और makeइस फ़ोल्डर में करें।

  6. फिर इसे examplesइस तरह निर्देशिका से चलाएँ :

    mkfifo /tmp/pipe  # only needed once, as long as you do not delete the file /tmp/pipe
    ./yuv4mpeg_to_v4l2 < /tmp/pipe &
    mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
    

    जहाँ आप movie.mp4अपने वीडियो फ़ाइल के नाम से प्रतिस्थापित करते हैं। और /dev/video0अपने लूपबैक डिवाइस के साथ बदलें ।

MPlayer किसी भी वेबस्ट्रीम को चलाने में सक्षम है, सभी प्रकार की वीडियो फाइलें, यहां तक ​​कि स्टडिन से भी! मैंने अभी http://www.tagesschau.de की एक फाइल के साथ इसका परीक्षण किया, जो एक जर्मन समाचार साइट है।

TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

$ TS के बजाय आप एक -(जो स्टड के लिए खड़ा है) रख सकते हैं । और mplayer के सामने आपका ffmpeg कमांड अपने आउटपुट को stdout पर पुनर्निर्देशित करता है। तो कुछ इस तरह:

./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

अंतिम एक का परीक्षण नहीं किया, क्योंकि आपने यह नहीं बताया कि आपका ffmpeg कमांड कैसा दिखता है।


कृपया मदद करें: की ./yuv4mpeg_to_v4l2 < /dev/video0 &ओर जाता है ./yuv4mpeg_to_v4l2: : missing YUV4MPEG2 header। कैसे बदलने के लिए /tmp/pipeद्वारा /dev/video0?
user123456

3

आप किस डिस्ट्रो का उपयोग कर रहे हैं? मैं आर्कस्ट के तहत लाइवस्ट्रीम वेब-आधारित "स्टूडियो" के साथ संयुक्त रूप से WebCamStudio के साथ सफलता प्राप्त कर चुका हूं। हालांकि मुझे इसका इस्तेमाल करते हुए थोड़ा समय हो गया है।

http://www.ws4gl.org/

आप वास्तव में क्या करने की कोशिश कर रहे हैं? x11grab से संकलित ffmpeg डेस्कटॉप को रिकॉर्ड कर सकता है। मैंने सफलता को ऊपर की तरफ धकेल दिया है, लेकिन फिर से थोड़ी देर हो गई है और मुझे लगता है कि जो मैं कर रहा था वह अब काम नहीं करेगा।

यदि आप केवल अपने डेस्कटॉप के बजाय किसी फ़ाइल को स्ट्रीम करना चाहते हैं (मैं सोच रहा हूं जब आप कहते हैं, "एक विंडो," आपका मतलब है, "वीएलसी"), तो मैं आपको सही दिशा में इंगित कर सकता हूं कि लिवेस्ट्रीम के साथ काम करना (शायद Ustream)। मैं अनायास समझ रहा हूं कि प्रयोग के माध्यम से यह कैसे करना है। यह शानदार नहीं है लेकिन यह लाइवस्ट्रीम के साथ काम करता है।

जस्टिनजीबी के पास स्क्रिप्ट हैं जो वीएलसी से उनकी सेवा में भी स्ट्रीम कर सकते हैं।

http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API


अरे वाह यह बहुत दिलचस्प है। मैं कुछ गेम के लाइव गेमप्ले को स्ट्रीम करने की कोशिश कर रहा हूं। मुझे पहले से ही पता है कि ffmpeg से वीडियो फ़ाइल में कैसे कब्जा किया जाता है, मुझे आश्चर्य है कि क्या मैं उसी फ़ाइल को vlc में खोल सकता हूं और किसी तरह इसे स्ट्रीम कर सकता हूं जैसा कि लिखा जा रहा है। जानकारी के लिए धन्यवाद।
bkconrad

ws4gl.org वेबसाइट बहुत पुरानी लग रही है, और सभी लिंक वेबैक मशीन की ओर इशारा करते हैं। मुझे लगता है कि नवीनतम संस्करण sourceforge.net/projects/webcamstudio
डेनिलसन सिया मिया

"WEBCAMSTUDIO कोई अधिक मुख्य" नहीं है: /
राफेल

2

सबसे पहले, प्रदर्शित होता है। संभवत: वह करता है जो आप बिना किसी परेशानी के चाहते हैं (मैं संबद्ध नहीं हूं): http://appear.in/

दूसरा, आप OBS का उपयोग करके ट्विच या अन्य सेवाओं को स्ट्रीम कर सकते हैं, जिसने हाल ही में लिनक्स समर्थन (!) जोड़ा: https://obsproject.com/

ओबीएस भी उबंटू पर स्क्रीन कैप्चरिंग करते समय सिस्टम साउंड और ऑडियो इनपुट की अधिक कठिन समस्या को हल करता है ( universeरेपो में कुछ भी हल नहीं किया गया है जो मैंने अब तक पाया है)।

मेरे पास कोई भयानक यूनिक्स-वाई समाधान नहीं है। लेकिन उन लोगों ने मेरे लिए वास्तविक दुनिया में काम किया।


डेबियन पर OBS स्टूडियो: tracker.debian.org/pkg/obs-studio
myrdd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.