【发布时间】:2016-09-20 22:41:04
【问题描述】:
使用 MS Media Foundation,我正在尝试从图像帧创建视频 (H.264/AAC),并在各个位置添加由音效组成的音轨。音效之间的音频流会有间隙。我正在使用配置有音频和视频流的IMFSinkWriter(详情如下)。我目前正在测试仅在视频中放置 2 秒的单一音效。 MP4 文件呈现无错误,并在 Windows 下(通过 Windows Media Player 或“电影和电视”)正确播放(声音效果在正确的位置播放)。但是,当我在 MacOS (QuickTime) 下播放视频时,音频没有正确同步。音效出现的时间比预期的要早得多。
详情
我的SinkWriter 配置了视频流,输出子类型为MFVideoFormat_H264,输入子类型为MFVideoFormat_RGB32。音频流配置了输出子类型MFAudioFormat_AAC 和输入子类型MFAudioFormat_PCM(匹配提供音频样本的IMFSourceReader)。
我先写所有的视频帧,然后再写音频样本。在编写音频时,我使用SendStreamTick(每 0.5 秒)当音频有间隙时,无论是在音效之前还是之后。我还在第一个音频样本上设置了MFSampleExtension_Discontinuity。我也尝试在音效后发送NotifyEndOfSegment,但这似乎没有什么不同。
我没有编写示例描述框,因为我相信它是为我的配置自动生成的。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
在合适的视频编辑器中打开并检查视频和音频轨道的时间。可能是您的帧数比同步音轨多。还要检查帧持续时间。
标签: video mp4 ms-media-foundation