我正在开发一个应用程序,以便在使用SourceReader的视频流中捕获.MP4文件(视频(USB摄像头)和音频(任何麦克风))。
我的代码为所有API返回成功并能够保存视频。我面临3个问题。
请在以下保管箱链接中找到我的代码: https://www.dropbox.com/s/eddwdc1z9wsoh04/VideoRecord.txt?dl=0
没有任何问题,我能够使用捕获引擎技术捕获音频和视频,但此技术支持Windows 8.我的应用程序必须支持Windows 7。
请告诉我是否遗漏了配置音频和视频的内容?帮我解决这个问题。
提前致谢
答案 0 :(得分:0)
我看到很少的错误。 首先,使用MF_SOURCE_READER_FIRST_VIDEO_STREAM调用ReadSample。这将只读取视频样本。您应该使用MF_SOURCE_READER_ANY_STREAM调用ReadSample(第一次和OnReadSample内部),以使其同时读取视频和音频样本。
其次,以下两行是错误的:
hr = m_pWriter->WriteSample(0, pSample);
hr = m_pWriter->WriteSample(1, pSample);
您应该根据OnReadSample中的dwStreamIndex值调用带有相应流索引的WriteSample。例如,在您的情况下:
if(dwStreamIndex == 0)
hr = m_pWriter->WriteSample(m_dwVideoStreamIndex, pSample);
else if(dwStreamIndex == 1)
hr = m_pWriter->WriteSample(m_dwAudioStreamIndex, pSample);