如何判断视频已经播放完毕

kinkan 2010-03-14 12:53:41
我使用CDHtmlDialog加载了一个静态html页面,页面中嵌入了一个flash播放器,程序启动的时候视频自动开始播放,问题是我在对话框中如何判断视频已经播放完了???

flash播放器如下:

<div id="myPlayer" style="float:left"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>
<script type="text/javascript">
//播放器 , 播放器ID,宽 , 高,
var s1 = new SWFObject("mediaplayer.swf","player_id","300","300","7");
s1.addParam("allowfullscreen","true");//是否允许全屏播放
//s1.addVariable("file","video.flv");//单文件播放
s1.addVariable("file","playlist.xml");//列表播放
s1.addVariable("image","preview.jpg");//背景图片
s1.addVariable("displayheight","200");//播放区域高度
s1.addVariable("backcolor","0x000000");
s1.addVariable("frontcolor","0xCCCCCC");
s1.addVariable("lightcolor","0x557722");
s1.addVariable("enablejs","true");//是否允许javascript脚本控制flash
s1.addVariable("javascriptid","javascript_id");//控制脚本javascriptid
s1.write("myPlayer");//将播放器写入到myPlayer
</script>
...全文
2692 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinkan 2010-03-17
  • 打赏
  • 举报
回复
问题已解决,非常感谢ydyn1988的帮助!
ydyn1988 2010-03-16
  • 打赏
  • 举报
回复
那这种方法行不行

当加载视频的时候,通过js获得视频的总帧数,然后在线程中调用CurrentFrame获取当前播放的帧数,和总帧数compare

kinkan 2010-03-16
  • 打赏
  • 举报
回复
getUpdate
刚在网上看到这个个函数是一个回调函数,调用不了
kinkan 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ydyn1988 的回复:]
在CDHtmlDialog中引发一个线程,这个线程负责判断视频是否结束,若结束就退出线程,并通知对话框响应你具体的操作。

如何调用 javaScript 中的getUpdate函数参考这篇文章,

http://www.codeguru.com/Cpp/I-N/ieprogram/article.php/c4399/

这篇文章写的很清楚
[/Quote]

实在不好意思,我还是不知道该怎么调用的
function getUpdate(typ,pr1,pr2,pid) {
if(typ == "time") { currentPosition = pr1; }
else if(typ == "volume") { currentVolume = pr1; }
else if(typ == "item") { currentItem = pr1; setTimeout("getItemData(currentItem)",100); }
var id = document.getElementById(typ);
id.innerHTML = typ+ ": "+Math.round(pr1);
pr2 == undefined ? null: id.innerHTML += ", "+Math.round(pr2);
if(pid != "null") {
document.getElementById("pid").innerHTML = "(来自播放器 <i>"+pid+"</i>的消息)";
}
};

这个函数有4个参数,我调用这个函数的时候,参数该传什么好呢?typ为类型,pr1为时间, pr2为剩余时间
pr1 和pr2我该如何传

CString str;
CStringArray args;
args.Add("time");
args.Add(str);
args.Add(str);
args.Add(str);
web.CallJScript("getUpdate", args);

我试着这样调用,没有用
ydyn1988 2010-03-15
  • 打赏
  • 举报
回复
http://www.qqgb.com/NetProgramme/ASP/ASPYY/NetProgramme_258662.html
kinkan 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ydyn1988 的回复:]
http://blog.deconcept.com/swfobject/
看看这篇文章对比有没有帮助
[/Quote]

问题是我在对话框中如何捕获这个剩余秒数
ydyn1988 2010-03-15
  • 打赏
  • 举报
回复
在CDHtmlDialog中引发一个线程,这个线程负责判断视频是否结束,若结束就退出线程,并通知对话框响应你具体的操作。

如何调用 javaScript 中的getUpdate函数参考这篇文章,

http://www.codeguru.com/Cpp/I-N/ieprogram/article.php/c4399/

这篇文章写的很清楚
kinkan 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ydyn1988 的回复:]
用getdocument先获得网页的指针, IHTMLDocument2* pDocument; HRESULT hr = GetDHtmlDocument(&pDocument); IHTMLWindow2* pWindow; hr = pDocument->get_parentWindow(&pWindow); VARIANT ret; ret.vt = VT_E……
[/Quote]

hr = pWindow->execScript(L"getupdate()", L"javascript",&ret);
调用这个我怎么能获取到是否播放完毕了呢?ret是不是就是返回的时间,那我不是要设置个定时器的,不停的调用这个函数,判断ret是否为0的,如果为0就表示已经播放完了,麻烦详细解释一下的,第一次搞这个东西的,很多东西不是很明白的。
ydyn1988 2010-03-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090729/16/dc23d0e5-b054-4e0d-81d9-d8ce3fb3f597.html这有如何传参的讲解
ydyn1988 2010-03-15
  • 打赏
  • 举报
回复
用getdocument先获得网页的指针,  IHTMLDocument2* pDocument;  HRESULT hr = GetDHtmlDocument(&pDocument);  IHTMLWindow2* pWindow;  hr = pDocument->get_parentWindow(&pWindow);   VARIANT ret;  ret.vt = VT_EMPTY;  hr = pWindow->execScript(L"getupdate()", L"javascript",&ret);不知道能不能调用成功,
kinkan 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ydyn1988 的回复:]
页面里面有个回调函数function getUpdate(typ,pr1,pr2,pid)
当if(typ == "time")时 pr1代表当前播放地秒数 pr2是剩余地秒数
[/Quote]

当这个剩余秒数为0的时候,我怎么才能通知对话框呢?
liumenghappy 2010-03-14
  • 打赏
  • 举报
回复
学习一下
ydyn1988 2010-03-14
  • 打赏
  • 举报
回复
页面里面有个回调函数function getUpdate(typ,pr1,pr2,pid)
当if(typ == "time")时 pr1代表当前播放地秒数 pr2是剩余地秒数
ydyn1988 2010-03-14
  • 打赏
  • 举报
回复
http://blog.deconcept.com/swfobject/
看看这篇文章对比有没有帮助
ydyn1988 2010-03-14
  • 打赏
  • 举报
回复
repeat* (true,false,list): 默认为flase,从当前播放位置播放到列表尾部后停止。设置为list会播放列表中所有的项目,设置为true会循环播放。
showdigits (true,false,total): 设置为"false"隐藏播放时间等信息用来节省控制区域的空间。设置为"total"用来显示全部时间。

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧