我想将旧的 VHS 录像带数字化EasyCAP STK1160在linux下。复合视频输入为/dev/video1
,hw:2,0
其USB ALSA复合双声道音频为 。
为了捕获原始格式的流,我使用:
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
为了通过两次传递将原始文件编码为 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 具有良好的视频,但没有声音。如何将声道添加到原始文件,然后添加到 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
#1您正在保存到原始视频流,因此不会保存音频。您需要保存到容器,例如 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 变体都共享帧大小和速率。
#3您可以使用 tee muxer 将捕获的内容传输到 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 -