리눅스에서 데스크탑을 가짜 웹캠으로 사용하기


47

캡처 된 비디오를 가짜 웹캠으로 사용하여 무료 스트리밍 사이트를 사용하여 Linux 데스크톱 (윈도우)의 라이브 스트림을 만들고 싶습니다. Windows에는이를위한 많은 도구가 있습니다. ffmpeg를 사용하면 특정 창에서 입력을 캡처 할 수 있지만 비디오를 플래시에서 사용할 수있는 가짜 웹캠 스타일 장치로 출력하는 방법을 찾을 수 없습니다.

누구든지 이것을 수행하는 방법 (또는 소프트웨어)을 추천 할 수 있습니까?


"플래시로 사용할 수있는 가짜 웹캠 스타일의 장치"라고 말할 때까지 모든 것이 엉뚱합니다.
Ignacio Vazquez-Abrams

무슨 말인지 모르겠어요? "웹캠 스타일"장치 란 가짜 / dev / videoN 장치 파일 또는 이와 유사한 것을 의미합니다. 캡처 한 비디오를 플래시로 사용할 수있는 방법이라고 생각합니다.
bkconrad

바로 그거죠. 어렵습니다.
Ignacio Vazquez-Abrams

답변:


51

v4l2loopback 을 설치할 수 있습니다 . 웹캠을 시뮬레이트하는 커널 모듈입니다. 다음과 같이로드하십시오.

modprobe v4l2loopback

그런 다음 ffmpeg와 같은 프로그램을 사용하여 비디오 스트림을 장치 / dev / video0으로 보내야합니다. 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

다른 프레임 속도를 원하면 -r 값을 15에서 다른 것으로 변경하십시오. 해상도는 -s 매개 변수에서 선택됩니다. 화면의 왼쪽 상단 모서리에서 오프셋을 지정하려면 "-i : 0.0 + x, y"형식으로 -i 매개 변수에 오프셋을 전달하십시오. 여기서 x 및 y는 각각 수평 및 수직 오프셋입니다.


5
이미지가 미러링 될 수 있습니다 .ffmpeg 빌드 에 따라 가로로 뒤집기를 의미 합니다 . 비디오 필터 -vf hflip을 사용하십시오 . 이미 하나의 vf를 사용하는 경우 따옴표 안에 따옴표로 묶고 -vf 'hflip, scale = 640 : 360'과 같이 쉼표로 구분하십시오.
Marcelo Teixeira Ruggeri

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와 동일한 출력을 얻습니다. v4l2loopback 및 ffmpeg 옆에 필요한 특수 코덱 또는 패키지가 있습니까?
cguenther

1
@Lotus 다른 / dev / video 장치를 사용할 때 문제를 해결할 수있었습니다. v4l2 비디오 장치 (이 경우에는 / dev / video1)를 사용해야합니다. 오프셋은 / dev / video0을 사용하는 기존의 실제 웹캠 장치로 인해 발생할 수 있습니다.
cguenther

2
@Lotus 크롬 브라우저를 시작하기 전에 modprobe 명령 (루트 또는 sudo로)이 실행되었는지 확인하십시오. <code> lsmod | grep v4l2loopback </ code>을 클릭하십시오.
cguenther

6

mplayer와 함께 v4l2loopback을 사용하십시오 .

  1. 다운로드 해,
  2. 컴파일하고 ( makeand su -c 'make install')
  3. 함께 모듈을로드 su -c 'modprobe v4l2loopback',
  4. 그런 다음 examples/yuv4mpeg_to_v4l2.cv4l2loopback 소스 폴더 의 파일에서 한 줄 을

    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는 stdin에서도 모든 종류의 웹 스트림, 모든 종류의 비디오 파일을 재생할 수 있습니다! 방금 독일 뉴스 사이트 인 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 대신에 -(stdin의 약자)를 넣을 수 있습니다. 그리고 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

어떤 배포판을 사용하고 있습니까? 나는 Livestream 웹 기반 "스튜디오"와 결합 된 아치 아래의 WebCamStudio로 성공했습니다. 그래도 그것을 사용한지 오래되었습니다.

http://www.ws4gl.org/

정확히 무엇을하려고합니까? x11grab로 컴파일 된 ffmpeg는 데스크탑을 기록 할 수 있습니다. 나는 그것을 Ustream으로 밀어 넣는 데 성공하지 못했지만 다시 한참되었고 지금하고있는 일이 더 이상 효과가 없을 것이라고 생각합니다.

데스크톱이 아닌 파일을 스트리밍하려면 ( "창", "VLC"라고 말할 때 생각합니다), Livestream으로 작업 할 수있는 올바른 방향을 알려줄 수 있습니다 (아마도 Ustream). 나는 실험을 통해이 작업을 수행하는 방법을 서툴게 파악하고 있습니다. 환상적이지는 않지만 Livestream과 함께 작동합니다.

Justin.tv에는 VLC에서 서비스로 스트리밍 할 수있는 스크립트도 있습니다.

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


와우 이거 정말 흥미 롭습니다. 일부 게임의 라이브 게임 플레이를 스트리밍하려고합니다. ffmpeg에서 비디오 파일로 캡처하는 방법을 이미 알고 있습니다. 동일한 파일을 vlc에서 열어서 작성되는 동안 어떻게 스트리밍할지 궁금합니다. 정보에 대해서 감사드립니다.
bkconrad

ws4gl.org 웹 사이트는 매우 오래된 것으로 보이며 모든 링크는 Wayback Machine을 가리 킵니다. 나는 최신 버전에서 사용할 수 있습니다 가정 sourceforge.net/projects/webcamstudio
데닐손 Sá 마이 아

"WEBCAMSTUDIO는 더 이상 유지되지 않습니다": /
Raphael

2

먼저 appear.in은 번거 로움없이 원하는 것을 할 것입니다 (나는 제휴하지 않습니다) : http://appear.in/

둘째, 최근 Linux 지원 (!)을 추가 한 OBS를 사용하여 Twitch 또는 기타 서비스로 스트리밍 할 수 있습니다. https://obsproject.com/

OBS는 또한 Ubuntu에서 화면을 캡처하는 동안 멀티플렉싱 시스템 사운드 및 오디오 입력의 훨씬 더 어려운 문제를 해결합니다 ( universe지금까지 찾은 리포지토리 에서는 해결되지 않음 ).

멋진 유닉스 솔루션이 없습니다. 그러나 그들은 현실 세계에서 나를 위해 일했습니다.


데비안의 OBS Studio : tracker.debian.org/pkg/obs-studio
myrdd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.