FFplay源码分析-日志 - C语言音视频技术

/ 0评 / 0

本文的环境是局域网RTMP直播,SRS部署在另一台电脑,播放是另一台电脑。ffplay 播放命令如下:

.\ffplay  -fflags nobuffer -x 800 -f flv -i  rtmp://192.168.0.123/live/test

本文主要是讲解如何查询 ffplay 的 打印出来的日志。如下图:

日志的代码如下:

结合代码分析,上图中的 8.11 是音频播放的时间,也就是音频已经播放了 8.11 秒,然后 A-V 就是音视频时钟差值,这个 值会不断维持在一个比较小的范围,音视频不会差异太多,然后 fd 是重点, fd 是 frame drop 的缩写,所以可以看到 丢帧不断的增加,也就是视频卡顿的原因,为什么丢帧,是因为我们 ffplay 开启了 nobuffer,所以视频帧有太多没及时丢进去队列就超时了,就得丢弃,然后追赶音频。

对于局域网通信,其实设定 200~400 毫秒的延迟,就能让播放流畅,不卡顿,但是 ffplay 好像不支持这种命令参数,只能开 buffer 或者不开,开了延迟高达 5~ 7秒,不开延迟降低到100毫秒以下,但是经常丢帧,导致卡顿,。

补充:用ZLmediakit 不会,可能是 ZL 的转发性能高一些


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,或者希望交流音视频技术的,可以加我微信 Loken1。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注