VLCがコマンドラインを介してWebカメラに記録することはできません

VLCがコマンドラインを介してWebカメラに記録することはできません

私の~/.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"}" 
}

このコマンドはウェブカメラから直接録画するのに完全に機能しますが、1つまたは2つの欠陥があります。まず、結果のビデオが速すぎるため、通常の速度の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}}"  

コントロール+メニューが必要な場合は、もう一度変更できますcvlcvlc

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.

関連情報