(  作者:孙德生           深大硕士研究生  )
FLV流媒体格式是一种新的视频格式,全称为Flash Video。Flash MX 2004对其提供了完美的支持,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。FLV 是Macromedia 公司开发的属于自己流式视频格式。这种格式是在sorenson 公司的压缩算法的基础上开发出来的[20]。FLV 压缩与转换非常方便,适合做短片。一般FLV 包在 SWF PLAYER 的壳里,并且 FLV 可以很好的保护原始地址,不容易下载到起到保护版权的目的。
Macromedia为了尽早用FLV格式来垄断Web Video应用,取代RM在线视频播放的霸主地位,在FlashMX2004中匆匆增加了一个Video类,短短两三年的时间,FLV就成为了目前最主流的在线视频播放格式,随着被新一代的视频播客网站广泛采用,自从youtube火了以后,flv格式也开始火暴,目前国内视频分享网站,比如六间房、5Show、56、优酷等都使用flv了这个文件技术来实现的。目前 GOOGLE  YOUTUBE 采用FLV ,SOUV.NET 集合全亚洲最多的 FLV,以及百度、新浪、腾讯、猫扑、Maxthon、雅虎等国际国内著名互联网公司的相继投入与看好,以及国际资本大量进入视频播客领域,FLV格式被极大的推广,甚至新浪在自己的BBS也开通了FLV影片上传播放服务[21]
5.5.1 FLV与RMVB对比
我们都知道一般的视频文件,要不就是asf格式、wmv格式使用mediaplayer进行播放,要不就是rm格式用RealPlayer播放。这样的问题是,格式的不同就需要选择不同的播放器,这对于本地计算机没有安装相应播放器的用户来说,这些视频根本无法收看。并且,还由于这些文件的容量过大,下载慢,查看也不很流畅。所以,解决播放器和容量的问题,运用Flash有个方法:将各类视频文件转换成Flash视频文件。容量方面,从FlashMX2004Pro起就支持了转换为Flash视频的功能,经过相关设置后,可缩小原有视频的容量,最终转换的文件扩展名是FLV。
下面就把RMVB和FLV这两种主流视频文件格式简单对比分析如表5-5。对于两种格式,谁更出色,而另一个主要方面就是哪种格式更适合便携式产品采用。
表5-5 RMVB和FLV两种视频文件比较分析:
RMVB格式
FLV格式
分辨率
(700-800)*(272-350)之间
一般播课网影片分辨率为320*240
帧速度
24、25FPS
20FPS左右
文件体积
约5M/分钟,一个影片文件体积在400-700M之间
约1.5M/分钟,一个影片体积在200M左右
视频主要类型
电影/电视剧(动漫)/综艺节目为主
电影、电视剧(动漫)、游戏、新闻、体育视频录象、综艺节目视频、网友自拍影片、视频等
下载行为
在BT网站论坛检索,获得影视下载信息,使得P2P模式BT软件下载
从WEB2.0播客获得,可使用多FLV下载软件
  我们可以看到目前RMVB影片的最大优势是分辨率更高,在电脑上实际播放效果更出色,视频影片多为长片,文件体积较大,需要通过BT或者电驴软件下载。FLV的最大优势是资源类型丰富与文件体积较小,由于分辨率低,在电脑上播放画面质量不如RMVB。但是在PMP上取决于LCD屏的分辨率,因为PMP产品的LCD屏不可能很大,所以在这方面FLV格式的优势还是有很大优势的。
由于网络播客网站越来越受消费者欢迎,FLV视频已经已经无限量,比RMVB更丰富、种类更多的FLV视频资源可直接下载到PMP中播放。
5.5.2FLV解码软件开发
FLV解码软件开发的开发,在本课题中是利用的FFmpeg为基础的。FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案[23]。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码。TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg [24]。FFmpeg主目录下主要有libavcodec、libavformat和libavutil等子目录。其中libavcodec用于存放各个encode/decode模块,libavformat用于存放muxer/demuxer模块,libavutil用于存放内存操作等常用模块。
以flash movie的flv文件格式为例, muxer/demuxer的flvenc.c和flvdec.c文件在libavformat目录下,encode/decode的mpegvideo.c和h263de.c在libavcodec目录下。
FLV视频文件格式实际上并没有明确指出应该使用哪种编码来解析音频和视频数据;它们只是定义了音频流和视频流(或者,有可能是多个音频视频流)如何被绑定在一个文件里面。这就是为什么有时候,当你打开了一个FLV文件时,你只能听到声音,却不能看到图象--因为没有合适的视频解码器。所以,libavformat 用来处理解析视频文件并将包含在其中的流分离出来,而libavcodec 则处理原始音频和视频流的解码。
解码处理流程:
1、   通过函数flvdec_init(void)注册初始化编码器,通过REGISTER_MUXDEMUX(FLV, flv)完成对FLV格式的注册,内含音频视频编解码的初始化;
2、   打开视频文件,通过av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)实现,
通过av_find_stream_info(pFormatCtx)、dump_format(pFormatCtx, 0, filename, false)分析文件数据包编码格式,再把pFormatCtx的流域填满;
3、通过avcodec_find_decoder(pCodecCtx->codec_id)找到相应的解码器,
 4、打开解码器,通过函数(avcodec_open(pCodecCtx, pCodec);
5、视频数据解码通过avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, rawData, bytesRemaining)解析视频数据包,得到视频帧,GetNextFrame(AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame *pFrame );视频编码格式为FLV1;
6、音频数据包通过avcodec_decode_audio()解码,得到的数据存入buffer中,根据时间戳来实现音视频的同步;音频编码格式有PCM、ADPCM、MP3;
7、释放解码器,关闭解码器(codec),avcodec_close(pCodecCtx); 关闭视频文件av_close_input_file(pFormatCtx);
表5-6 FLV解码软件中部分重要处理函数接口
函数接口
作用
flv_probe()
探测文件是否为FLV文件
flv_read_packet ( )
读入数据包,分析数据包
flv_read_close( )
关闭读操作
flv_read_header()
读入头数据
av_register_input_format()
初始化输入格式
5.5.3 FLV开发体会                                           
在开发中,是利用的基础的FFMPEG开源的开发包,在其中提取FLV相关代码进行开发实践,得到最后的解码软件,对于解码代码的编写都是利用开发包里面的,主要工作还是在于移植到本课题的开发平台。因为本课题用的硬件系统的局限性,以及FFMPEG开发包本来也是没有经过严格测试的,最后得到的解码软件在机子上播放,会有卡机现象,不是很流畅。
为了开发出质量更高,符合市场需求的FLV解码软件,除了通过购买编解码库,就只能通过一些开源的包再做深入的开发,得到需要的解码软件产品。

FLV视频格式解码软件开发相关推荐

  1. 关于FLV视频格式的知识整理!

    关于FLV视频格式的知识整理! 什么是FLV? FLV流媒体格式是一种新的视频格式,全称为Flash Video. 它是随着Flash MX的推出发展而来的视频格式,是在sorenson 公司的压缩算 ...

  2. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )

    文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...

  3. 什么是FLV视频格式?FLV视频格式是什么意思?

    Q:什么是FLV视频格式?FLV视频格式是什么意思? FLV是就是FlashVideo,Flash视频,在网页中播放.FLV流媒体格式是一种新的视频格式,全称为FlashVideo.由于它形成的文件极 ...

  4. FLV视频格式详解(转)

    英文名:Flash Video [编辑本段]FLV视频格式的定义 FLV 是FLASH VIDEO的简称,FLV 流媒体格式是一种新的 视频格式,全称为Flash Video.由于它形成的文件极小.加 ...

  5. 狸窝音频剪辑软件_「附下载链接」常用的5款视频格式转换软件,收藏起来吧...

    日常生活中,大家可能会自己制作一些记录生活的小视频,或者作为爱好上传到视频平台,就会用到很多种的视频格式,比如MP4.MKV.WMV.FLV.MOV.DV等等.因为有的视频网站需要特殊格式的视频才能上 ...

  6. 万能视频格式转换器是一款功能强大的全能视频格式转换软件,支持多种视频格式转换。万能视频转换器可以将R...

    万能视频格式转换器是一款功能强大的全能视频格式转换软件,支持多种视频格式转换.万能视频转换器可以将RM.RMVB.AVI.WMV.MPG .MPEG.FLV.3GP.MP4.SWF.ASF.DIVX. ...

  7. 推荐几款免费视频格式转换软件,比格式工厂更好用

    有时,您可能会发现自己无法打开某种格式的视频文件.这是视频转换器可以派上用场的地方,它是专门为更改文件格式而设计的.为了帮助您,这里总结了有史以来最好的 5 个免费视频转换器. 您是否遇到过某个视频文 ...

  8. 苹果mp3软件_推荐超级实用的苹果软件《一,音视频格式转换软件Total Video Converter Pro》...

    推荐超级实用的苹果软件,首推这款Total Video Converter Pro软件,俗称"超级转霸". 好用到什么程度,自然是几乎什么格式都差不多涵盖在里面了. 下面截几张图片 ...

  9. 视频知识点(21)- FLV视频格式入门必看

    <音视频开发>系列-总览 前言 视频封装格式在日常生活和工作中随处可见,FLV就是应用非常广泛的一种视频格式.今天本文的主要内容就是带领大家了解这种视频格式,资深的音视频大佬可以选择性阅读 ...

  10. 视频互动直播软件开发中的连麦问题分析

    直播行业发展至今,我们经常会听到很多朋友谈论"互动直播".那么何谓互动直播呢?其实互动直播的核心在于通过连麦技术,让视频直播有一个超过文字的更深层次的互动交流. 在视频互动直播软件 ...

最新文章

  1. 五子棋java判断平局_2020-10-03 Java初级项目——从零开始制作一个简易五子棋游戏...
  2. [How TO]-Ubuntu 20.04修改终端标题栏文字
  3. hibernate的3种继承映射关系总结——TPH,TPS,TPC
  4. oracle每小时分组查询,Oracle 天内按小时分组查询有关问题
  5. debian与cenos常见命令不同处
  6. 修改某个用户名和密码
  7. php sodium 加密解密,sodium库(加密)
  8. 对话Satya Nadella:大规模AI模型、人机界面或将迎来大突破
  9. 看到别人的简历,mark一下。
  10. 趣味菜单C语言,趣味C语言
  11. P2639 [USACO09OCT]Bessie的体重问题 【背包问题】
  12. 默认文件夹为空,如何从Microsoft Edge下载收藏夹
  13. ThinkSNS电商系统,带你玩转社群经济
  14. 好东西再安利一遍!!
  15. 邮件服务器 文件服务器,搭建邮件、终端和文件服务器应用方案
  16. 智慧环保检测平台Axure原型图
  17. 用批处理共享打印机电脑设置
  18. Python中的变量作用域,LEGB规则和闭包原理
  19. 【Java】全栈工程师
  20. css3 skew变形

热门文章

  1. linux安装razer鼠标驱动
  2. 文件服务器和ftp服务器的区别
  3. 北京亿阳信通java笔试题_亿阳信通笔试
  4. OUC_SE_Group04_Blog1
  5. 深圳哪个驾校比较好?
  6. ucdavis计算机科学专业,UCDavis的ECE「加州大学戴维斯分校电气与计算机工程系」...
  7. 主线程启动多个子线程,子线程彼此之间并发执行,互不影响
  8. 5个可以让你事半功倍的Python自动化脚本
  9. 腾讯笔试题——java题总结无答案
  10. Lattice LSTM