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


3. 性能测试
有个参数可以方便进行性能测试 。我们对A40i开发板自带的一个MP4视频就行解码测试 , 命令行如下:
ffmpeg-benchmark -i translate.mp4 -f null –
得到的测试数据如下:
由于我手上暂时没有其他的开发板可以对比 , 于是就通过我用了5年的i7-6500笔记本测试了一下 , 测试结果如下:
video:148kBaudio:3428kB subtitle:0kB other streams:0kB globalheaders:0kB muxingoverhead:unknownbench:utime=2.820s stime=0.110s rtime=0.956sbench:maxrss=14208kB
4. 产生实时视频流
可以支持实时视频流的发送和接收 , 从而可以把-C开发板上的视频实时发送到PC上 , 由PC上的软件实时接收并显示 。我们可以使用下面的命令将-C开发板上的一个MP4转换为RTP码流发送的PC上:
ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234
使用可以看到在PC机的1234端口收到大量来自-C开发板的H.264视频流 。
如果想在PC上显示视频流 , 需要建立一个SDP文件 , 它描述视频流中的端口和编码信息 。
SDP是来自SIP标准中定义 , 目前VLC、Apple 和等很多软件都可以打开SDP文件 , 并按照SDP中的描述显示视频流 。SDP文件并不需要手工编写 , 在运行时它会显示命令行所对应的SDP定义 , 如下图所示 。
也可以用重定向将输出写入一个SDP文件 , 如:
ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234 > rtp.sdp
下面就是使用VLC显示的接收到的视频流 。
5. 转发USB摄像头的视频流
前面演示了将MP4文件转换为视频流 , 我们也可以将USB摄像头采集的内容实时转发到PC上 , 使用下面的命令行即可 。
ffmpeg -y -t 15 -r 25 -f video4linux2 -i /dev/video0 -f rtprtp://192.168.0.105:1234 > usb.sdp
再使用下面的命令行就可以看到实时抓取的USB摄像头的视频流了:
【发烧友实测 | 用飞凌OKA40i-C开发板玩转FFmpeg】ffplay -protocol_whitelist "file,udp,rtp" -i usb.sdp