`

深入:FLASH视频播放传输方式——渐进式与流式

阅读更多

本博客中原有一篇“Introduction - How to Create Streaming Video”作为FLASH视频的初级入门文档,为了更多了解FLASH视频播放,深入了解各种方案的利弊,为选择FLASH视频播放方案提供依据,又特译了此篇! 

 

 

本文从《Flash.Video.for.Professionals Expert Techniques for Integrating Video on the Web》摘录而来,并做了关键性的翻译。

 欢迎转载,转载时请注明出处,由于本人也正在学习FLASH相关的知识,本文如有翻译错误,请指正!!

 

Progressive or Streaming? That Is the Question

Now that you’ve got the interface and functionality under control, it’s time to answer the eternal question: What method will you use to deliver the video? You have three options:

 

三种视频传输方式:

• Embed the video in an SWF.

视频嵌入到SWF

 

• Provide a progressive download FLV, loaded into an SWF.

提供一个渐进式下载然后载入到SWFFLV视频格式文件

 

• Stream from Flash Media Server (FMS), viewed through an SWF.

通过SWF观看从FMSFLASH媒体服务器)流式下载的的视频

 

 

Note that in each method, you will need an SWF shell to play the FLV through.

This shell will contain all the ActionScript needed to load the FLV. (Yea! Finally, some

ActionScript!) First, let’s look at each delivery option in detail.

注意以上每种方式,你都需要一个SWF的外壳程序来播放FLV视频。这个外壳程序包含装载FLV视频文件的ActionScript脚本。

 

Embed Video in SWF

SWF中嵌入视频

This is the most basic option, available for Flash 4 and up (see Figure 3.2). In most professional applications, though, you’d never use this method. It’s good for very short clips (5 seconds or less) whose quality is not so important. The only reason you’d ever want to use this method would be if you needed to deploy one single encapsulated SWF or if you needed to deliver short clips to older versions of Flash. Also, some older versions of the Linux Flash Player have reportedly had issues with FLV playback, so it’s common to use SWF videos when delivering short videos to Linux clients. This embed method can actually be helpful because it gives you visual feedback if you need to develop animation overlays and interactivity. It lets you actually see each frame on the timeline in Flash as you animate.

此种方式主要用于那些视频质量并不重要且非常短小的剪辑(5秒或更短),只有当你需要部署一个单一的封装好的SWF(把剪辑绑定到SWF中)或需要把短小视频剪辑用于老版本Flash中。这种嵌入方式益处在于当你需要开发覆盖与交互功能的动画时它能让你看清你FLASH动画中每一个时间线上的动画帧。

 

Note: Embedded video is limited to 16,000 frames, and audio can quickly fall out of sync with the video. Also, the SWF’s frame rate must match the video frame rate,which can sometimes create headaches.嵌入式视频有16000帧限制,还有视频音频的同步难题。

 

 

Progressive Download

渐进式下载

This is most likely the method you’ll end up using in your application. It is the most commonly used, being compatible with Flash Player 6 and up. “Progressive” means that as the FLV file is downloaded to your computer, or “cached,” it starts to play. This method is most efficient for clips that are 5–90 seconds in length, but longer clips can be accommodated with well-planned caching. There is no limit to file size or duration, and there are no audio synchronization issues. Because the FLV file is external to the SWF shell, it is relatively easy to swap video content without republishing your SWF. This gives you great flexibility in developing dynamic video applications. The frame rate of the video can be different from the SWF, which is also invaluable when swapping videos, allowing you to accommodate files with differing frame rates into the same shell.

这种方式是我们应用最多的方式,可适用于Flash Player 6或以上。渐进(Progressive)表示当FLV视频文件被下载或缓存到我们的电脑,然后再播放。对5-90秒长度的视频很有效,如果更长时间的视频则需要适宜的缓存策略。这种方式没有文件大小与时长限制、没有音频同步问题。由于FLV文件在SWF播放程序外部,所以非常容易在不用重新发布我们的SWF而实现视频切换。

SWF播放的视频可以是不同的帧率,这往往在切换视频时非常有用,可以实现在同一播放程序中调节不同文件为不同帧率播放。

 

Progressive download isn’t the perfect solution, however. There are three issues that you’ll want to be aware of. First, viewers can’t seek ahead in the video beyond the portion that’s been downloaded, which can be a problem with large video files. Often your viewer wants to skip ahead to a part of the video or see if the content is something they want to watch. Second, when viewers do jump ahead in a fully downloaded video, they’re constrained to jumping between keyframes. This results in a “choppy” feel to the video, which can be undesirable. Finally, there’s the issue of digital rights management (DRM). The FLV file is actually downloaded to the viewer’s machine after it’s cached, and is stored on their hard drive. This can be a big problem if you’re delivering copyright-protected video. If this is an issue for you, you’ll be glad to know that we’ll talk about DRM in more detail later in this chapter.

然而渐进式下载并不是完美的方案。有三个问题你需要了解清楚。

第一,我们不能向前播放那些还没有被下载到我们电脑的那部分视频段,这对于大的视频文件就是个问题了。

第二,当观看者在下载完的视频中向前跳跃播放时,他们会被限制在关键帧间,这就造成视频的波动(闪动,如果没有点击到关键帧,会自动跳动关键帧开始播放?)感。

最后,数字版权管理问题,FLV文件缓存后实际已被下载到观看者的电脑里,被存放到电脑硬盘中。

 

Streaming

流式下载

If progressive download is the workhorse of Flash video delivery, streaming is the luxury model. Delivered through a streaming server such as Flash Media Server (FMS) and compatible with Flash Player 6 and up, this method features built-in bandwidth detection, high-quality playback, faster video start time, advanced logging and monitoring, and real-time data synchronization. With its persistent connection between the client and server, streaming allows on-the-fly changes to FLV content. For example, you could change to a lower-quality video if the viewer’s connection slows down during playback. Or with live video, you could switch camera angles based on user interaction. You can even use the persistent connection to send data along with the video, such as a chat room or synchronized slides controlled by a live presenter. Scrubbing is streamlined as well; you can smoothly jump ahead in a video without having to download the file to that point, and without the jerkiness of jumping to the nearest existing keyframe (as in progressive download); keyframes are created on the fly by FMS.

如果说渐进式下载是粗重的Flash视频传输模式的话,流式就是一种豪华模式。通过一个媒体服务器(如FMS)传输视频且兼容Flash Player 6或以上版本,这种方式的特点包括了带宽检测、高品质播放、更快的视频开启时间、高级的日志与监视功能,以及实时的数据同步。利用在客户端与服务端的持久性连接,流式传输允许在运行时改变FLV的内容,如可以在观看者在网速下降情况下播放视频时传输更低品质的视频。或者在实时视频中,我们可以基于不同的用户交互下切换摄像的视角。你还可以利用持久的连接在传输视频时发送一些数据,如聊天室或被展示者控制的同步的幻灯片。选段播放(Scrubbing)同样是高效的,你可以平滑向前跳跃到还未下载下来的视频点,不会有渐进式下载时因为跳跃到最近的已下载的关键帧而产生的闪动(jerkiness)现象,关键帧被FMS在运行时创建。

 

As with progressive download, the SWF acts as a shell containing the video content,

so updating does not require republishing the SWF. Streaming also saves on bandwidth and hardware resources; viewers only download the portion of the video they watch, and nothing is stored on their hard drive. This brings us to another pretty significant benefit—the video is never cached, providing more security for copyrighted content. Currently this is the extent of DRM offered by Flash video. So, if you don’t want your viewers to have a copy of your video somewhere on their hard drive after viewing, streaming is your answer (though we will show you some tricks to add extra barriers to downloading later in this chapter). If you have large quantities of stored video, very long video clips, or live video (such as live event broadcasts or webcam chat rooms), you’ll want to choose streaming. The downside to streaming, of course, is its significantly higher deployment cost. Programming for FMS is also complex, as is setting up your own FMS server. Luckily, there are options such as Flash Video Streaming Services (FVSS) that can help streamline the deployment process in many cases. We’ll cover your various deployment options

而且流式传输可以节省带宽与硬件资源,观看视频的人只要下载那些他们需要观看的视频部分,硬盘上不会存储视频的任何东西(版权管理有用)。

如果你有大量的视频、长时段的视频剪辑或实时视频(如实时广播和视频聊天),则可以利用流式传输。但视频部署成本很高,且在FMS上编程也较复杂。

 

三种视频传输方式的特点对比:

三种传输方式比较

  • 大小: 8.5 KB
2
0
分享到:
评论
1 楼 xlhtc007 2010-07-15  
这篇文章写得不错!有空了好好学习一下你分享的这本书!

相关推荐

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    (3)针对页面自适应问题,本文结合渐进增强以及拥抱流式布局的思想,同时研究利用了移动设备的视口特性,实现跨分辨率、跨设备的页面自适应。 (4)针对系统的功能实现问题,通过结合利用原生态框架与HTML5的跨平台...

    kernel-devel-4.18.0-553.45.1.el8-10.x86-64.rpm

    Rocky Linux 8.10内核包

    Simulink中三阶单环多位量化Σ-Δ调制器的设计与实现-音频带ADC的应用(复现论文或解答问题,含详细可运行代码及解释)

    内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。

    计算机课后习题.docx### 【计算机科学】研究生入学考试计算机组成原理专项题库设计:考研复习资源集成与优化

    内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。

    __UNI__DB9970A__20250328141034.apk.1

    __UNI__DB9970A__20250328141034.apk.1

    minio-rsc-Rust资源

    rust for minio

    4-4-台区智能融合终端功能模块型式规范(试行).pdf

    国网台区终端最新规范

    《基于YOLOv8的化工管道焊缝缺陷检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    python源码-1个机器学习相关资源

    一个简单的机器学习代码示例,使用的是经典的鸢尾花(Iris)数据集,通过 Scikit-learn 库实现了一个简单的分类模型。这个代码可以帮助你入门机器学习中的分类任务。

    pyqt离线包,pyqt-tools离线包

    pyqt离线包,pyqt-tools离线包

    《基于YOLOv8的船舶机舱灭火系统状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    SQL常用日期和时间函数整理及使用示例

    SQL常用日期和时间函数整理及在sqlserver测试示例 主要包括 1.查询当前日期GETDATE 2.日期时间加减函数DATEADD 3 返回两个日期中指定的日期部分之间的差值DATEDIFF 4.日期格式转换CONVERT(VARCHAR(10),GETDATE(),120) 5.返回指定日期的年份数值 6.返回指定日期的月份数值 7.返回指定日期的天数数值

    GSDML-V2.3-Turck-BL20-E-GW-EN-20160524-010300.xml

    GSDML-V2.3-Turck-BL20_E_GW_EN-20160524-010300.xml

    T_CPCIF 0225-2022 多聚甲醛.docx

    T_CPCIF 0225-2022 多聚甲醛.docx

    《基于YOLOv8的智能仓储货物堆码倾斜预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    《基于YOLOv8的智能仓储货物堆码倾斜预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计

    蚕豆脱壳机设计.zip

    蚕豆脱壳机设计.zip

    附件2-2:台区智能融合终端入网专业检测单位授权委托书.docx

    台区终端电科院送检文档

    Y6一39一No23.6D离心通风机 CAD().zip

    Y6一39一No23.6D离心通风机 CAD().zip

    django自建博客app

    django自建博客app

    附件3-4:台区智能融合终端全性能试验增值税发票开具确认单.docx

    台区终端电科院送检文档

Global site tag (gtag.js) - Google Analytics