VLC가 명령줄을 통해 웹캠에서 녹화하도록 할 수 없습니다

VLC가 명령줄을 통해 웹캠에서 녹화하도록 할 수 없습니다

내 ~/.bashrc에는 다음 기능이 포함되어 있습니다.

webcamrecord () {
vlc v4l2:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=640 :v4l-height=480 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vfilter=adjust{gamma=1.5},vcodec=theo,vb=2000,scale=0.67,acodec=vorb,ab=128,channels=2}:standard{access=file,mux=ogg,dst="output_file.ogg"}" 
}

이 명령은 웹캠에서 직접 녹화하는 데 완벽하게 작동하지만 한두 가지 결함이 있습니다. 첫째, 결과 비디오가 너무 빠르게 이동하여 일반 속도의 2~3배입니다.

또한 오디오도 없습니다. 이것은 문제가 아니지만 여전히 고치고 싶습니다.

누군가 이 명령을 디버그하여 이러한 문제를 해결하도록 도와줄 수 있나요?

답변1

이 구절은 오디오와 비디오를 통해 나에게 효과적이었습니다.

vlc v4l2:// :input-slave=alsa:// :v4l-vdev="/dev/video0" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=360 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vcodec=theo,vb=2000,fps=12,scale=0.67,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

다음을 시도해 볼 수도 있습니다.

vlc v4l2:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/pcm" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=360 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vcodec=theo,vb=2000,fps=12,scale=0.67,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

경험은 하드웨어에 따라 다를 수 있습니다. 행운을 빌어요!

답변2

혹시 오디오 소스가 맞는지 궁금하시죠?

두 번째로 (다시 한 번 질문입니다.) ffmpeg를 사용하여 비디오를 스트리밍하는 것이 어떻습니까?
비슷하지만 완전히는 아닙니다:

ffmpeg -b 100K -an -f video4linux2 -s 320x240 -r 10 -i /dev/audio2 -i /dev/video0 -b 100K -f ogg - | mplayer - -idle -demuxer ogg

오디오 입력과 비디오 입력을 원하는 대로 바꾼 다음 실제 파일 변환을 수행합니다. ffmpeg 및 mplayer에는 약간 녹슬었지만 가능합니다. + 친구가 Raspberry Pi로 했고 약 20fps @1080p를 얻었으므로 이 방법으로 표준 장비를 사용할 수 있을 것입니다 :)

답변3

모든 장치의 개요를 확인하세요(이 예에서는 /dev/video0).

v4l2-ctl --list-devices

사용 가능한 형식을 확인하세요.

v4l2-ctl --list-formats-ext -d /dev/video0

음원을 결정합니다(카드:0..., 장비:1...하드웨어와 같습니다.0,1. 이 예에서는 hw:0,0):

arecord -l

비디오 + 오디오를 녹음하고 파일에 직접 쓰기:

cvlc v4l2:///dev/video0:width=640:height=480 :input-slave=alsa://hw:0,0 --sout="#transcode{vcodec=theo,vb=2000,fps=20,scale=1.0,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

동일하지만 라이브 비디오의 경우:

cvlc v4l2:///dev/video0:width=640:height=480 :input-slave=alsa://hw:0,0 --sout="#transcode{vcodec=theo,vb=2000,fps=20,scale=1.0,acodec=vorb,ab=90,channels=1,samplerate=44100}:duplicate{dst=display,dst=standard{access=file,mux=ogg,dst=output.ogg}}"  

컨트롤 + 메뉴를 원하면 다시 변경할 수 있습니다 cvlc.vlc

VLC의 v4l2 모듈에 대한 추가 옵션.

답변4

일관된 결과를 얻지 못하거나 가장 작은 예를 찾을 수 없기 때문에 비슷한 것을 찾기 위해 grep에 대한 지침을 읽어 보았습니다.

 vlc --longhelp --advanced | grep v4l | grep dev

궁극적으로 이것은 최소한의 예처럼 보입니다.

 vlc  alsa://plughw:1,0 --input-slave=v4l2:///dev/video0

동기화나 품질을 전혀 확인하지 않았지만 실제로 어떤 오디오 및 비디오 피드백을 생성할 수 있는지 궁금합니다. 카메라를 화면으로 향하게 하고 분광계를 켜면 아마도 두 채널이 동시에 재생될 것입니다. 거기서부터 조정하세요. 이전 답변 AFAICT에서 적절한 장비를 얻을 수 있습니다.

나는 이 버전을 가지고 있습니다:

VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
VLC version 2.2.2 Weatherwax (2.2.2-0-g6259d80)
Compiled by buildd on lgw01-09.buildd (Aug  8 2017 18:59:52)
Compiler: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License;
see the file named COPYING for details.
Written by the VideoLAN team; see the AUTHORS file.

관련 정보