发烧友实测 | 用飞凌OKA40i-C开发板玩转FFmpeg

本篇试用报告由发烧友 提供 , 感谢 的支持 。飞凌嵌入式会在电子发烧友和电路城论坛持续开展开发板有奖试用活动 , 更有京东E卡等着你!欢迎大家的持续关注 。1. 的安装
是用来记录、转换数字音频、视频的开源软件 , 它支持文件和网络流操作 。它支持以函数库的方式使用 , 所以有很多软件都依赖它 , 比如VLC、暴风影音、腾讯会议等 。它的命令行程序也非常强大 , 各种命令行选项学起来虽然困难 , 但是几乎能够满足日常对音视频的各种处理需求 。今天我们就通过飞凌嵌入式-C开发板来介绍它的命令行工作方式 。
提供了全部源代码 , 所以在网上可以找到很多教程是关于交叉编译ARM版本的 。我们测试的版本使用的是--armel-.tar.xz 。解压缩以后拷贝到飞凌嵌入式-C开发板上并设置好权限就可以使用了 。
2. USB摄像头测试
-C开发板接口丰富 , 它支持USB摄像头、CMOS-摄像头、模拟摄像头 。把USB摄像头插入开发板 , 然后使用
v4l2-ctl --list-
可以看到/dev/就是我们的USB摄像头 , 如下图 。
使用下面的命令可以看到该摄像头的全部参数:
v4l2-ctl -d /dev/video0 --all
Driver Info (not using libv4l2):Driver name : uvcvideoCard type : USB2.0 PC CAMERABus info : usb-sunxi-ehci-1Driver version : 3.10.65Capabilities : 0x04000001Video CaptureStreamingVideo input : 0 (Camera 1: ok)Format Video Capture:Width/Height : 640/480Pixel Format : 'YUYV'Field : NoneBytes per Line : 1280Size Image : 614400Colorspace : DefaultTransfer Function : DefaultYCbCr Encoding : DefaultQuantization : DefaultCrop Capability Video Capture:Bounds : Left 0, Top 0, Width 640, Height 480Default : Left 0, Top 0, Width 640, Height 480Pixel Aspect: 1/1Streaming Parameters VideoCapture:Capabilities : timeperframeFrames per second: 30.000 (30/1)Read buffers : 0brightness (int) : min=0 max=255 step=1 default=128value=http://www.kingceram.com/post/128contrast (int) : min=0 max=255 step=1 default=135value=135saturation (int) : min=0 max=255 step=1 default=75 value=75hue (int) : min=-127 max=127 step=1 default=0 value=0gamma (int) : min=1 max=8 step=1 default=4 value=4power_line_frequency (menu) : min=0 max=2 default=1 value=1sharpness (int) : min=0 max=15 step=1 default=5 value=5backlight_compensation (int) : min=1 max=5 step=1 default=1 value=1
我们使用了两种型号的USB摄像头 , 按照手册说明使用内置的程序进行测试 , 不过都没有成功 , 得到的错误信息如下图所示 。
我们使用可以抓取视频 , 命令行如下:

发烧友实测 | 用飞凌OKA40i-C开发板玩转FFmpeg

文章插图
ffmpeg -f video4linux2 -s 640x480 -pix_fmt yuyv422 -i /dev/video0 out.yuv
使用版本的可以正常播放抓取的视频 , 命令行如下:
ffplay -s 640x480 -pix_fmt yuyv422 out.yuv
上面保存的是YUV格式的原始视频 , 如果要保存压缩视频 , 可以用下面的命令行:
ffmpeg -y -t 15 -r 25 -f video4linux2 -i /dev/video0 out3.mp4-timestamps bs
其中的-r 25表示每秒采样25帧 , 这个参数必须有 , 否则可能会不断地采集并压缩同一视频帧 。-r参数超过30没有什么意义 , 因为USB摄像头的最大能力就是30fps 。
飞凌嵌入式-C开发板可以对于1080P的视频压缩达到45fps , 所以对USB摄像头的视频压缩应该没有什么压力 。