视频采集卡的用法很多,但是搭配树莓派(pi4)后能不能完成相关任务。本文将一探究竟,仅将必要步骤记录。
1、简介
在linux系统下,ffmpeg通过不同的方式获取视频和音频。这样的话,需要分别获取视频采集卡的视频流和音频流,之后进行合并即可。
2、视频流
查找采集卡设备(视频设备),键入如下命令:
v4l2-ctl --list-devices
通过上面的设备信息,经过测试后可以确定/dev/video0是采集卡音频流设备。
可以使用下面的命令测试视频流(只有图像,无声音):
ffplay -f v4l2 -framerate 20 -video_size 1280x720 -i /dev/video0
3、音频流
查找采集卡设备(音频设备),键入如下命令:
arecord -L
通过上面的信息,经过几次测试后确定采集卡音频流设备为plughw:CARD=MS2109,DEV=0
可以使用下面的命令测试音频流设备(只有音频,没有视频):
ffplay -f alsa -ac 2 -i plughw:CARD=MS2109,DEV=0
4、数据压缩
获得视频流和音频流后,需要进行数据压缩。参考命令如下:
ffmpeg
-c:v libx264 -b:v 1600k -preset ultrafast
-x264opts keyint=50 -g 25 -pix_fmt yuv420p
-c:a aac -b:a 128k
上述命令中的参数请自行查找资料。
5、生成文件
经过步骤1、2和3后,可以输出文件out.mp4,并保存在本地。
参考命令如下:
ffmpeg
-f v4l2 -framerate 20 -video_size 1280x720 -i /dev/video0
-f alsa -ac 2 -i plughw:CARD=MS2109,DEV=0
-c:v libx264 -b:v 1600k -preset ultrafast
-x264opts keyint=50 -g 25 -pix_fmt yuv420p
-c:a aac -b:a 128k
out.mp4
6、局域网推流
ffmpeg可以把视频推流到局域网,参考命令如下:
ffmpeg
-f v4l2 -framerate 20 -video_size 1920x1080 -i /dev/video0
-f alsa -ac 2 -i plughw:CARD=MS2109,DEV=0
-c:v libx264 -b:v 1600k -preset ultrafast
-x264opts keyint=50 -g 25 -pix_fmt yuv420p
-c:a aac -b:a 128k
-f rtp_mpegts rtp://192.168.3.4:5001?ttl=2
局域网中的设备可以使用VLC打开url,并键入下面一行内容后即可观看视频卡采集的声像:
rtp://192.168.3.4:5001
参考资料:
How to capture with acquisition card on Linux
https://trac.ffmpeg.org/wiki/Capture/V4L2_ALSA
作者:Fista 来源:公众号——明越日记
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。