gpt4 book ai didi

c++ - 使用 ffmpeg-lib 实现一个简单的 MPEG-TS muxer

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:12 28 4
gpt4 key购买 nike

我有一个应用程序可以在存储在缓冲区中的 LPCM 中记录原始音频数据。我想将数据封装在传输流中,并通过 UDP 将该传输流发送到另一台主机上的流分段器(根据 HTTP Live Streaming 规范)。

FFmpeg 提供了一个命令行实用程序来执行此操作,但将文件作为输入ffmpeg -re -i output.aac -acodec copy -f mpegts udp://127.0.0.1:5555

我的第一个想法是使用 FFmpeg API,尤其是 libavformat 库。 libavformat 是否提供了一个复用器,我可以使用它来将 LPCM 中的音频封装到传输流中,还是我必须从头开始实现它?

我找到了这个源代码 https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegts.c但我不确定它是否真的符合我的要求。

谢谢你的帮助,

最佳答案

因此,根据您关于不需要它在 TS 中一定是 LPCM 的评论,您将需要:

  1. 解码您的音频/读取帧
  2. 将其编码为适合在传输流中发送的内容,例如mp3 或 AAC 我相信这是选项列表:https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegts.h#L45-L64
  3. 将其打包在适合您的网络条件的 TS 中,例如数据包大小等
  4. 通过UDP发送

这里有一个合理的例子:https://github.com/rvs/ffmpeg/blob/master/libavformat/output-example.c

正如 szatmary 之前的回答中提到的,您也可以将其通过管道传输到 ffmpeg,这可能是最简单的

关于c++ - 使用 ffmpeg-lib 实现一个简单的 MPEG-TS muxer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49862036/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com