C++ 更正实时IMFMediaSource时间戳 我有两个摄像机,下面是我试图在一个媒体基础拓扑中使用的。以下是我的拓扑结构摘要:
网络摄像头-->MJPG解码器-->自定义MFT-->H264编码器-->MP4文件接收器 问题是生成的MP4文件具有不正确的持续时间和时间刻度标记,无论是对于MP4容器还是H264流。我可以用MP4Box或YAMB这样的工具轻松地纠正这个问题,但我的最终目标是流式播放视频 我已经确定的一个潜在原因是相机源生成的样本不是在时间0开始的。根据中的项目符号#2,活动源的时间戳应该从0开始 沿着这条路线,我尝试了以下方法来“更正”样本时间戳:C++ 更正实时IMFMediaSource时间戳 我有两个摄像机,下面是我试图在一个媒体基础拓扑中使用的。以下是我的拓扑结构摘要:,c++,windows,winapi,video,ms-media-foundation,C++,Windows,Winapi,Video,Ms Media Foundation,网络摄像头-->MJPG解码器-->自定义MFT-->H264编码器-->MP4文件接收器 问题是生成的MP4文件具有不正确的持续时间和时间刻度标记,无论是对于MP4容器还是H264流。我可以用MP4Box或YAMB这样的工具轻松地纠正这个问题,但我的最终目标是流式播放视频 我已经确定的一个潜在原因是相机源生成的样本不是在时间0开始的。根据中的项目符号#2,活动源的时间戳应该从0开始 沿着这条路线,我尝试了以下方法来“更正”样本时间戳: 使用IMFSample::SetSampleTime在我的
IMFSample::SetSampleTime
在我的自定义MFT中重新计算采样时间MEMediaSample
和MEStreamTick
事件关联的时间戳0xC00D4A44
(MF\u E\u SINK\u NO\u SAMPLES\u PROCESSED
),生成的MP4文件在“mdat”atom声明后突然结束
摄像机
- 罗技BCC950会议室
- Thinkpad W520集成摄像头
使用的系统(两者都有相同的问题):
- Windows7专业版x64
- Windows 8 x86
问题:
尝试为每个采样标志MFSampleExtension\u不连续性重置
pSample->SetUINT32( MFSampleExtension_Discontinuity, FALSE );
尝试为每个采样标志MFSampleExtension\u不连续性重置
pSample->SetUINT32( MFSampleExtension_Discontinuity, FALSE );