web-dev-qa-db-ja.com

EasyCAP STK1160からffmpegを使用してPAL-B生ビデオとステレオALSAサウンドをキャプチャして表示し、x264にエンコードします

LinuxでEasyCAP STK1160を使用して古いVHSカセットをデジタル化したいと思います。コンポジットビデオ入力は/dev/video1、およびhw:2,0は、USBALSAコンポジット2チャンネルオーディオ用です。

ストリームをRAW形式でキャプチャするには、次のものを使用します。

ffmpeg -f alsa -ac 2 -i hw:2,0 -f rawvideo -r 25 -s 720x576 -i /dev/video1 -codec:a pcm_s16le -codec:v rawvideo -f rawvideo raw_streams.raw

2パスでrawファイルをh264にエンコードするには、次を使用します。

time ffmpeg -f rawvideo -codec:v rawvideo -s:v 720x576 -r 25 -pix_fmt yuyv422 -deinterlace -i raw_streams.raw -pass 1 -codec:v libx264 -codec:a libfdk_aac -b:a 128k -preset ultrafast -y -b:v 6100k -f mp4 /dev/null
time ffmpeg -f rawvideo -codec:v rawvideo -s:v 720x576 -r 25 -pix_fmt yuyv422 -deinterlace -i raw_streams.raw -pass 2 -codec:v libx264 -codec:a libfdk_aac -b:a 128k -preset ultrafast -y -b:v 6100k -f mp4 "final.mp4"

質問#1:結果として得られるエンコードされた.mp4は、ビデオは良好ですが、サウンドはありません。サウンドチャネルをrawファイルに追加してからmp4に追加するにはどうすればよいですか?次のコマンドで音声のみを正常にキャプチャすると、の行に音声があることがわかります。

ffmpeg -f alsa -i hw:2,0 output.wav

質問#2: PAL-Bを生のビデオのビデオキャプチャ形式として指定するにはどうすればよいですか? man ffmpegこの問題に関する情報はないようです。

質問#3:すべてのカセットに全長の録音があるわけではないので、いつ停止するかがわかるように、キャプチャしながらライブストリームも表示したいと思います。私はこれを行います:

mplayer -fps 25 tv:// -tv driver=v4l2:device=/dev/video1

ストリームを表示するか、キャプチャします。両方を実行しようとすると、次のエラーが発生します。/dev/video1: Device or resource busyどうすればこれらのことを同時に行うことができますか?

1
Gábor Dani

#1 rawvideoストリームに保存しているため、オーディオは保存されません。 NUTのようなコンテナに保存する必要があります。

ffmpeg -f rawvideo -framerate 25 -s 720x576 -i /dev/video1 -f alsa -ac 2 -i hw:2,0
       -c:a pcm_s16le -c:v rawvideo raw.nut

#2これはキャプチャデバイスのドライバ/設定で設定する必要があります。 FFmpegは、USBデバイスによってデジタル化された生のビデオストリームを受信して​​います。具体的にどのプロパティを設定する必要がありますか?すべてのPALバリアントは、フレームサイズとレートを共有します。

ティーマルチプレクサを使用して、キャプチャをffplayにパイプできます

ffmpeg -f rawvideo -framerate 25 -s 720x576 -i /dev/video1 -f alsa -ac 2 -i hw:2,0
       -c:a pcm_s16le -c:v rawvideo -f tee "raw.nut|[f=nut]pipe:" | ffplay -f nut -
1
Gyan