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

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
博客园_首页
WordPress大学
WordPress大学
博客园 - 聂微东
P
Privacy International News Feed
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
C
CERT Recently Published Vulnerability Notes
月光博客
月光博客
NISL@THU
NISL@THU
美团技术团队
T
Tailwind CSS Blog
Jina AI
Jina AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Hacker News
The Hacker News
B
Blog
P
Palo Alto Networks Blog
L
Lohrmann on Cybersecurity
有赞技术团队
有赞技术团队
The Register - Security
The Register - Security
S
Securelist
A
Arctic Wolf
MyScale Blog
MyScale Blog
H
Help Net Security
N
Netflix TechBlog - Medium
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Security Latest
Security Latest
T
Tor Project blog
V
Vulnerabilities – Threatpost
V
V2EX
AI
AI
Hugging Face - Blog
Hugging Face - Blog
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
Google Online Security Blog
Google Online Security Blog
Know Your Adversary
Know Your Adversary

博客园 - 空格

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播放器。