使用MS Media Foundation,我试图从图像帧创建视频(H.264/AAC),并在各个位置添加包含声音效果的音轨。声音效果之间的音频流中会存在间隙。我正在使用配有音频和视频流的IMFSinkWriter
(详情如下)。我目前正在测试仅在视频中放置2秒的单一声音效果。在Windows下(通过Windows媒体播放器或“电影&电视”),MP4文件呈现没有错误并正确播放(声音效果在正确位置播放)。但是,当我在MacOS(QuickTime)下播放视频时,音频无法正确同步。声音效果比预期的要早得多。Media Foundation - 创建MP4时的跨平台音频同步问题
详细
SinkWriter
我被配置为与视频流,用输出亚型MFVideoFormat_H264
和输入亚型MFVideoFormat_RGB32
。音频流配置为输出子类型MFAudioFormat_AAC
和输入子类型MFAudioFormat_PCM
(匹配提供音频样本的IMFSourceReader
)。
我先写所有的视频帧,然后写出音频采样。在写音频时,如果在音效之前和之后都存在音频间隙,我会使用SendStreamTick
(每0.5秒)。我还在第一个音频样本上设置了MFSampleExtension_Discontinuity
。声音效果后我也尝试发送NotifyEndOfSegment
,但这似乎没有什么区别。
我不写样本描述框,因为我相信它是为我的配置自动生成的。
任何帮助,将不胜感激。谢谢!
在合适的视频编辑器中打开并检查视频和音频轨道的时间。可能是你有更多的帧比同步音轨。同时检查帧持续时间。 –