必须强调一个极其重要的前提

flash网页播放器代码大全
(图片来源网络,侵删)

Flash技术已于2025年12月31日正式被所有主流浏览器(Chrome, Firefox, Edge, Safari等)停止支持。 Adobe也早已停止更新和分发Flash Player。在2025年的今天,任何新建的网站都不应该再使用Flash技术。

您寻求的“代码大全”更多是出于学习历史、维护旧项目或理解Web技术演进的目的,以下内容将完全基于这个前提,为您提供Flash网页播放器的完整技术指南、代码示例和原理。


第一部分:Flash网页播放器核心原理

在网页中运行,主要通过两种方式:

  1. 嵌入SWF文件:这是最传统的方式,直接将一个已编译好的.swf(ShockWave Flash)文件嵌入到HTML页面中。.swf文件包含了动画、交互和逻辑。
  2. ActionScript 3.0 (AS3):这是Flash的编程语言,用于为.swf文件添加交互性、控制视频/音频播放、处理用户输入等。

我们将主要围绕这两种方式展开。

flash网页播放器代码大全
(图片来源网络,侵删)

第二部分:HTML中嵌入Flash的代码大全

这部分是前端代码,负责在HTML页面中“放置”一个Flash播放器容器。

基础<object>标签嵌入法(最传统)

这是最早、最标准的方法,能被非常古老的浏览器支持。

<object 
    classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
    codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" 
    width="800" 
    height="600"
    id="myFlashMovie">
    <!-- 如果用户没有安装Flash Player,显示此内容 -->
    <param name="movie" value="myFlashMovie.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#FFFFFF" />
    <!-- 兼容Netscape等浏览器 -->
    <embed 
        src="myFlashMovie.swf" 
        quality="high" 
        bgcolor="#FFFFFF" 
        width="800" 
        height="600"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer">
    </embed>
    您的浏览器过旧,请升级到支持Flash Player的最新版本。
</object>

参数解析:

  • classid: Windows系统下识别ActiveX控件的ID。
  • codebase: 指定Flash Player的安装程序链接和版本要求。
  • width/height: 播放器的宽度和高度。
  • <param>: 标签内的参数,传递给Flash Player。
    • movie: 核心参数,指定要播放的.swf文件路径。
    • quality: 播放质量,可选值有 high, medium, low
    • bgcolor: 背景颜色。
    • wmode: 设置窗口模式,非常重要!
      • window: 默认模式,Flash在独立的窗口中渲染,会覆盖HTML元素。
      • opaque: 不透明模式,Flash不会覆盖HTML元素。
      • transparent: 透明模式,Flash背景可以透明,显示下面的HTML元素。(性能消耗较大)
  • <embed>: Netscape等浏览器使用的标签,现在更多作为<object>的兼容补充。
  • pluginspage: 如果用户没有插件,引导用户去下载的页面。

现代SWFObject.js库嵌入法(强烈推荐,用于旧项目维护)

在Flash时代,为了解决不同浏览器兼容性问题,开发者们普遍使用JavaScript库——SWFObject,这是最优雅、最灵活的嵌入方式。

flash网页播放器代码大全
(图片来源网络,侵删)

第一步:引入SWFObject库

<script type="text/javascript" src="swfobject.js"></script>

(你需要从SWFObject官网下载这个库)

第二步:在HTML中创建一个容器

<div id="flashContent">
    这里是备用内容,如果用户没有Flash Player或禁用了JavaScript,就会显示这个。
</div>

第三步:使用JavaScript动态嵌入Flash

<script type="text/javascript">
    // 页面加载完成后执行
    swfobject.embedSWF(
        "myFlashMovie.swf", // swf文件路径
        "flashContent",     // 容器元素的ID
        "800",              // 宽度
        "600",              // 高度
        "9.0.0",            // 最低要求的Flash Player版本
        "expressInstall.swf", // express install swf文件,用于优雅升级
        {},                 // FlashVars (传递给Flash的变量)
        {wmode: "transparent"}, // Flash params (如wmode, quality等)
        {align: "center"}   // attributes (如id, name, style等)
    );
</script>

优点:

  • 优雅降级:如果用户没有Flash,会显示备用内容。
  • 分离关注点:HTML结构清晰,Flash的配置与JS代码分离。
  • 灵活性强:可以动态地创建、修改、移除Flash实例。

嵌入视频播放器(FLV格式)

Flash曾是网页视频流播放的王者,嵌入一个FLV视频播放器,本质上也是嵌入一个.swf文件(播放器组件),但需要通过FlashVars参数传递视频文件的路径。

假设你有一个名为player.swf的播放器组件和一个myVideo.flv的视频文件。

使用SWFObject方式:

<script type="text/javascript">
    var flashvars = {
        video: "videos/myVideo.flv", // 视频文件路径
        autoplay: "false",           // 是否自动播放
        skin: "skins/skin.swf"      // 播放器皮肤文件路径
    };
    var params = {
        wmode: "window",
        quality: "high"
    };
    var attributes = {
        id: "videoPlayer"
    };
    swfobject.embedSWF("player.swf", "videoContainer", "640", "480", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>

HTML部分只需要一个容器:

<div id="videoContainer"></div>

第三部分:Flash Player (ActionScript 3.0) 代码大全

这部分是Flash项目内部的代码,控制播放器的行为。

基础AS3代码结构

一个AS3项目通常由一个或多个.as文件组成,这些文件会被编译成一个.swf文件。

// MyFlashPlayer.as
package {
    // 导入必要的类库
    import flash.display.Sprite; // 所有可视元素的基类
    import flash.text.TextField; // 文本字段
    import flash.events.MouseEvent; // 鼠标事件
    public class MyFlashPlayer extends Sprite {
        // 构造函数,当SWF被加载时自动执行
        public function MyFlashPlayer() {
            // 创建一个文本框
            var myText:TextField = new TextField();
            myText.text = "Hello, Flash World!";
            myText.x = 100;
            myText.y = 100;
            // 将文本框添加到舞台(显示出来)
            addChild(myText);
            // 创建一个按钮
            var myButton:Sprite = new Sprite();
            myButton.graphics.beginFill(0xFF0000); // 红色
            myButton.graphics.drawRect(0, 0, 100, 50);
            myButton.graphics.endFill();
            myButton.x = 150;
            myButton.y = 150;
            myButton.buttonMode = true; // 启用手型光标
            // 添加点击事件监听
            myButton.addEventListener(MouseEvent.CLICK, onButtonClick);
            addChild(myButton);
        }
        // 按钮点击事件处理函数
        private function onButtonClick(event:MouseEvent):void {
            trace("按钮被点击了!");
            // 你可以在这里添加更多逻辑,比如播放视频、改变画面等
        }
    }
}

控制视频播放 (FLVPlayback组件)

这是Flash播放器最核心的功能,你需要使用Adobe Flash Professional(旧称Flash CS)或Flash Builder来开发。

步骤:

  1. 在Flash Professional中,新建一个FLV文档。
  2. 从“组件”面板中,将 FLVPlayback 组件拖到舞台上。
  3. 在“属性”面板中,为组件实例命名,my_video_player
  4. 你可以通过属性面板直接设置 source(视频源)等参数,也可以通过AS3代码动态控制。

AS3代码示例:

// 假设FLVPlayback组件的实例名为 my_video_player
import fl.video.FLVPlayback;
import fl.video.VideoEvent;
// 设置视频源
my_video_player.source = "videos/myVideo.flv";
// 添加事件监听器
my_video_player.addEventListener(VideoEvent.COMPLETE, onVideoComplete);
my_video_player.addEventListener(VideoStateEvent.PLAYHEAD_UPDATE, onPlayheadUpdate);
// 播放控制函数
function playVideo(event:MouseEvent):void {
    my_video_player.play();
}
function pauseVideo(event:MouseEvent):void {
    my_video_player.pause();
}
function stopVideo(event:MouseEvent):void {
    my_video_player.stop();
}
// 事件处理函数
function onVideoComplete(event:VideoEvent):void {
    trace("视频播放完毕!");
}
function onPlayheadUpdate(event:VideoStateEvent):void {
    // trace("当前播放头位置: " + my_video_player.playheadTime);
}
// 你可以创建播放/暂停按钮并绑定这些函数
// playButton.addEventListener(MouseEvent.CLICK, playVideo);

常用FLVPlayback属性和方法:

  • source: 视频文件URL。
  • autoPlay: 是否自动播放。
  • volume: 音量 (0-1)。
  • playheadTime: 当前播放时间(秒)。
  • totalTime: 视频总时长(秒)。
  • play(): 播放。
  • pause(): 暂停。
  • stop(): 停止。
  • seek(time:Number): 跳转到指定时间。

第四部分:现代替代方案(非常重要!)

既然Flash已死,现代网页播放器应该使用什么技术?

技术方案 描述 优点 缺点
HTML5 Video 现代标准,使用<video>标签直接嵌入视频,无需插件。 原生支持跨平台开放标准性能好对SEO友好 兼容性需要考虑(如旧版IE需要<source>标签和polyfill),DRM(数字版权管理)支持较弱。
Video.js 一个基于HTML5 Video的开源播放器库 提供统一的UI、强大的插件生态、优雅的降级方案(Flash回退,现已移除)、跨浏览器兼容性好。 需要引入JS和CSS库。
JW Player 商业播放器解决方案,功能强大。 功能极其丰富(广告、分析、DRM等)、稳定、技术支持好。 付费。
DASH.js 一个开源的DASH(Dynamic Adaptive Streaming over HTTP)客户端库。 自适应码率流,根据网速自动切换清晰度,节省带宽和提供流畅体验。 实现相对复杂,需要服务器端支持DASH分片。

HTML5 Video + Video.js 简单示例:

HTML:

<!DOCTYPE html>
<html>
<head>
    <link href="https://vjs.zencdn.net/8.6.1/video-js.css" rel="stylesheet" />
</head>
<body>
    <video
        id="my-video"
        class="video-js vjs-default-skin"
        controls
        preload="auto"
        width="640"
        height="360"
        data-setup="{}">
        <source src="myVideo.mp4" type="video/mp4">
        <source src="myVideo.webm" type="video/webm">
        <p class="vjs-no-js">
            To view this video please enable JavaScript, and consider upgrading to a web browser that
            <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>.
        </p>
    </video>
    <script src="https://vjs.zencdn.net/8.6.1/video.min.js"></script>
</body>
</html>

  1. 历史背景:Flash网页播放器通过<object>/<embed>标签或更先进的SWFObject.js库嵌入HTML,其内部逻辑由ActionScript 3.0编写。
  2. 核心代码
    • HTML端:使用SWFObject库是最佳实践,通过flashvars传递参数(如视频路径)。
    • Flash端:使用FLVPlayback组件来加载和控制FLV视频,通过AS3事件监听实现交互。
  3. 现代选择放弃Flash,所有新项目都应使用HTML5 Video作为基础,并借助Video.js等现代播放器库来获得更好的用户体验和功能。
  4. 维护旧项目:如果你需要维护一个旧的Flash网站,你需要:
    • 保留所有.swf.js(如swfobject.js)和相关资源。
    • 确保服务器仍然支持MIME类型 application/x-shockwave-flash
    • 告知用户,他们需要使用一个非常古老的、不安全的浏览器(如带有Flash插件的旧版Chrome/Firefox ESR)才能访问。

希望这份“大全”能帮助你全面理解Flash网页播放器的技术原理和实现方式。