在Qt 5.12.2中使用FFmpeg/LibAV流式传输和播放即时转换的AAC音频

Streaming and Playing On-the-fly Converted AAC Audio in Qt 5.12.2 Using FFmpeg/LibAV

提问人:Shlx 提问时间:11/17/2023 更新时间:11/17/2023 访问量:33

问:

我目前正在开发一个Qt(5.12.2)项目。我正在尝试播放编码为 AAC 但存储在 MPEG-4 容器中的音频文件,使其无法轻松播放。目前的想法是在用户尝试播放文件时使用 ffmpeg / libAV 即时转换文件。怎么可能

  1. 在转换文件时流式传输文件,以及
  2. 在QMediaPlayer中打开流句柄,播放文件?

我尝试在命令行上使用 ffmpeg 在转换时制作 RTSP 流,但无法让它正常工作。在摆弄时,我使用以下命令得到了一个有效的 RTP 流(无转码):

ffmpeg -re -f mp3 -i test.mp3 -acodec libmp3lame -ab 128k -ac 2 -ar 44100 -f rtp rtp://127.0.0.1:1234

我在网上找到的大多数例子都只涉及视频流。我也无法找到明确的答案,如果在我的 Qt 版本上甚至可以打开流(无法更新)。

干杯

Qt FFmpeg 音频流

评论

1赞 musicamante 11/17/2023
我现在不记得那个特定的 Qt 版本,但 QMediaPlayer 应该能够处理 rtp 流。如果问题只是关于容器/编解码器的组合,那么我们在谈论什么操作系统?
0赞 Shlx 11/21/2023
我需要它在 Windows 和 MacOS 上运行,目前优先考虑 Windows。我读到这取决于平台后端,所以对于 Windows,这些是支持的格式:learn.microsoft.com/de-de/windows/win32/directshow/......我们将不得不依靠用户安装额外的编解码器来执行其他任何操作。
0赞 Shlx 11/21/2023
顺便说一句,我无法让 QMediaPlayer 打开流。我像这样试过......Qurl url = QUrl(“rtp://127.0.0.1:1234”);m_pPlayer->setMedia(url);m_pPlayer->play();...并得到一个 ResourceError。在 VLC 中打开流工作正常
1赞 musicamante 11/22/2023
VLC有自己的内置解码,不依赖于操作系统库。如果您的软件许可证兼容,您可以考虑使用 libVLC

答: 暂无答案