如何同时录制来自V4L2输入设备的视频并使用H.264将其编码为文件,同时看到输入的实时预览?
使用GStreamer GStreamer 0.10.36
命令gst-launch-1.0
使用v4l-utils 1.6.3-3
命令v4l2-ctl
答案 0 :(得分:1)
确定可用的分辨率和格式:
v4l2-ctl -d /dev/video0 --list-formats-ext
预览,记录&同时编码:
"格式","宽度","高度"和#34;帧率"需要填写。
" keyframe_period"指定关键帧在视频中出现的频率,用于重建视频帧和(据我所知)寻求。
"最小QP"指定压缩质量,其中较低意味着更好的质量。
gst-launch-1.0 v4l2src device=/dev/video0 ! \
video/x-raw,format=YV12,width=960,height=544,framerate=30/1 ! \
tee name=t ! \
queue ! \
autovideosink sync=false t. ! \
videorate ! \
queue ! \
vaapiencode_h264 keyframe_period=5 tune=high-compression min-qp=50 ! \
queue ! \
mpegtsmux ! \
filesink location=FIRST.mp4
(由于某种原因,无法找到生成的FIRST.mp4。有关无效时间戳的信息。)
重建mp4容器而不重新编码会生成可搜索的mp4文件:
ffmpeg -i FIRST.mp4 -c:v copy SECOND.mp4