首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解复用UDP/RTP多节目传输流

解复用UDP/RTP多节目传输流
EN

Stack Overflow用户
提问于 2014-07-22 23:15:24
回答 2查看 827关注 0票数 0

我正在使用Directshow处理UDP/RTP多程序传输流。我希望在一个单一的图形解码不同程序带来的音频通道。如何配置多路分解器才能实现这一点?

使用GraphEdit,由以下组成的基本图形:

网络接收器-> MS多路分解器-> PSI解析器

允许我查看与每个节目相关联的节目列表和音频/视频频道。如果我在PSI解析器属性中选择了程序、音频和视频PID,则会呈现内容。现在,如何在同一个图中同时渲染来自不同程序的多个通道?

我试过了:

1)通过PSI解析器属性对话框。第一个配置是正常的,但是当我配置第二个音频/视频/程序时,旧的内容呈现被新的配置所取代。使用这种方法通过API构建图形会带来相同的结果:只有第一个配置有效。如果我添加其他管脚,只有当配置与第一个管脚相同时,我才能呈现内容。如果音频/视频PID属于不同的节目,则不会进行渲染。

2)级联两个(或更多)解复用器,配置第一个去复用器转发属于特定节目的数据包,配置第二个去复用器从接收到的流中提取音视频。对于此配置,输出引脚媒体类型=“传输流”,映射为“传输包(完整)”;PID是由PSI解析器识别的程序PID。结果:图形运行,但我得到一个黑色窗口,没有音频。

你能帮帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-29 03:22:03

如何在demux之后添加一个tee过滤器,然后将多个解析器添加到tee的输出引脚中?我想这可能行得通。

票数 0
EN

Stack Overflow用户

发布于 2014-11-09 15:56:51

现在我使用ffmpeg并生成多个输出。然后使用单独的FFmpeg实例分别对这些流进行编码。唯一可能出现的问题是,我使用的是Linux,这对于其他操作系统来说可能并不理想。

下面是主FFmpeg命令:

代码语言:javascript
复制
/usr/bin/ffmpeg -f mpegts -i "udp://@server_ip:8080?overrun_nonfatal=1&reuse=1" \
-map 0:p:1 -copyinkf -vcodec copy -acodec copy -f mpegts "udp://server_ip:8001" \
-map 0:p:2 -copyinkf -vcodec copy -acodec copy -f mpegts "udp://server_ip:8002" \
...
-map 0:p:10 -copyinkf -vcodec copy -acodec copy -f mpegts "udp://server_ip:8010"

然后,您可以让单个FFmpeg实例运行如下所示:

代码语言:javascript
复制
/usr/bin/ffmpeg -i "udp://@server_ip:8001" -vcodec libx264 -acodec libmp3lame -f mpegts rtmp://other_server:port

希望这能帮助别人找到正确的方向。当我需要帮助的时候,我希望这是一个简单的解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24891218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档