首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP组播MPEG TS流FFMPEG重编码音频的奇怪问题

UDP组播MPEG TS流FFMPEG重编码音频的奇怪问题
EN

Stack Overflow用户
提问于 2022-01-13 18:28:25
回答 1查看 162关注 0票数 -1

我想重新编码音频流从mp2到aac从一个udp组播MPEG TS流上另一个。

我有一个udp多播mpeg ts streram与一个视频,3个音频,和一个字幕流在里面。我想将音频流的协议从mp2更改为aac。如果忽略字幕流,一切正常。

代码语言:javascript
复制
ffmpeg -re -i udp://224.2.2.42:1234 -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a:0 libfdk_aac -c:a:1 libfdk_aac -c:a:2 libfdk_aac -f mpegts "udp://224.4.0.1:1234?pkt_size=1316"
代码语言:javascript
复制
Stream mapping:                                                                                                        
  Stream #0:0 -> #0:0 (copy)                                                                                           
  Stream #0:1 -> #0:1 (mp2 (native) -> aac (libfdk_aac))                                                               
  Stream #0:2 -> #0:2 (mp2 (native) -> aac (libfdk_aac))                                                               
  Stream #0:3 -> #0:3 (mp2 (native) -> aac (libfdk_aac))

用阿斯特拉分析,一切都是OK

代码语言:javascript
复制
astra --analyze udp://224.4.0.1:1234
Jan 13 20:07:42: INFO: Bitrate: 6434 Kbit/s
Jan 13 20:07:43: INFO: Bitrate: 5821 Kbit/s
Jan 13 20:07:44: INFO: Bitrate: 3011 Kbit/s
Jan 13 20:07:45: INFO: Bitrate: 3536 Kbit/s
Jan 13 20:07:46: INFO: Bitrate: 1742 Kbit/s
Jan 13 20:07:47: INFO: Bitrate: 4460 Kbit/s
Jan 13 20:07:48: INFO: Bitrate: 3819 Kbit/s
Jan 13 20:07:49: INFO: Bitrate: 5915 Kbit/s
Jan 13 20:07:50: INFO: Bitrate: 4183 Kbit/s

但是,如果我包括和字幕流与以下:

代码语言:javascript
复制
/ffmpeg -re -i udp://224.2.2.42:1234 -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -c:v copy -c:s copy -c:a:0 libfdk_aac -c:a:1 libfdk_aac -c:a:2 libfdk_aac -f mpegts "udp://224.4.0.1:1234?pkt_size=1316"
代码语言:javascript
复制
Stream mapping:                                                                                                        
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (mp2 (native) -> aac (libfdk_aac))
  Stream #0:2 -> #0:2 (mp2 (native) -> aac (libfdk_aac))
  Stream #0:3 -> #0:3 (mp2 (native) -> aac (libfdk_aac))
  Stream #0:4 -> #0:4 (copy)

我用阿斯特拉得到了这个--分析udp://224.4.0.1:1234

代码语言:javascript
复制
Jan 13 20:10:36: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:37: INFO: Bitrate: 11763 Kbit/s
Jan 13 20:10:38: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:39: INFO: Bitrate: 9198 Kbit/s
Jan 13 20:10:40: INFO: Bitrate: 1686 Kbit/s
Jan 13 20:10:41: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:42: INFO: Bitrate: 14344 Kbit/s
Jan 13 20:10:43: INFO: Bitrate: 1273 Kbit/s
Jan 13 20:10:44: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:45: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:46: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:47: INFO: Bitrate: 20570 Kbit/s
Jan 13 20:10:48: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:49: INFO: Bitrate: 11492 Kbit/s
Jan 13 20:10:50: INFO: Bitrate: 4231 Kbit/s
Jan 13 20:10:51: INFO: Bitrate: 0 Kbit/s
Jan 13 20:10:52: INFO: Bitrate: 0 Kbit/s

有人能解释一下并给我解决办法吗?

我只想将音频流的协议从UDP MPEG TS多播流从mp2更改为aac,并将其流到另一个多播地址,如上面的示例所示。就这样

伊万

EN

回答 1

Stack Overflow用户

发布于 2022-01-18 08:08:25

我找到了解决办法。这对于ffmpeg来说是个严重的问题,一位来自ffmpeg聊天室的好人告诉了我解决方案。众所周知,libavformat等待字幕的时间可能太长了。

这里有一个修补程序:

https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200311213635.51736-1-rcombs@rcombs.me/

如果没有此修补程序,ffmpeg将在输入流包含的时间段内“吐出”数据包,并在视频/音频轨道中播放字幕跟踪。

这个补丁在中,而不是中,包含在Debian/Ubuntu的ffmpeg预编译包中。您应该应用它并从源代码编译ffmpeg!

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

https://stackoverflow.com/questions/70701367

复制
相关文章

相似问题

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