0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【飞凌OKA40i-C开发板试用体验】玩转FFmpeg

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-10-20 10:42 次阅读
本文来源电子发烧友社区,作者:zealsoft, 帖子地址:https://bbs.elecfans.com/jishu_2305824_1_1.html


感谢“电子发烧友网”和飞凌嵌入式公司提供了本次OKA40i-C开发板的评测机会。上次我们介绍了通过HDMI接口连接智能电视的测试情况,今天使用FFmpeg进行视频编解码的测试。
一、 FFmpeg的安装
FFmpeg是用来记录、转换数字音频、视频的开源软件,它支持文件和网络流操作。它支持以函数库的方式使用,所以有很多软件都依赖它,包括VLC、暴风影音、腾讯会议等。它的命令行程序也非常强大,各种命令行选项学起来虽然困难,但是几乎能够满足日常对音视频的各种处理需求。今天我们介绍的就是它的命令行工作方式。FFmpeg提供了全部源代码,所以在网上可以找到很多教程是关于交叉编译ARM版本的。如果想偷懒,也可以从https://johnvansickle.com/ffmpeg/下载已经编译好的版本。我们测试的版本使用的是FFmpeg-release-armel-static.tar.xz。解压缩以后拷贝到arm开发板并设置好权限就可以使用了。
二、 USB摄像头测试

OKA40i-C开发板接口丰富,它支持USB 摄像头、CMOS-OV5640 摄像头、模拟摄像头。把USB摄像头插入开发板,然后使用


  1. v4l2-ctl --list-devices
复制代码

可以看到/dev/video0就是我们的USB摄像头,如下图。
poYBAGMjESmAfJwfAABUouCoJ-0969.png
使用下面的命令可以看到该摄像头的全部参数


  1. 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程序进行测试,不过都没有成功,得到的错误信息如下图所示。
pYYBAGMjESqAEkELAABWcoXczkA697.png
poYBAGMjESqAP62kAAAmhKzc3yY319.png
我们使用FFmpeg可以抓取视频,命令行如下:


  1. ffmpeg -f video4linux2 -s 640x480 -pix_fmt yuyv422 -i /dev/video0
  2. out.yuv
复制代码


使用Windows版本的ffplay可以正常播放抓取的视频,命令行如下:


  1. ffplay -s 640x480 -pix_fmt yuyv422 out.yuv
复制代码


上面保存的是YUV格式的原始视频,如果要保存压缩视频,可以用下面的命令行:


  1. ffmpeg -y -t 15 -r 25 -f video4linux2-i /dev/video0 out3.mp4 -timestamps bs
复制代码


其中的-r 25表示每秒采样25帧,这个参数必须有,否则FFmpeg可能会不断地采集并压缩同一视频帧。-r参数超过30没有什么意义,因为USB摄像头的最大能力就是30fps。A40i可以对于1080p的视频压缩达到45fps,所以对USB摄像头的视频压缩应该没有什么压力。

三、 FFmpeg性能测试
FFmpeg有个benchmark参数可以方便进行性能测试。我们对A40i开发板自带的一个MP4视频就行解码测试,命令行如下:


  1. ffmpeg -benchmark -i translate.mp4 -f null –
复制代码


得到的测试数据如下:
video:148kBaudio:3428kB subtitle:0kB other streams:0kB globalheaders:0kB muxing overhead: unknown
bench: utime=2.820s stime=0.110s rtime=0.956s
bench: maxrss=14208kB

手上暂时没有ARM开发板可以对比,就拿我用了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

以后可以找其他开发板来对比一下。
四、 FFmpeg产生实时视频流
FFmpeg可以支持实时视频流的发送和接收,从而可以把板子上的视频实时发送到PC上,由PC上的软件实时接收并显示。我们可以使用下面的命令将板子上的一个MP4转换为RTP码流发送的PC上:


  1. ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234
复制代码



使用Wireshark可以看到在PC机的1234端口收到大量来自板子的H.264视频流。
pYYBAGMjESuAYxEfAAPhbfGMAgg347.png
如果想在PC上显示视频流,需要建立一个SDP文件,它描述视频流中的端口和编码信息。SDP是来自SIP标准中定义,目前VLC、Apple QuickTime和ffplay等很多软件都可以打开SDP文件,并按照SDP中的描述显示视频流。SDP文件并不需要手工编写,在ffmpeg运行时它会显示命令行所对应的SDP定义,如下图所示。
poYBAGMjESyASSoCAADe2O_5kTc452.png
也可以用重定向将输出写入一个SDP文件,如:


  1. ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234
  2. > rtp.sdp
复制代码



下面就是使用VLC显示的接收到的视频流。
pYYBAGMjES6ABJBrAB35b1G1HrE348.png
五、 FFmpeg转发USB摄像头的视频流
前面演示了将MP4文件转换为视频流,我们也可以将USB摄像头采集的内容实时转发到PC上,使用下面的命令行即可。


  1. ffmpeg -y -t 15 -r 25 -f video4linux2-i /dev/video0 -f rtp
  2. rtp://192.168.0.105:1234 > usb.sdp
复制代码


使用下面的命令行就可以看到实时抓取的USB摄像头的视频流了:



  1. ffplay -protocol_whitelist "file,udp,rtp" -i usb.sdp
复制代码

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 飞凌
    +关注

    关注

    0

    文章

    134

    浏览量

    16105
收藏 人收藏

    评论

    相关推荐

    嵌入式OK3588J-C开发板体验】OK3588J-C开发板开箱评测

    很高兴收到嵌入式提供的OK3588J-C开发板,这是瑞芯微最新的8K旗舰8核SOC,非常适合用来做机器视觉,AI,语音识别,图像处理。 下面来看看OK3588J-
    发表于 12-04 15:23

    嵌入式OK3576-C开发板体验】开箱报告

    简介 很荣幸参与到本次由嵌入式和电子发烧友提供的OK3576-C开发板试用机会。
    发表于 08-22 02:13

    嵌入式OK527N-C开发板体验】- 1. 开箱

    周三左右就收到了快递,一直忙其他的事情,没时间弄这个,就拖到周末了。 首先发个开箱贴,记录下。 外包装,盒子比想象的要大不少。 附带的产品手册,里面有很多
    发表于 07-11 21:24

    嵌入式OK527N-C开发板体验】- 开箱

    周三左右就收到了快递,一直忙其他的事情,没时间弄这个,就拖到周末了。 首先发个开箱贴,记录下。 外包装,盒子比想象的要大不少。 附带的产品手册,里面有很多
    发表于 06-30 23:04

    嵌入式RK3568开发板蓝牙收、发文件测试

    本文由电子发烧友论坛用户fsdzdzy提供,感谢分享。嵌入式每月定期开展新的开发板体验活动,欢迎更多工程师朋友的关注和参与。嵌入式O
    的头像 发表于 02-02 16:31 1863次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式RK3568<b class='flag-5'>开发板</b>蓝牙收、发文件测试

    嵌入式T113-i开发板的调屏方法

    对于飞嵌入式T113-i开发板的调屏问题,需要按照以下步骤进行操作
    的头像 发表于 01-29 16:25 971次阅读

    如何在嵌入式T113-i开发板的Buildroot中移植MQTT协议?

    嵌入式OK113i-S开发板上市一段时间以来收获了很多关注,也成为了许多客户项目选型的优质之选。在实际的项目开发中,工程师朋友们可能会需
    的头像 发表于 01-26 08:02 511次阅读
    如何在<b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式T113-<b class='flag-5'>i</b><b class='flag-5'>开发板</b>的Buildroot中移植MQTT协议?

    嵌入式A40i-H核心已适配“矿鸿OS”

    嵌入式基于全志科技A40i-H打造的FETA40i-C核心成功完成了“矿鸿OS”的系统适配,嵌入式核心
    的头像 发表于 01-18 08:02 976次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式A<b class='flag-5'>40i</b>-H核心<b class='flag-5'>板</b>已适配“矿鸿OS”

    嵌入式T113-i开发板的调屏方法,就是这样简单

    的配备为客户提供了更加多样的选择。今天小编就与大家分享一下为嵌入式OK113i-S开发板适配LVDS屏幕的过程。
    的头像 发表于 01-12 11:50 2218次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式T113-<b class='flag-5'>i</b><b class='flag-5'>开发板</b>的调屏方法,就是这样简单

    带你玩转AM62x开发板的显示接口——LVDS的显示和修改方式

    说,我们进入正题。1LVDS接口规格嵌入式OK6254-C开发板提供2个4-laneLVDS显示串行接口,每lane最高支持1.19Gbps;单个LVDS接口支持的最高分辨率为
    的头像 发表于 01-05 08:02 1253次阅读
    带你<b class='flag-5'>玩转</b>AM62x<b class='flag-5'>开发板</b>的显示接口——LVDS的显示和修改方式

    技术帖 | 嵌入式T113-i开发板的休眠及唤醒操作

    嵌入式OK113i-S开发板支持两种休眠方式:freeze和mem。本篇内容小编会为大家介绍如何让
    的头像 发表于 12-29 08:02 1228次阅读
    技术帖 | <b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式T113-<b class='flag-5'>i</b><b class='flag-5'>开发板</b>的休眠及唤醒操作

    OK113i-C 全志T113-i开发板】WiFi和以太网络的使用

    WiFi和以太网络的使用这块t113-t开发板,板载了一块WiFi+蓝牙的模块,以及千兆一台网络,出厂已经支持了WiFi驱动,且在之前的实验中已经打开了wifi模块的功能,并手动扫描链接了AP
    发表于 12-27 09:57

    OK113i-S开发板试用】软件开发环境搭建

    OK113i-S开发板试用】软件开发环境搭建
    发表于 12-25 12:06

    OK113i-S开发板试用】开机测评--软件测试篇

    OK113i-S开发板试用】开机测评--软件测试篇
    发表于 12-25 11:03

    OK113i-S开发板试用】开机测评--硬件篇

    OK113i-S开发板试用】开机测评--硬件篇 一,开箱见图 包装精致 注意:上面红黄的先是本人接上的 配了电源线和一根usb线一根天
    发表于 12-24 20:51