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

ffmpeg获取组播中指定视频流、音频流(通过pid、program)首发

👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:Love And Program的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主

ffmpeg从组播流中找到特定流

  • 前情提要
  • 工具
  • 背景提要
  • 分析流
  • ffmpeg通过pid识别流
  • ffmpeg通过program识别流
  • 参考
  • 最后

前情提要

        全网未搜索到相关资料,故研究ffmpeg手册终于解决问题,关键字:组播流、rtsp流、rtp流通过pid、program ID选择特定视频流与音频流数据。

工具

  1. ffmpeg7.1
  2. python3.10

背景提要

        众所周知,想要获取流信息,有一个必不可少的参数,那就是map,正常使用map可以应对绝大多数情况,比如:
(-map参数用于精确控制输入文件中的流(如音频、视频、字幕等)如何映射到输出文件中。它允许用户选择特定的流,并决定它们在输出文件中的排列顺序。)

ffmpeg -i udp://* -map 0:0  -c copy output_h264_aac.ts -y

在这里插入图片描述
        本身只有一个流,-map参数不用加也可以直接选择,然后问题来了,如果存在两个,甚至10个流,该如何选择呢?

分析流

        首先我们要分析流情况,通过下面这条命令进行查询:

ffprobe -i temp.mp4

        看到以下数据,这里需要关注Stream后数据,正常通过#0:0、#0:1即可完成数据流选择,但是当前我们希望要 Program 2该如何操作呢?

  Program 1 Metadata:service_name    : service_provider: Stream #0:0[0xc8]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/sStream #0:1[0x64]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn
Stream mapping:Stream #0:0 -> #0:0 (copy)
Output #0, mpegts, to 'output_h264_aac.ts':Metadata:encoder         : Lavf61.7.100Stream #0:0: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/sProgram 2 Metadata:service_name    : service_provider: Stream #0:3[0xc9]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/sStream #0:9[0x63]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn

        回复:你可以直接使用-map对应0:3、0:9**(如下)**,也是没问题的,如果这部分数据是变化的呢?经过多次测试,Stream #0:4[0xc9]、Stream #0:5[0xc9]都有可能名单时后面的16进制数不会改变,也就是他的 pid 值program ID

ffmpeg -i udp://* -map 0:0 -map 0:1  -c copy output_h264_aac.ts -y

ffmpeg通过pid识别流

  • 通过流 ID(例如 MPEG-TS 容器中的 PID)来匹配流。
ffmpeg -i udp://* -map 0:#0xc8 -map 0:#0x64  -c copy output_h264_aac.ts -y

在这里插入图片描述
成功获取到指定数据流

ffmpeg通过program识别流

  • 匹配程序中 ID 为program_id的流。如果 使用additional_stream_specifier,则它匹配既属于程序一部分又匹配additional_stream_specifier的流
ffmpeg -i udp://* -map 0:p:1  -c copy output_h264_aac.ts -y

在这里插入图片描述
成功获取到指定数据流

参考

在这里插入图片描述

最后

同样图片里面还有其他方式可以获取到指定数据流,欢迎评论交流

http://www.lqws.cn/news/522541.html

相关文章:

  • 盖雅工场 2025 香港 SAP NOW 大会深度解析:AI 重构亚太劳动力管理数字化生态
  • Nginx服务部署与配置
  • DexGraspVLA:面向通用灵巧抓取的分层VLA-2025.5.22-北京大学
  • HTML表格元素
  • Spring 用的是什么动态代理?它是怎么配置的?
  • fluentd + elasticsearch + grafana 不能显示问题
  • 16.7 Prometheus+Grafana实战:容器化监控与日志聚合一站式解决方案
  • Linux远程机器无法连接-------解决方案
  • 开源代码修复新标杆——月之暗面最新开源编程模型Kimi-Dev-72B本地部署教程,自博弈修复 Bug
  • AI知识库搭建需要的开源技术方案
  • C#.Net筑基-优雅LINQ的查询艺术
  • 基于Hp感染的慢性胃炎居家管理小程序的设计与实现(消息震动)
  • 连锁企业网络互联方案对比:MPLS专线 vs 内网穿透
  • MySQL为什么默认引擎是InnoDB?
  • 永磁同步电机无速度算法--基于三角函数锁相环的滑模观测器
  • django 中间件
  • 打造丝滑的Android应用:LiveData完全教程
  • YOLOv8 改进点详解
  • 联邦学习中的本地迭代误差与全局聚合误差
  • CSMatIO库的安装与C#实现.mat文件生成
  • 数据库系统总结
  • cocos2 实现全局音量管理
  • 51c嵌入式~CAN~合集2
  • 数据文件写入技术详解:从CSV到Excel的ETL流程优化
  • 使用AkShare获取股票报表
  • [省选联考 2025] 推箱子
  • Java 的强制类型转换
  • Sortablejs动态同类型穿插
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • 创新让生活更美好丨“鑫亘科技亮相2025上海CMEF,创新医疗材料引领未来!”