캡처 된 비디오를 가짜 웹캠으로 사용하여 무료 스트리밍 사이트를 사용하여 Linux 데스크톱 (윈도우)의 라이브 스트림을 만들고 싶습니다. Windows에는이를위한 많은 도구가 있습니다. ffmpeg를 사용하면 특정 창에서 입력을 캡처 할 수 있지만 비디오를 플래시에서 사용할 수있는 가짜 웹캠 스타일 장치로 출력하는 방법을 찾을 수 없습니다.
누구든지 이것을 수행하는 방법 (또는 소프트웨어)을 추천 할 수 있습니까?
캡처 된 비디오를 가짜 웹캠으로 사용하여 무료 스트리밍 사이트를 사용하여 Linux 데스크톱 (윈도우)의 라이브 스트림을 만들고 싶습니다. Windows에는이를위한 많은 도구가 있습니다. ffmpeg를 사용하면 특정 창에서 입력을 캡처 할 수 있지만 비디오를 플래시에서 사용할 수있는 가짜 웹캠 스타일 장치로 출력하는 방법을 찾을 수 없습니다.
누구든지 이것을 수행하는 방법 (또는 소프트웨어)을 추천 할 수 있습니까?
답변:
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는 각각 수평 및 수직 오프셋입니다.
[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
mplayer와 함께 v4l2loopback을 사용하십시오 .
make
and su -c 'make install'
)su -c 'modprobe v4l2loopback'
,그런 다음 examples/yuv4mpeg_to_v4l2.c
v4l2loopback 소스 폴더 의 파일에서 한 줄 을
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
에
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
및 수행 make
이 폴더에.
그런 다음 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
?
어떤 배포판을 사용하고 있습니까? 나는 Livestream 웹 기반 "스튜디오"와 결합 된 아치 아래의 WebCamStudio로 성공했습니다. 그래도 그것을 사용한지 오래되었습니다.
정확히 무엇을하려고합니까? x11grab로 컴파일 된 ffmpeg는 데스크탑을 기록 할 수 있습니다. 나는 그것을 Ustream으로 밀어 넣는 데 성공하지 못했지만 다시 한참되었고 지금하고있는 일이 더 이상 효과가 없을 것이라고 생각합니다.
데스크톱이 아닌 파일을 스트리밍하려면 ( "창", "VLC"라고 말할 때 생각합니다), Livestream으로 작업 할 수있는 올바른 방향을 알려줄 수 있습니다 (아마도 Ustream). 나는 실험을 통해이 작업을 수행하는 방법을 서툴게 파악하고 있습니다. 환상적이지는 않지만 Livestream과 함께 작동합니다.
Justin.tv에는 VLC에서 서비스로 스트리밍 할 수있는 스크립트도 있습니다.
http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API
먼저 appear.in은 번거 로움없이 원하는 것을 할 것입니다 (나는 제휴하지 않습니다) : http://appear.in/
둘째, 최근 Linux 지원 (!)을 추가 한 OBS를 사용하여 Twitch 또는 기타 서비스로 스트리밍 할 수 있습니다. https://obsproject.com/
OBS는 또한 Ubuntu에서 화면을 캡처하는 동안 멀티플렉싱 시스템 사운드 및 오디오 입력의 훨씬 더 어려운 문제를 해결합니다 ( universe
지금까지 찾은 리포지토리 에서는 해결되지 않음 ).
멋진 유닉스 솔루션이 없습니다. 그러나 그들은 현실 세계에서 나를 위해 일했습니다.