社区
多媒体/流媒体开发
帖子详情
奇怪!DirectShow的IMediaSeeking得到的视频长度(帧数)不对?
tonnyue
2004-04-18 10:04:33
程序老是出现异常,调试半天才发现DirectShow得到的视频的帧数不对。我是用
CComQIPtr< IMediaSeeking, &IID_IMediaSeeking > pSeeking ( pGraph )
pSeeking->GetDuration( &m_llDuration )
但得到的长度不对。
有的视频又是对的,有的不行。这是为什么呢?
请高手指点!
...全文
387
17
打赏
收藏
奇怪!DirectShow的IMediaSeeking得到的视频长度(帧数)不对?
程序老是出现异常,调试半天才发现DirectShow得到的视频的帧数不对。我是用 CComQIPtr pSeeking ( pGraph ) pSeeking->GetDuration( &m_llDuration ) 但得到的长度不对。 有的视频又是对的,有的不行。这是为什么呢? 请高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tonnyue
2004-05-13
打赏
举报
回复
我发觉这可能是DirectShow 本身的问题了
我看了,在ACDSEE中播放时也存在这个问题
tonnyue
2004-05-06
打赏
举报
回复
请哪位高手指点一下:
精确的帧数如何获得呢?
lornasnet
2004-05-05
打赏
举报
回复
上述问题我也碰倒过,不知道为什么,不过那时我用的是mci!
tonnyue
2004-05-04
打赏
举报
回复
但我先查询了
支持后我才用的
fenglianghuai
2004-04-28
打赏
举报
回复
有的解码器是不支持精确到Frame定位
chenlangren
2004-04-26
打赏
举报
回复
hr = pSeeking->GetDuration( &Duration);
VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt.pbFormat;
REFERENCE_TIME TimePerFrame;
TimePerFrame = vih->AvgTimePerFrame;
LONGLONG frame = NULL;
frame = Duration/TimePerFrame;
tonnyue
2004-04-26
打赏
举报
回复
//Get the length of video
LONGLONG llDuration = 0;
hr = pSeeking->GetDuration( &llDuration );
if( FAILED( hr ) )
{
printf( "Failed in GetDuration! hr=0x%x\r\n", hr );
return hr;
}
GUID Frm_Format = TIME_FORMAT_FRAME;
pSeeking->ConvertTimeFormat(&m_llDuration, &Frm_Format, llDuration, NULL);
这样还是得不到m_llDuration
tonnyue
2004-04-26
打赏
举报
回复
hr = pSeeking->GetDuration( &Duration);
会根据不同的格式,返回不同的值。
但TimePerFrame = vih->AvgTimePerFrame;的格式是固定的
tonnyue
2004-04-24
打赏
举报
回复
DirectShow好象对前面的两个B帧解不出来
dongfa
2004-04-23
打赏
举报
回复
看看视频的制式,是PAL的还是NTSC的,制式不同换算的帧数是不一样的.
tonnyue
2004-04-23
打赏
举报
回复
to:dongfa(阿东)
DirectShow 对制式是怎么支持的?
tonnyue
2004-04-21
打赏
举报
回复
得到的长度还是不对,转换成帧后要少10帧。
我对几个视频文件测试都是这样了。
tonnyue
2004-04-21
打赏
举报
回复
我试一下
gxqcdit
2004-04-20
打赏
举报
回复
根据的到的格式转换.
tonnyue
2004-04-20
打赏
举报
回复
对
我设置了以帧为格式,但有时又设置不起。
如果不是以帧为单位,我怎么得到视频的帧长度呢?
huqiming
2004-04-18
打赏
举报
回复
IMediaSeeking::GetTimeFormat
看看支持什么方式再说,一般以时间为单位的,关键看sourcefilter是否支持。
gxqcdit
2004-04-18
打赏
举报
回复
问题说得不详细.
得到的文件长度有可能不是以帧为单位.有的文件是以Media_Time作为长度度量.
IMediaSeeking::GetDuration()
The GetDuration method retrieves the duration of the stream.
调用IMediaSeeking::GetTimeFormat()可以得到该文件的时间格式.
DirectShow
过滤器-
视频
渲染过滤器
本过滤器为
视频
渲染过滤器。 参见本过滤器的介绍文章:https://blog.csdn.net/h3974/article/details/134233245 过滤器名称:
视频
渲染 过滤器GUID:{F783F06D-3E50-4E3F-B5FD-8F279619C836} DLL注册函
数
名:Dll...
C#调用
DirectShow
lib库播放
视频
1、c#调用
DirectShow
包播放
视频
,nuget加载
directshow
lib.standard包 2、加载资源文件: graphBuilder.RenderFile, 赋值播放句柄: videoWindow.put_Owner(this.panel1.Handle); 播放:m_p
Media
Control.Run(); 代码...
DirectShow
对avi
视频
按
帧
设置慢放功能
...
DirectShow
对avi
视频
按
帧
设置慢放功能需要
视频
源支持
帧
操作。 可以通过I
Media
Seeking
::IsFormatSupported(&TIME_FORMAT_FRAME);判断是否支持; 如果支持然后通过I
Media
Seeking
;:SetTimeFor
DirectShow
抓取
视频
帧
ISampleGrabber
DirectShow
抓取
视频
帧
ISampleGrabber2010-04-25 16:46http://hi.baidu.com/johnzhjfly/blog/item/b0477bd73f65edd1a144dfb7.html<br />下面是根据msdn(参见http://msdn.microsoft.com/en-us/library/dd407288...
DirectShow
之
视频
处理
在软件中,主要实现了
视频
文件的分割,
视频
文件的合成,
视频
的格式转换,图像序列合成
视频
,
视频
的一些特效处理。
视频
处理系统结构 在软件上,本系统的工程主要是
DirectShow
链路,主要包括源Filter,音
视频
...
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章