当前位置: 首页 > news >正文

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

在我们日常使用畅联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.lryc.cn/news/493423.html

相关文章:

  • 基于OpenCV视觉库让机械手根据视觉判断物体有无和分类抓取的例程
  • QChart数据可视化
  • 转换的艺术:如何在JavaScript中序列化Set为Array、Object及逆向操作
  • 万能门店小程序管理系统存在前台任意文件上传漏洞
  • 详解Rust泛型用法
  • 移远通信携手紫光展锐,以“5G+算力”共绘万物智联新蓝图
  • Mybatis:Mybatis快速入门
  • 微信小程序用户登录页面制作教程
  • python+django自动化平台(一键执行sql) 前端vue-element展示
  • JavaScript学习总结
  • Python 3 教程第22篇(数据结构)
  • AI时代的软件工程:迎接LLM-DevOps的新纪元
  • linux安全管理-系统环境安全
  • MindAgent部署(进行中.....)
  • 【JavaEE初阶 — 网络编程】TCP流套接字编程
  • 《气候变化研究进展》
  • D2545电动工具调速专用控制电路芯片介绍【青牛科技】
  • Unity 2020、2021、2022、2023、6000下载安装
  • 33 基于单片机的智能窗帘控制系统
  • 【CSS in Depth 2 精译_063】10.2 深入理解 CSS 容器查询中的容器
  • 记录一次 k8s 节点内存不足的排查过程
  • 探索天空中的“名字”——用Landsat影像记录你的名字形状!
  • QT6学习第四天 感受QT的文件编译
  • 透视投影(Perspective projection)与等距圆柱投影(Equirectangular projection)
  • 5 Java字符串操作
  • 【C++习题】17.二分查找算法_二分查找
  • Spring Boot英语知识网站:架构与开发
  • Unity ShaderLab 实现网格爆炸
  • 2024/11/28学习日志
  • 在shardingsphere执行存储过程