惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
NISL@THU
NISL@THU
AWS News Blog
AWS News Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Privacy & Cybersecurity Law Blog
S
Schneier on Security
PCI Perspectives
PCI Perspectives
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Troy Hunt's Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
Know Your Adversary
Know Your Adversary
F
Fortinet All Blogs
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
Jina AI
Jina AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
T
Tor Project blog
S
Security Affairs
S
Securelist
F
Full Disclosure
D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
Martin Fowler
Martin Fowler
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
Apple Machine Learning Research
Apple Machine Learning Research
N
News and Events Feed by Topic
Recorded Future
Recorded Future
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
Stack Overflow Blog
Stack Overflow Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
I
Intezer
Security Latest
Security Latest
Scott Helme
Scott Helme
U
Unit 42
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog

博客园 - 空格

Alan Cooper 的交互设计观 [网摘] 把视频文件自动的在服务器端转换成FLV文件的FFMPEG的编译方法[网摘] 完美简单的loading外部文件. 良心 如何量化用户体验UE(How To Quantify The User Experience)[网摘] 我的第一次涂鸦 为鼎盛设计的片头 为世道设计公司的片头 让你的网站上实时更新各大网站的新闻 - 空格 - 博客园 创意设计手法 [网摘] 网站策划方案写作、演示标准[转] 未来网站策划呈现5大趋势 [网摘] 互联网创业------建立强有力的执行文化[网摘] 关于Web 2.0 网站的创业思考[转] 关于web3.0的标准:吃喝买卖随己 Web2.0三大营销变革 WEB3.0标准的核心 左右均自适应高度 也谈论坛“BBS2.0”的十大升级方向 [网摘]
FLV播放器 源码二例
空格 · 2006-11-25 · via 博客园 - 空格

方法一制作步骤:
  1.新建一个FLASH文档,设置舞台大小:300*260。
  2.将组件MediaController和MediaDisplay拖入舞台,然后从舞台上删除。这样做的目的是将这两个组件载入库中,为接下来用attachMovie()方法将MediaController和MediaDisplay组件载入舞台做好准备。
  3.新建一层,命名为function。在该层的第一帧上输入如下AS代码:

function init(){
flagNum = 1;
//播放影片的标示
flvNum = 0;
attachController();
};
//将MediaController和MediaDisplay组件载入舞台并初始化
function attachController(){
//将MediaDisplay组件载入舞台并给定义实例名 "flvContainer" + flagNum
_root.attachMovie("MediaDisplay","flvContainer" + flagNum,2);
//设置组件初始参数
with(_root["flvContainer" + flagNum]){
_x = 0;
_y = 0;
setMedia(myArray[flvNum],"FLV");//设置播放格式可以mp3等
}
//将MediaController组件载入舞台并给定义实例名 "flvController" + flagNum
_root.attachMovie("MediaController","flvController" + flagNum,1);
//设置组件初始参数
with(_root["flvController" + flagNum]){
_x = 0;
_y = 190;
activePlayControl = false;
controllerPolicy = "on";
//将MediaController和MediaDisplay组件相关联
associateDisplay(_root["flvContainer" + flagNum]);
};
};
function playNext(){
//将MediaController和MediaDisplay组件从舞台上删除
_root["flvController" + flagNum].removeMovieClip();
_root["flvContainer" + flagNum].removeMovieClip();
flagNum += 1;
flvNum += 1;
//如果播放到影片的最后一首,将flvNum = 0,意为将从头开始播放
if(flvNum == flvTotal) flvNum = 0;
//重新载入MediaController和MediaDisplay组件,并给一新的实例名
attachController();
//因为每播放完一个影片后MediaController和MediaDisplay组件从舞台上被卸载
//然后又重新载入MediaController和MediaDisplay组件并给了另外一个实例名
_root["flvContainer" + flagNum].addEventListener("complete", myListener);
};

4.新建一层,命名为action,在该层第一帧输入一下AS代码:

stop();
//数组myArray用来存储 载入的XML文档中的影片名称
var myArray = new Array();
//影片的总数
var flvTotal:Number;
var myXml = new XML();
myXml.ignoreWhite = true;
myXml.load("list.xml");
myXml.onLoad = function() {
var e = myXml.firstChild.childNodes;
flvTotal = e.length;
for (var i = 0; i<flvTotal; i++) {
myArray.push(e[i].attributes["title"]);
}
init();
_root["flvContainer"+flagNum].addEventListener("complete", myListener);
};
var myListener = new Object();
myListener.complete = function(eventObject) {
playNext();
};

 用记事本写入下面内容作为播放列表,保存为list.xml:

<?xml version="1.0" encoding="utf-8" ?>
- <flvLists>
<item title="http://littleredflowers.com/shipin/yugao.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-01.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-02.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-03.flv" />
</flvLists>

相关源码下载 点击下载此文件

方法二

我们将制作的这个FLV播放器由这样几部分组成:
一个用于显示视频图像的视频对象,
三个分别用于播放、暂停和停止视频的按钮,
以及一个用于显示缓冲区装载进度的动态文本。

1. 创建三个按钮元件,分别命名为“播放”、“暂停”、“停止”,将其各自一个实例拖放到场景舞台中。

2. 创建一个视频元件,将其一个实例拖放到场景舞台中,并赋予其实例名myVideo。

3. 在场景舞台中放置一个动态文本,赋予其实例名myText。

4. 在根时间线的第1帧中捆绑下面的脚本:

//创建一个NetConnection对象。
myFLVConnection=new NetConnection();
//创建一个流连接。
myFLVConnection.connect(null);
//创建一个NetStream对象。
//myFLVConnection被指定给该NetStream对象。
myFLVStream=new NetStream(myFLVConnection);
//myFLVStream被捆绑到Video对象myVideo:
myVideo.attachVideo(myFLVStream);
//设置缓冲时间。
myFLVStream.setBufferTime(10);

分析这段脚本,首先我创建了一个NetConnection对象myFLVConnection,然后我调用NetConnection对象的connect()方法打开了一个流连接,在调用connect()方法时你必须传递给它一个null值作为参数。

接下来,我利用myFLVStream=new NetStream(myFLVConnection);这行代码创建了一个NetStream对象myFLVStream,在创建时我就需要把为该“流”提供的“连接”告知它,即把myFLVConnection对象作为参数传递给NetStream类的构造函数。
之后,我把myFLVStream(“流”)捆绑到Video对象myVideo。然后,我还用NetStream类的setBufferTime()方法以秒为单位指定了一个缓冲时间,即要在缓冲区中装入可供播放多长时间的数据后才开始播放。

5. 在“播放”按钮实例上捆绑下面的脚本:

on(release){
    //装载并播放FLV文件。
    myFLVStream.play("myFLV.flv");

    //定义bufferLoad函数以供setInterval函数调用来显示缓冲进度。
    function bufferLoad(){
        //在动态文本中显示缓冲区的装载进度。
        myText.text="缓冲区已装载"+int((myFLVStream.bytesLoaded/myFLVStream.bytesTotal)*100)+"%";
}
        //设置时间间隔。
        setInterval(bufferLoad,20);
}

这行代码—myFLVStream.play("myFLV.flv");用来装载和播放FLV文件。如果你的FLV文件位于某个HTTP地址或本地文件系统的某处,你可以使用http://或file://这样的格式作为路径的前缀来指定FLV文件的位置。
这个表达式—myFLVStream.bytesLoaded/myFLVStream.bytesTotal用来检查缓冲区已装载的字节占缓冲区要装载的总字节的比值。bytesLoaded和bytesTotal是NetStream类的两个属性。

6. 在“暂停”按钮实例上捆绑下面的脚本:

on(release){
    //暂停FLV文件。
    myFLVStream.pause();
}

7. 在“停止”按钮实例上捆绑下面的脚本:

on(release){
    //停止FLV文件并同时删除下载的FLV文件。
    myFLVStream.close();
}

8. 制作完成。你应该在你的网站中测试这个FLV播放器。