美畅物联丨如何通过ffmpeg排查视频问题

news/2024/12/2 11:52:14/

在我们日常使用畅联AIoT开放云平台的过程中,摄像机视频无法播放是较为常见的故障。尤其是当碰到摄像机视频不能正常播放的状况时,哪怕重启摄像机,也仍然无法使其恢复正常的工作状态,这着实让人感到头疼。这个时候,可以借助FFmpeg程序来辅助进行判断,从而准确找出究竟是什么原因导致了视频播放异常。

FFmpeg是一款在多媒体处理领域声名远扬的开源工具,其功能覆盖视频处理的众多方面,在视频问题排查工作里起着不可替代的重要作用。

首先,要执行拉取摄像机RTSP流并将其存储至本地的操作。RTSP(实时流传输协议)是一种在流媒体传输领域广泛应用的网络协议,能够有效地获取摄像机的实时视频流。在拉取流时,我们通过拉流命令:

FFmpeg -rtsp_transport tcp -
i rtsp://admin:mkls1123@192.168.1.223/Streaming/Channels/102 -f avi -y ./123.avi

当拉流操作执行后,FFmpeg 会生成详细的日志信息,通过 FFmpeg 打印出的日志内容,我们能够逐步剖析问题所在之处。

以常见的拉流场景为例,如图所示:

若拉流过程中打印出 401 错误信息,依据网络通信协议规范,此错误明确指示出用户名和密码验证环节出现故障,即所使用的用户名和密码组合与摄像机设备的授权信息不匹配。在这种情形下,我们需及时修正用户名和密码为正确信息,随后再次执行拉流命令,以验证问题是否得以解决。

当成功拉取到视频流后,从所呈现的信息中可以看到,此视频流的视频格式被为 “Video: h264 (Main), yuvj420p (pc, bt709, progressive), 1280x720, 25 fps, 25 tbr, 90k tb”。其中,“h264 (Main)” 表示视频采用了 H.264 编码标准。“yuvj420p (pc, bt709, progressive)” 则涉及到视频的色彩空间和采样格式,“1280x720” 代表视频的分辨率,“25 fps” 表示视频的帧率,“25 tbr” 和 “90k tb” 则分别涉及到视频的时间基准和目标码率等参数。

音频格式为 “Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s”。其中,“pcm_alaw” 为音频的编码格式,“8000 Hz” 代表音频的采样率,“mono” 表示音频为单声道模式,“s16” 涉及音频的采样精度,而 “64 kb/s” 则为音频的码率,这些音频参数共同决定了音频的质量和传输要求。

在对视频流信息进行深入分析时,需着重关注最后一行的打印内容。

其中,fps(帧率)参数对于判断拉流的稳定性具有极为关键的参考价值。在正常播放状态下,拉流过程中所呈现的实时 fps 数值与视频格式中所标注的标准 fps 数值应当近似。

一旦出现如附图所示,拉流的 fps 数值与视频格式中的 fps 数值存在显著差异时,这便表示视频流处于不稳定的状态。

当视频流不稳定的状况出现时,我们可以登录至摄像机的管理页面进行详细查看。以海康摄像机为例,进入其管理界面后,能够直观地获取与拉流相关的各类信息。如附图中所示:

发现拉流用户数量多达 4 个,过多的拉流用户会导致网络资源被分散占用,使得每个用户所分得的带宽和系统资源相对减少,从而影响视频流的稳定传输。

除了检查拉流用户数量之外,还需对网络带宽情况进行全面排查。当网络带宽被大量占用,趋近于饱和状态时,会导致视频播放出现卡顿、延迟甚至无法播放等异常现象。

通过借助 FFmpeg 进行的排查操作,我们能够较为便捷地锁定问题所在之处。倘若经过 FFmpeg 的详尽检测,各项参数及指标均显示正常,而视频播放问题依旧存在,那么此时便可以将之前保存好的视频文件,联系相关技术团队进行深度技术排查,从而找出问题。

————————————————

关注“美畅物联”,了解更多视频汇聚及AIoT底座解决方案。


http://www.ppmy.cn/news/1551744.html

相关文章

Oracle 19c RAC单节点停机维护硬件

背景 RAC 环境下一台主机硬件光纤卡不定时重启,造成链路会间断几秒,期间数据库会话响应时间随之变长,该光纤卡在硬件厂商的建议下,决定停机更换备件,为保证生产影响最小,决定停掉该节点,另外节…

开源项目:纯Python构建的中后台管理系统

来源:Python大数据分析 费弗里 大家好我是费老师,目前市面上有很多开源的「中后台管理系统」解决方案,复杂如「若依」那种前端基于Vue,后端基于Java的框架,虽然其提供了较为完善的一整套前后端分离权限管理系统解决方…

【优选算法】模拟

目录 一、[替换所有的问号](https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/)二、[提莫攻击](https://leetcode.cn/problems/teemo-attacking/description/)三、[Z 字形变换](https://leetcode.cn/problems/zigzag-conver…

CentOS使用chrony服务进行时间同步源设置脚本

CentOS使用chrony服务进行时间同步源设置脚本 #!/bin/bash# Created: 2024-11-26 # Function: Check and Set OS time sync source to 10.0.11.100 # FileName: centos_set_time_source_to_ad.sh # Creator: Anster # Usage: # curl http://webserver-ip/scripts/centos_set…

yolov11剪枝

思路:yolov11中的C3k2与yolov8的c2f的不同,所以与之前yolov8剪枝有稍许不同; 后续:会将剪枝流程写全,以及增加蒸馏、注意力、改loss; 注意: 1.在代码105行修改pruning.get_threshold(yolo.mo…

Qt 中的 UiTools 详解

Qt 是一个功能强大的 C 跨平台开发框架,支持用户界面设计、图形渲染、事件处理等诸多功能。UiTools 是 Qt 提供的一个模块,专门用于动态加载和处理 .ui 文件。它在动态界面生成、模板化设计等场景下尤为重要。 一、什么是 UiTools? UiTools …

javaweb 前端 vue3

vue快速入门 引入createAPP这个模块,或者说这个函数 第二步,创建应用实例 调用createAPP这个函数,传递对象{},js中定义对象用{} js的分号可以加或者不加 第四步准备数据,在传递的对象中声明这个方法data,指…

七:仪表盘安装-controller node

一:工具、环境准备-controller node 二:OpenStack环境准备-controller node 三:安装服务-controller node 四:工具、环境准备-compute node 五:OpenStack环境准备-compute node 六:安装服务-compute node 七…