查看: 2124|回复: 9

如何判断一段视频播放完毕

[复制链接]

该用户从未签到

发表于 2011-4-1 10:34:11 | 显示全部楼层 |阅读模式
osgmovie例子中,怎么按顺序播放多个视频文件呢?关键是如何判断一段视频播放完毕呢?

相关帖子

该用户从未签到

发表于 2011-4-1 12:52:25 | 显示全部楼层
ImageStream::getStatus()

该用户从未签到

 楼主| 发表于 2011-4-1 14:25:13 | 显示全部楼层
回复 2# array

我用以下代码做了测试,发现一个视频播放完毕之后,输出永远都是playing;视频不自动停止吗?
  case(osgGA::GUIEventAdapter::FRAME):
  if(osg::ImageStream:LAYING==_imageStreamList[0].get()->getStatus())
   std::cout<<"playing"<<std::endl;
  else if(osg::ImageStream::PAUSED==_imageStreamList[0].get()->getStatus())
   std::cout<<"pause"<<std::endl;
  else if(osg::ImageStream::REWINDING==_imageStreamList[0].get()->getStatus())
   std::cout<<"rewind"<<std::endl;
  else
   std::cout<<"invalid"<<std::endl;

该用户从未签到

 楼主| 发表于 2011-4-1 14:26:22 | 显示全部楼层
补充:我设置的是NO_LOOPING

该用户从未签到

发表于 2011-4-1 15:23:05 | 显示全部楼层
我看了一下各个插件的代码,看来视频插件们并没有实现播放结束后改变status的功能,也许您可以换而用getReferenceTime()来判断

该用户从未签到

 楼主| 发表于 2011-4-1 15:36:25 | 显示全部楼层
我前段时间好像试过getReferenceTime()方法,记得有个缺陷是,
假如一段10秒的视频,我在程序中也设定结束时间为10秒,
但如果破电脑卡的话,会出现视频还没结束,而程序就判定它结束了!

该用户从未签到

发表于 2011-4-1 19:41:15 | 显示全部楼层
可以考虑改改这个插件,添加个小功能,给osg做点贡献,呵呵

该用户从未签到

 楼主| 发表于 2011-4-2 17:19:39 | 显示全部楼层
请问osgmoive是在哪个地方调用的插件?imagestream里面也没啥线索啊!

该用户从未签到

 楼主| 发表于 2011-4-2 17:34:15 | 显示全部楼层
QuicktimeImageStream中,函数GoToEndOfMovie(_movieData->getMovie())又是在哪里实现的?

该用户从未签到

发表于 2011-4-6 08:40:12 | 显示全部楼层
osgDB::readImageFile()就可以自己搜索并调用视频文件了,这一点OSG封装的非常好。至于GoToEndOfMovie,我认为这是Quicktime SDK的函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表