标题:不好用捶我/历时十年磨一剑/视频播放组件/一个地址涵盖所有的需求/通过地址传入参数
作者:liudianwu
日期:2025-06-25 13:52
内容:
## 一、前言说明
一个强大的视频播放组件,除了基础的功能外,还必须涵盖各种现场实际需求,比如希望按照tcp方式打开rtsp地址,希望按照指定帧率采集本地桌面等。提供各种需求对应的结构体参数,这些参数可以单个函数设置,也可以统一设置,还有个最方便的设计技巧就是,通过打开的url传入对应的参数,比如通过竖杠隔开,定义一套规范,哪个占位符对应哪个参数,这样就超级灵活了,用户只需要在对应占位符填入自己想要的参数即可,省去了各种代码解析。主要分三个大类,通用地址、本地设备、本地桌面。
通过一个地址涵盖所有的需求设个设计绝对是煞费苦心,耗费了相当多的时间去设计和打磨,终于形成最终的版本,经过大量的用户和实际现场测试,好评如潮,要的就是这种设计,专门为用户考虑,怎么方便怎么来。
### 1.1 特别提示
1. 由于编解码涉及到很多参数,一般都按照默认参数进行处理。
2. 部分用户有时候希望通过填入的播放地址就带上这些信息,比如通信协议、桌面采集的分辨率、编码保存是否转码、转码是否缩放原图等。
3. 各种参数设置有个优先级,优先取地址中带的,没有带则取结构体中的,还没有则取默认值。
4. 有些值会根据具体情况自动调整,比如本地设备采集没有硬解码,udp开头的视频流强制用udp协议,有些不支持硬解的格式自动将硬解码=none。
5. 对于需要在地址中指定参数,对应占位符不填的需要占位符留空,不可以跳过。
6. 占位符中填了对应参数的必须严格按照指定的格式要求,不按照则很可能导致解析失败。
7. 参数用英文竖杠 | 隔开。
8. **监控解码组件支持各种场景需求的格式,你能想到的情况都考虑到了,经过近十年的长期实战积累而成。强烈建议看完下面的格式要求。**
### 1.2 通用字段
1. **encode开头的参数表示是编码用的,也就是保存文件,只有当开启录像存储的时候才会用到,如果要重新编码,系统设置那边视频参数编码下拉框要选择自动,默认可能是不编码。**
2. encodeVideoRatio表示视频压缩比率,对应bit_rate的值,在不改变分辨率的情况下,通过调整这个参数来控制保存文件体积的大小。**如果值大于1,则表示关键帧间隔(也叫 I 帧间隔),比如50则关键帧间隔50,可以极大的提高压缩比并降低文件体积。默认保存视频用的间隔是原视频流的fps。目前不是很建议调整保存视频的关键帧间隔,可以小于fps,不建议大于fps,如果间隔超过了fps,这个可能会导致保存视频的时长不对。比如fps是25,关键帧间隔强制改成了50 ..