Linux에서 데스크톱을 가짜 웹캠으로 사용

Linux에서 데스크톱을 가짜 웹캠으로 사용

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

이를 수행하는 방법(또는 소프트웨어)을 추천할 수 있는 사람이 있습니까?

답변1

설치할 수 있습니다v4l2루프백. 웹캠을 시뮬레이트하는 커널 모듈입니다. 다음을 사용하여 로드하세요.

modprobe v4l2loopback

/dev/videoN그런 다음 ffmpeg와 같은 프로그램을 사용하여 비디오 스트림을 장치 ( N새로 생성된 장치에 해당하는 번호 - 아마도 가장 높은 번호) 로 보내야 합니다 . 데스크탑을 캡처하여 ffmpeg로 전달하려면 /dev/videoN다음 명령줄을 사용할 수 있습니다.

ffmpeg -probesize 100M -framerate 15 -f x11grab -video_size 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/videoN

-framerate다른 프레임 속도를 원하면 값을 15에서 다른 값으로 변경하십시오 .

해상도는 매개변수에서 선택됩니다 -video_size. 화면의 왼쪽 상단 모서리로부터의 오프셋을 지정하려면 이를 양식의 -i 매개변수에 전달하십시오. -i :0.0+x,y여기서 x와 y는 각각 가로 및 세로 오프셋입니다.

답변2

사용mplayer를 사용한 v4l2loopback.

  1. 다운로드 해,

  2. 그것을 컴파일하고 ( makesu -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;
  1. 그리고 make이 폴더에서 하세요.

  2. 그런 다음 다음과 같이 디렉토리에서 실행하십시오 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 &
ffmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

ffmpeg 명령이 어떻게 생겼는지 알려주지 않았기 때문에 마지막 항목을 테스트하지 않았습니다.

답변3

어떤 배포판을 사용하고 있습니까? 저는 Livestream 웹 기반 "스튜디오"와 결합된 Arch의 WebCamStudio로 성공을 거두었습니다. 그래도 사용한지는 좀 됐네요.

http://www.ws4gl.org/

정확히 무엇을 하려는 건가요? x11grab으로 컴파일된 ffmpeg는 데스크탑을 기록할 수 있습니다. Ustream으로 전송하는 데 제한적인 성공을 거두었지만 시간이 꽤 지났고 제가 하던 일이 더 이상 작동하지 않을 것 같습니다.

데스크톱이 아닌 파일을 스트리밍하고 싶다면("창"이라고 하면 "VLC"를 의미하는 것 같습니다) Livestream을 사용하여 작업할 수 있는 올바른 방향을 알려드릴 수 있습니다. 유스트림). 나는 실험을 통해 이것을 수행하는 방법을 서투르게 알아내고 있습니다. 환상적이지는 않지만 Livestream과 함께 작동합니다.

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

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

답변4

먼저,appear.in은 아마도 어떤 번거로움도 없이 당신이 원하는 것을 할 것입니다(저는 관련이 없습니다):http://appear.in/

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

OBS는 또한 Ubuntu에서 화면을 캡처하는 동안 시스템 사운드 및 오디오 입력을 다중화하는 훨씬 더 어려운 문제를 해결합니다( universe지금까지 찾은 저장소의 어떤 것으로도 해결되지 않았습니다).

나는 멋진 unix-y 솔루션을 가지고 있지 않습니다. 그러나 그것은 현실 세계에서 나에게 도움이 되었습니다.

관련 정보