发烧友实测!用飞凌OKA40iC开发板玩转FFmpeg
本篇试用报告由发烧友 zealsoft提供,感谢 zealsoft的支持。飞凌嵌入式会在电子发烧友和电路城论坛持续开展开发板有奖试用活动,更有京东E卡等着你!欢迎大家的持续关注。1. FFmpeg的安装
FFmpeg是用来记录、转换数字音频、视频的开源软件,它支持文件和网络流操作。它支持以函数库的方式使用,所以有很多软件都依赖它,比如VLC、暴风影音、腾讯会议等。它的命令行程序也非常强大,各种命令行选项学起来虽然困难,但是几乎能够满足日常对音视频的各种处理需求。今天我们就通过飞凌嵌入式OKA40i-C开发板来介绍它的命令行工作方式。
FFmpeg提供了全部源代码,所以在网上可以找到很多教程是关于交叉编译ARM版本的。我们测试的版本使用的是FFmpeg-release-armel-static.tar.xz。解压缩以后拷贝到飞凌嵌入式OKA40i-C开发板上并设置好权限就可以使用了。 2. USB摄像头测试
OKA40i-C开发板接口丰富,它支持USB摄像头、CMOS-OV5640摄像头、模拟摄像头。把USB摄像头插入开发板,然后使用
v4l2-ctl --list-devices
可以看到/dev/video0就是我们的USB摄像头,如下图。
使用下面的命令可以看到该摄像头的全部参数: v4l2-ctl -d /dev/video0 --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : USB2.0 PC CAMERA
Bus info : usb-sunxi-ehci-1
Driver version : 3.10.65
Capabilities : 0x04000001
Video Capture
Streaming
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : "YUYV"
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : Default
Transfer Function : Default
YCbCr Encoding : Default
Quantization : Default
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1
Streaming Parameters VideoCapture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
brightness (int) : min=0 max=255 step=1 default=128value=128
contrast (int) : min=0 max=255 step=1 default=135value=135
saturation (int) : min=0 max=255 step=1 default=75 value=75
hue (int) : min=-127 max=127 step=1 default=0 value=0
gamma (int) : min=1 max=8 step=1 default=4 value=4
power_line_frequency (menu) : min=0 max=2 default=1 value=1
sharpness (int) : min=0 max=15 step=1 default=5 value=5
backlight_compensation (int) : min=1 max=5 step=1 default=1 value=1
我们使用了两种型号的USB摄像头,按照手册说明使用内置的uvccamera程序进行测试,不过都没有成功,得到的错误信息如下图所示。
我们使用FFmpeg可以抓取视频,命令行如下:
ffmpeg -f video4linux2 -s 640x480 -pix_fmt yuyv422 -i /dev/video0 out.yuv
使用Windows版本的ffplay可以正常播放抓取的视频,命令行如下:
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帧,这个参数必须有,否则FFmpeg可能会不断地采集并压缩同一视频帧。-r参数超过30没有什么意义,因为USB摄像头的最大能力就是30fps。
飞凌嵌入式OKA40i-C开发板可以对于1080P的视频压缩达到45fps,所以对USB摄像头的视频压缩应该没有什么压力。 3. FFmpeg性能测试
FFmpeg有个benchmark参数可以方便进行性能测试。我们对A40i开发板自带的一个MP4视频就行解码测试,命令行如下:
ffmpeg-benchmark -i translate.mp4 -f null –
得到的测试数据如下: video:148kB
audio:3428kB subtitle:0kB other streams:0kB globalheaders:0kB muxing
overhead:unknown
bench:utime=2.820s stime=0.110s rtime=0.956s
bench:maxrss=14208kB
由于我手上暂时没有其他的开发板可以对比,于是就通过我用了5年的i7-6500笔记本测试了一下,测试结果如下: video:241kB
audio:3428kB subtitle:0kB other streams:0kB globalheaders:0kB muxing
overhead:unknown
bench:utime=0.391s stime=0.000s rtime=0.228s
bench:maxrss=20316kB
4. FFmpeg产生实时视频流
FFmpeg可以支持实时视频流的发送和接收,从而可以把OKA40i-C开发板上的视频实时发送到PC上,由PC上的软件实时接收并显示。我们可以使用下面的命令将OKA40i-C开发板上的一个MP4转换为RTP码流发送的PC上:
ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234
使用Wireshark可以看到在PC机的1234端口收到大量来自OKA40i-C开发板的H.264视频流。
如果想在PC上显示视频流,需要建立一个SDP文件,它描述视频流中的端口和编码信息。
SDP是来自SIP标准中定义,目前VLC、Apple QuickTime和ffplay等很多软件都可以打开SDP文件,并按照SDP中的描述显示视频流。SDP文件并不需要手工编写,在ffmpeg运行时它会显示命令行所对应的SDP定义,如下图所示。
也可以用重定向将输出写入一个SDP文件,如:
ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234 > rtp.sdp
下面就是使用VLC显示的接收到的视频流。
5. FFmpeg转发USB摄像头的视频流
前面演示了将MP4文件转换为视频流,我们也可以将USB摄像头采集的内容实时转发到PC上,使用下面的命令行即可。 ffmpeg -y -t 15 -r 25 -f video4linux2 -i /dev/video0 -f rtp
rtp://192.168.0.105:1234 > usb.sdp
再使用下面的命令行就可以看到实时抓取的USB摄像头的视频流了:
ffplay -protocol_whitelist "file,udp,rtp" -i usb.sdp
索尼A7R5英国价格曝光约3。3万元,A7R4首发价约2。7万元IT之家10月26日消息,索尼A7R5旗舰相机将在10月26日晚10点发布,现在sonyalpharumors放出了它的更多情报。消息人士表示,索尼7RV在英国的定价为3999英镑
行情iPad10首销破发减600OPPO双11降价信息汇总随着各大电商平台双十一预售拉开序幕,各大手机厂商们也有进行不同程度的促销,之前给大家粗略整理过小米realme两家的降价信息,今天来看看OPPO魅族的促销情况。上面这张图汇总了OP
双十一98吋电视推荐最近在卖场闲逛了解了几款98吋的电视机,发现了几款相当不错的大屏电视啊,我呢给大家推荐三款高端更高端最高端的电视。一,首先呢是最高端的TCL98X9CPRO那么这款电视呢采用的是和
红米Note12Pro曝光2亿像素真的来了!首发天玑1080性能如何?最近一段时间,小米官方不断爆料红米Note12系列的相关信息。此前传闻这款手机配备2亿像素摄像头,结果官宣小米12Pro采用IMX766。但也不要对此失望,一是IMX766被多款旗
宇宙磁铁在实验室中重现有望成为稀土替代品稀土元素是电子和机械设备的一个关键部分,然而它们供不应求。现在,科学家们已经找到了一种方法来重新创造一个有希望的替代品通常需要数百万年才能在陨石中形成的宇宙磁铁,现在则可以在实验室
印象卢氏醉美五里川醉美五里川(作者张伟)五里川位于卢氏西南,离县城55公里,209国道三淅高速浩吉铁路穿镇而过,是一代宗师曹靖华的故乡。因这个小盆地有5华里之长而取名五里川。我在这里上高中两年半,参
游戏进入元宇宙的钥匙头条创作挑战赛我在头条搞创作第二期一hr还记得你第一次上网的场景吗?我本人处女秀是用调制解调器(俗称猫)拨号上网的,那时厂里普及固定电话还不久,通过细细的电话线竟然能连通联众游戏厅
今年夏天为何这么热美国纽约时报网站10月5日刊登题为研究发现,气候变化导致全球夏季更炎热干燥的文章,作者是雷蒙钟。全文摘编如下科学家说,人类活动导致的全球变暖使得今年夏天欧洲和北美出现严重干旱,这种
扎克伯格的元宇宙VS库克的AR,国内创业者究竟该信奉谁?本文来自微信公众号壹娱观察(IDyiyuguancha),文大娱乐家。尽管苹果那款存在于传言中的AR大杀器迟迟没有发布,但作为苹果CEO的库克却早已在各种场合持续宣扬AR技术和设备
有哪些十分温柔的句子?推荐一愿时光能缓,愿故人不散,愿你惦念的人能和你道晚安,愿你独闯的日子里不觉得孤单。二我去过你吹过的风,这算不算相拥?我踏过你走过的路,这算不算相逢?三人间有百媚千红,唯独你是我情之所
如何从多维视角看我们的生活通常情况下,我们认为幸福就是创造自己认为的最好的生活,然后确定最想要的生活是什么,并为此去努力实现。比如说拥有一座花园洋房是一件幸福的事,于是努力工作赚钱,以便能够买得起花园洋房。