使用IMFSourceReader(Microsoft媒体基金会)进行音频流传输
audio streaming with IMFSourceReader (Microsoft Media Foundation)
我使用 MFCreateSourceReaderFromByteStream 创建一个 IMFSourceReader,其中包含一个自定义的 IMFByteStream 从远程 HTTP 源获取数据。
当源是 m4a 文件时,一切都按预期工作。但是,当源是 mp3 时,函数 MFCreateSourceReaderFromByteStream 在下载整个文件之前不会返回。关于如何避免这种行为并在下载结束前开始解码音频的任何想法?
假设您使用的是默认媒体基础源,也许这是 MP3 文件源和 MPEG-4 文件源的默认行为。
要确认这一点,您可以尝试使用自定义音频 mpeg 文件源,例如我实现的这个: MFSrMpeg12解码器
此媒体基础源仅管理 mp1/mp2 音频文件,并执行解码。这不是mp3,但是一旦有有效的音频mpeg标头,它就会提供字节流,并且不会读取完整文件(您可以相信我...
这将确认默认 MP3 文件源需要在提供字节流之前读取完整文件。
一个可能的答案是 MP3 文件源读取整个文件以查看是否存在可变比特率,从而提供文件的正确持续时间 (MF_PD_DURATION(。 对于 m4a 音频文件,持续时间由 moov atom 提供,因此无需读取完整文件。
相关文章:
- 使用IMFSourceReader(Microsoft媒体基金会)进行音频流传输
- FFmpeg av_read_frame从音频流返回数据包
- 媒体基础将音频流添加到视频文件
- 解码 OPUS 音频流时的慢动作效果
- 如何将静默音频数据写入音频流
- 如何在SDL2音频流数据上执行实时FFT
- 使用音频设备播放WebRTC C++应用程序的音频流
- 如何将音频流从网页发送到C++服务器?
- 媒体基础多音频流文件解码错误
- ffmpeg H264一次对帧进行编码,用于网络流传输
- 记录RTSP音频流G.726而无需转码
- 在C++中使用 Windows API 播放音频流
- 使用 ffmpeg 的文件中的音频流
- 带有位置通知的音频流
- 正在将音频流读取到输出设备
- 音频流C++服务器/客户端
- 在c++中使用ALSA捕获默认音频流
- FreeSWITCH:有没有办法通过本机API从其他分支获取音频流?
- 我的OpenAL c++音频流缓冲区故障
- 从c++ ASIO库中用c#录制音频流