使用javascript控制Flash视频的播放

1、背景
在网上找了很多资料,大家都给了`myMovieName.Play()`等方法来控制Flash视频的播放。可是使用这些方法操作Flash视频(从网上随机找的Flash视频),却都失败了,现贴出代码如下:

<object width="100%" height="100%" id="swf">
    <param name="quality" value="high">
    <param name="movie" value="http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?max_age=86400&v=20140714&vid=s00190fcjfl&vstart=0&vend=-164&cid=xfxd9mej2luhfoz&tpid=0&showend=1&showcfg=1&searchbar=1&shownext=1&list=2&autoplay=1&ptag=www_qq_com%7C%7Bpagetype%7D.focus.big_img.1&outhost=http%3A%2F%2Fv.qq.com%2Fmiyue%2Fmiyue.htm&refer=http%3A%2F%2Fv.qq.com%2F&openbc=0&fakefull=1&bullet=1&bulletid=&title=%E8%8A%88%E6%9C%88%E4%BC%A001">
    <param name="allowScriptAccess" value="always">
    <param name="loop" value="false">
    <param name="play" value=""false"">
    <embed name="swf" src="http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?max_age=86400&v=20140714&vid=s00190fcjfl&vstart=0&vend=-164&cid=xfxd9mej2luhfoz&tpid=0&showend=1&showcfg=1&searchbar=1&shownext=1&list=2&autoplay=1&ptag=www_qq_com%7C%7Bpagetype%7D.focus.big_img.1&outhost=http%3A%2F%2Fv.qq.com%2Fmiyue%2Fmiyue.htm&refer=http%3A%2F%2Fv.qq.com%2F&openbc=0&fakefull=1&bullet=1&bulletid=&title=%E8%8A%88%E6%9C%88%E4%BC%A001" width="400" height="300" align="middle" quality="high" menu="false" play="false" loop="false" FlashVars="" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" id ="swf2">
    </embed>
</object>
</div>
<button class="test">点我</button>

控制台输入代码如下:

swf2.StopPlay()

结果无任何效果。
查了一些资料之后才明白其中的道理。Flash本身直接对网页提供了play、stop、pause方法,只是有的Flash设计了策略使得这些方法无效或不能起到作用。所以网上给的一些方法都不能实现。那么如果我自己做个Flash(使用手机拍摄MP4视频,然后使用格式工厂转化为swf文件),是不是就能用这些方法了呢?答案是是,贴出代码如下:

<object width="100%" height="100%" id="swf">
    <param name="quality" value="high">
    <param name="movie" value="../static/page/test.swf">
    <param name="bgcolor" value="#F0F0F0">
    <param name="menu" value="false">
    <param name="wmode" value="opaque">
    <param name="FlashVars" value="">
    <param name="allowScriptAccess" value="sameDomain">
    <param name="loop" value="false">
    <param name="play" value=""false"">
    <embed name="swf" src="../static/page/test.swf" width="400" height="300" align="middle" quality="high" menu="false" play="false" loop="false" FlashVars="" allowScriptAccess="never" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" id ="swf2">
    </embed>
</object>
</div>
<button class="test">点我</button>
<script type="text/javascript">
    var ua = navigator.userAgent;
    var swfN = swf2;
    if (ua.indexOf('ie') > -1){
        swfN = swf1;
    }
    $('body').on('click','.test',function(){
        if (swfN.IsPlaying()){
            swfN.StopPlay();
        }
        else{
            swfN.Play();
        }
    })
</script>

点击`点我`按钮可以进行播放和暂停了!
那么这是为什么呢?为什么我自己做的Flash就能使用Flash提供的API被javascript控制,而网上的那些视频都不能呢?这要归功于ActionScript了。
2、ActionScript
ActionScript通常简称为AS,它是Flash中的内置编程语言。AS编写的程序,最终可以编译成SWF、SWC。对Flash写入ActionScript,可以控制Flash对脚本的响应,譬如响应什么脚本而不响应什么脚本。
flash如果需要对javascript暴露出来方法,那么需要在ActionScript中进行注册,注册方法为`ExternalInterface.addCallback(‘fnName’, fnName);`。而JS直接使用`(document[‘swfName’] || window[‘swfName’]).fnName();`调用即可.
对于ActionScript就不进行深入学习了,如果有时间可以基于ActionScript以及JavaScript写一个播放器出来.

此条目发表在未分类分类目录,贴了标签。将固定链接加入收藏夹。

1 则回应给 使用javascript控制Flash视频的播放

  1. Awesome, this is what I was browsing for in bing

boom beach مهكرة进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注