C++ 如何使用编码的AAC数据手动创建AVPacket以发送mpegts?

C++ 如何使用编码的AAC数据手动创建AVPacket以发送mpegts?,c++,ffmpeg,aac,C++,Ffmpeg,Aac,我正在开发一个应用程序,使用FFMPEG API发送mpeg2ts流。(avio_开放、avformat_新流等) 问题是应用程序已经有AAC-LC音频,所以音频帧不需要编码,因为我的应用程序只是绕过从套接字缓冲区接收的数据 要使用FFMPEG打开和发送MPEGT,我必须拥有AVFormatContext数据,据我所知,该数据是从FFMPEG API为编码器创建的 我可以用编码的AAC-LC数据手动创建AVFormatContext吗?或者我应该对数据进行解码和编码?我知道的信息是采样器、编解码

我正在开发一个应用程序,使用FFMPEG API发送mpeg2ts流。(avio_开放、avformat_新流等)

问题是应用程序已经有AAC-LC音频,所以音频帧不需要编码,因为我的应用程序只是绕过从套接字缓冲区接收的数据

要使用FFMPEG打开和发送MPEGT,我必须拥有AVFormatContext数据,据我所知,该数据是从FFMPEG API为编码器创建的

我可以用编码的AAC-LC数据手动创建AVFormatContext吗?或者我应该对数据进行解码和编码?我知道的信息是采样器、编解码器、比特率


任何帮助都将不胜感激。提前感谢。

是的,如果您的容器支持,您可以按原样使用编码数据。这里涉及两个步骤-编码和muxing。编码压缩数据,muxing将其混合在输出文件中,因此数据包被正确地交织。FFMpeg发行版中的Muxing示例帮助我实现了这一点

您还可以查看以下类:-此文件来自我的一个项目,包含视频编码器。从第402行开始,您将看到非转换音频的设置-这是一种黑客的方式,但它起作用了。不幸的是,我最终还是重新编码了音频,因为对于我的格式,不可能实现我所需要的帧完美同步