Фальсифицировать веб-камеру с помощью видео устройства закольцовывания?

Я хочу использовать циклично выполненный видеоклип в качестве своего источника веб-камеры в Google+ Hangout. Я установил v4l2loopback и создал видео устройство закольцовывания. Но я не выяснил, как записать видеокадры в устройство. Данный пример:

gst-launch videotestsrc ! v4l2sink device=/dev/video1

Таким образом, после того, чтобы читать страницу руководства для запуска GST и попытки понять, что продолжалось, я предпринял свою слабую попытку:

sudo gst-launch-0.10 filesrc location=/home/briankb/Videos/darthvaderdancing.mp4 ! v4l2sink device=/dev/video0

Который привел к:

Setting pipeline to PAUSED ...
libv4l2: error getting pixformat: Invalid argument
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...

(gst-launch-0.10:12622): GStreamer-CRITICAL **: gst_caps_get_structure: assertion `GST_IS_CAPS (caps)' failed
New clock: GstSystemClock

(gst-launch-0.10:12622): GStreamer-CRITICAL **: gst_structure_get_name: assertion `structure != NULL' failed
Caught SIGSEGV accessing address (nil)
#0  0x00007fc1890f0b03 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fc18962bff6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fc18962c45a in g_main_loop_run ()
#3  0x00007fc189b5c4cb in gst_bus_poll ()
#4  0x0000000000404587 in ?? ()
#5  0x0000000000403c34 in ?? ()
#6  0x00007fc18902b76d in __libc_start_main ()
#7  0x00000000004043bd in ?? ()
#8  0x00007fff88253ed8 in ?? ()
#9  0x000000000000001c in ?? ()
#10 0x0000000000000006 in ?? ()
#11 0x00007fff882548c4 in ?? ()
#12 0x00007fff882548d4 in ?? ()
#13 0x00007fff882548dc in ?? ()
#14 0x00007fff88254904 in ?? ()
#15 0x00007fff88254906 in ?? ()
#16 0x00007fff8825490f in ?? ()
#17 0x0000000000000000 in ?? ()
Spinning.  Please run 'gdb gst-launch 12622' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

Клип я пытаюсь использовать h264 видео на уровне 29,97 кадр/с, 320x240, и в mp4 контейнере (это с YouTube).

18
задан 13 April 2017 в 15:23

2 ответа

Справочные страницы gst-launch говорят нам, что нам нужно сначала декодировать видео, а Самый простой способ сделать это:

gst-launch-0.10 filesrc location=[location] ! decodebin ! v4l2sink device=/dev/video0

gst-launch не нужно запускать от имени root, и [location] тоже может быть относительным!

12
ответ дан 13 April 2017 в 15:23

ಕೇವಲ ವಿ 4 ಎಲ್ 2 ಲೂಪ್‌ಬ್ಯಾಕ್ ಅನ್ನು ಎಮ್‌ಪ್ಲೇಯರ್ ನೊಂದಿಗೆ ಬಳಸಿ.

  1. ಅದನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ,
  2. ಇದನ್ನು ಕಂಪೈಲ್ ಮಾಡಿ (.

     v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420 ನಿಂದ v4l2 ಲೂಪ್‌ಬ್ಯಾಕ್ ಮೂಲ ಫೋಲ್ಡರ್‌ನ  ಉದಾಹರಣೆಗಳು / yuv4mpeg_to_v4l2.c ;
     

    ರಿಂದ

     v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
     
  3. ಮತ್ತು ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಮಾಡಿ.

  4. ನಂತರ ಇದನ್ನು ಉದಾಹರಣೆಗಳಿಂದ ಈ ರೀತಿಯ ಡೈರೆಕ್ಟರಿಯಿಂದ ಚಲಾಯಿಸಿ:

     mkfifo / tmp / pip # ಒಮ್ಮೆ ಮಾತ್ರ ಅಗತ್ಯವಿದೆ, ಎಲ್ಲಿಯವರೆಗೆ  ನೀವು ಫೈಲ್ / ಟಿಎಂಪಿ / ಪೈಪ್ ಅನ್ನು ಅಳಿಸದ ಕಾರಣ
     ./yuv4mpeg_to_v4l2 

    ಅಲ್ಲಿ ನೀವು movie.mp4 ಅನ್ನು ನಿಮ್ಮ ವೀಡಿಯೊ ಫೈಲ್ ಹೆಸರಿನೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತೀರಿ. ಮತ್ತು ನಿಮ್ಮ ಲೂಪ್‌ಬ್ಯಾಕ್ ಸಾಧನದೊಂದಿಗೆ / dev / video0 ಅನ್ನು ಬದಲಾಯಿಸಿ.

ಎಮ್‌ಪ್ಲೇಯರ್ ಯಾವುದೇ ವೆಬ್‌ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು, ಎಲ್ಲಾ ರೀತಿಯ ವೀಡಿಯೊ ಫೈಲ್‌ಗಳನ್ನು ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ನಾನು ಅದನ್ನು http://www.tagesschau.de ನಿಂದ ಜರ್ಮನ್ ಸುದ್ದಿ ತಾಣದಿಂದ ಪರೀಕ್ಷಿಸಿದ್ದೇನೆ.

TS=$(wget 'http://www.tagesschau.de'$(wget http://www.tagesschau.de -q -O - | grep 'Letzte Sendung' | sed -e 's%.*href="%%' -e 's%".*%%') -q -O - | grep '\.webm\.webm' | sed -e 's%.*href="%%' -e 's%\.webm\.webm".*%.webm.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
11
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: