当前位置: 首页 > news >正文

自己的网站怎么建立汕头网站建设工作

自己的网站怎么建立,汕头网站建设工作,中国住建部网站查询网,WordPress修改站点名称_目录 一、文件结构概述 二、内容描述 2.1 字段描述 2.2 Tag 2.2.1 Tag Header 2.2.2 Script Tag Data 2.2.3 Audio Tag Data 2.2.4 Video Tag Data 三、解析过程 四、知识点汇总 五、FLV使用场景及优缺点 六、QA 1、previous tag size是否有存在必要#xff1f;因…目录 一、文件结构概述 二、内容描述 2.1 字段描述 2.2 Tag 2.2.1 Tag Header 2.2.2 Script Tag Data 2.2.3 Audio Tag Data 2.2.4 Video Tag Data 三、解析过程 四、知识点汇总 五、FLV使用场景及优缺点 六、QA 1、previous tag size是否有存在必要因为tag header固定是11字节tag header中还有有一个字段DataSize描述TagData的大小Tag的大小 11(TagHeader大小)TagHeader-DataSize此时就不需要previous tag size了而且previous tag size描述的是前一个tag的大小tag都读完之后才会读取到previous tag size才能知道tag的大小 2、如何识别出这一段数据是previous tag size呢有什么标识别吗 3、AAC/AVC sequence header都有什么作用包含哪些内容 4、script tag、AAC/AVC sequence header 在什么情况会有多个 5、为什么audio tag header中定义了音频的相关参数我们还需要传递AudioSpecificConfig呢 6、video tag中”相对时间戳“有什么用 7、tag data中的数据是一帧数据吗 一、文件结构概述 1、 写在前面学习的时候一定要对照官方文档、结合分析工具才能深入理解 1官方文档http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf 2推荐FLV的分析工具 FlvParserGitHub - imagora/FlvParser: FLV Parser.需要自己编译调试windowsMediaInfo 2、FLVFlash Video封装格式是由一个文件头flv header和一个文件体flv body组成。 3、FLV的body由一对对的previous tag size tag组成。previous tag size记录了前一个tag的大小用于逆向读取处理previous tag size本身的大小是固定的占4个字节。一般一个flv文件由一个头部信息一个script tag以及若干个video tag和audio tag组成。 4、Tag一般可以分为3种类型脚本帧数据类型script、⾳频数据类型audio、视频数据video。每个tag都由header和data组成比如tag是script类型那tag header 就是 script headertag data 就是 script data一个tag只能是三种类型的其中一种不是一个tag同时包含三种数据类型tag header的字段都是一样tag data的内容是不同的通过tag header来判断tag是哪一种类型。每一种类型tag的内容FLV格式详解_狗蛋儿l的博客-CSDN博客 5、各个数据关系图 说明 Tag 有三种类型audiovideo和script。一个tag只能是其中一种类型通过tag header区分哪种类型。不同类型tag的tag data内容也有所不同所以图中在tag data后面标注了一个“或”字。 Video Tag Body、Audio Tag Body也有两种类型通过Video Tag Header区分是哪种类型所以后面都有一个“或”字。标注灰色是因为视频在H.264时才会有AVC sequence header、AVC NALU其它视频编码格式没有这两种内容。音频只有在AAC时才会有AAC sequence header、AAC raw其它视频编码格式没有这两种内容。 6、文件结构图各种数据在flv内部真实的排列顺序 二、内容描述 2.1 字段描述 2.2 Tag 1、 tag的类型有三种audiovideo和script。 2、每一个tag也是由tag header和tag data组成。tag header里存放的是当前tag的类型、数据区的长度等信息tag data存放的内容根据tag类型的不同而有所不同。 2.2.1 Tag Header 1、tag header包含tag的基本信息 2、从TagType中可以获取tag是哪种类型音频8、视频9、脚本18 3、从DataSize中可以获取tag data的大小是tag data的大小不是整个tag的大小 2.2.2 Script Tag Data 1、tag header中TagType0x12时tag的类型是scrpit tag 2、一般第一个tag的类型就是script tag 3、以不同类型的键值对的形式保存了若干媒体文件的参数数据metadata《FFmpeg音视频开发基础与实战》78页 4、 一般来说该script tag data结构包含两个AMF包。AMFAction Message Format是Adobe设计的一种通用数据封装格式在Adobe的很多产品中应用简单来说AMF将不同类型的数据用统一的格式来描述。 FLV format分析 - 简书AMF包的第一个字节表示包类型如下所示 第一个AMF包封装字符串类型数据。         第1个字节表示AMF包类型一般总是0x02AMF_DATA_TYPE_STRING表示字符串。第2-3个字节为UI16类型值标识字符串的长度一般总是0x000A字符串“onMetaData”的长度。后面字节为具体的字符串一般总为“onMetaData”6F,6E,4D,65,74,61,44,61,74,61。 第二个AMF包封装一个数组类型这个数组中包含了音视频信息项的名称和值。 第1个字节表示AMF包类型一般总是0x08表示数组。第2-5个字节为UI32类型值表示数组元素的个数。后面即为各数组元素的封装。常见的数组元素如下所示。 上面提到的数组元素为元素名称和值组成的对。第1-2个字节表示元素名称的长度假设为L。后面跟着为长度为L的字符串。第L3个字节表示元素值的类型。后面跟着为对应值占用字节数取决于值的类型以不同类型的键值对的形式保存了若干媒体文件的参数数据metadata《FFmpeg音视频开发基础与实战》78页。通过mediaInfo分析可以直观看到 上图中一个数据有4个字段描述key和value分别有两个字段来描述以duration为例进行说明 StringLengthkey的长度即“duration”这个字符串的长度 StringDatakey的内容即“duration” Typevalue的类型即double Valuevalue的值即5.120s key的类型都是stringvalue的类型可以有多种所以key没有描述类型的字段只会描述字符串的长度而value则会有描述类型的字段。 通过ffmpeg获取metadata我们看到的duration是5.120s其实在flv的script tag中有4个字段来描述。 2.2.3 Audio Tag Data 1、音频audio tag data又分为audio tag header和audio tag body数据区编码格式如果不是AAC则audio tag header是1个字节如果是AAC则audio tag header是2个字节多出来一个AACPacketType用来表示audio tag body的类型 2、audio tag data 结构如下 Field Type Comment Audio Tag Header 音频格式 SoundFormat UB4 0 Linear PCM, platform endian 1 ADPCM 2 MP3 3 Linear PCM, little endian 4 Nellymoser 16-kHz mono 5 Nellymoser 8-kHz mono 6 Nellymoser 7 G.711 A-law logarithmic PCM 8 G.711 mu-law logarithmic PCM 9 reserved 10 AAC 11 Speex 14 MP3 8-Khz 15 Device-specific sound flv是不支持g711a的如果要用可能要用线性音频。 采样率 SoundRate UB2 0 5.5-kHz 1 11-kHz 2 22-kHz 3 44-kHz 对于AAC总是3 采样精度 SoundSize UB1 0 snd8Bit 1 snd16Bit 音频声道 SoundType UB1 0 sndMono 单声道 1 sndStereo 立体声双声道 对于AAC总是1 AAC包类型 AACPacketType UB8 只有在AAC时才有此字段表示Audio Tag Body的内容 0 AAC sequence header 1 AAC raw Audio Tag Body 音频数据 AudioData UI[8*n] 如果是PCM线性数据存储的时候每个16bit小端存储有符号。 如果音频格式是AAC则存储的数据是AAC AUDIO DATA否则为线性数组 3、AAC tag body的结构如下两种类型AAC sequence header、AAC raw都是相同的存储结构如上表所示 4、AACPacketTYpe中的AAC sequence header存放的是AudioSpecificConfig它存放了解码AAC音频所需要的详细信息,用于初始化编码器包含了更加详细的音频信息比如采样率、声道数等AudioSpecificConfig详细内容见《ISO-14496-3 Audio》中的1.6.2.1 章节。而且在ffmpeg中有对AudioSpecificConfig解析的函数ff_mpeg4audio_get_config()可以对比的看一下理解更深刻。FLV视频封装格式详解_51CTO博客_flv 格式 5、通常情况下AAC sequence header这种tag在flv文件中只出现1次并且在第一个audio tag中。如果采样率、声道数等信息发生变化则需要重新发送AAC sequence header。 为什么audio tag header中定义了音频的相关参数我们还需要传递AudioSpecificConfig呢 因为当SoundFormat为AAC时audio tag header中的SoundType须设置为1立体声SoundRate须设置为344KHZ但这并不意味着FLV文件中AAC编码的音频必须是44KHZ的立体声。播放器在播放AAC音频时应忽略audio tag header中的参数并根据AudioSpecificConfig来配置正确的解码参数。FFmpeg代码导读——基础篇 - 腾讯云开发者社区-腾讯云) 6、AAC raw 存放的是真正的音频数据 2.2.4 Video Tag Data 1、视频video tag data又分为video tag header 和video tag body数据区编码格式如果不是H.264则vide tag header是1个字节如果是H.264则video tag header是5个字节多出来AVCPacketType和CompositionTime AVCPacketType用来表示VIDEODATA的内容CompositonTime相对时间戳如果AVCPacketType0x01为相对时间戳其它均为0 2、video tag data 结构如下 Field Type Comment Video Tag Header 帧类型  FrameType UB4 1 keyframe (for AVC, a seekable frame)——h264的IDR关键帧可重入帧。 2 inter frame (for AVC, a non- seekable frame)——h264的普通帧 3 d keyframe (reserved for server use only) 5 video info/command frame 编码ID  CodecID UB4 使用哪种编码类型 1 JPEG (currently unused) 2 Sorenson H.263 3 Screen video4: On2 VP6 5 On2 VP6 with alpha channel 6 Screen video version 2 7 AVC AVC包类型 AVCPacketType UB8 只有在H.264时才有此字段 0 AVC sequence header 1 AVC NALU 2 AVC end of sequence(lower level NALU sequence ender is not required or supported) 相对时间戳 CompositionTime UB24 只有在H.264时才有此字段表示Video Tag Body的内容 相对时间戳如果AVCPacketType0x01为相对时间戳其它均为0 Video Tag Body 视频数据 VideoData UI[8*n] AVCPacketType0数据部分为AVCDecoderConfigurationRecord AVCPacketType1数据部分为1个或多个NALU AVCPacketType2数据部分为空 3、AVC sequence header中存放的是AVCDecoderConfigurationRecord包含着是H.264解码相关比较重要信息比如sps和pps信息,用于初始化编码器详细信息见《ISO-14496-15 AVC file format》。它存放的是AVC的编码参数解码时需设置给解码器后方可正确解码。 4、通常情况下AVC sequence header这种Tag在FLV文件中只出现1次并且在第一个video tag中。如果码率、分辨率等信息发生变化则需要重新发送AVC sequence header。 5、ACV NALU存放的是真正的视频数据 两种类型ACV sequence header、AAC NALU都是相同的存储结构如上表所示。 6、CompositionTime(相对时间戳) 相对时间戳的概念需要和PTS、DTS一起理解FFmpeg代码导读——基础篇 - 腾讯云开发者社区-腾讯云 DTS : Decode Time Stamp解码时间戳用于告知解码器该视频帧的解码时间PTS : Presentation Time Stamp显示时间戳用于告知播放器该视频帧的显示时间CTS : Composition Time Stamp相对时间戳用来表示PTS与DTS的差值。 如果视频里各帧的编码是按输入顺序依次进行的则解码和显示时间相同应该是一致的。但在编码后的视频类型中如果存在B帧输入顺序和编码顺序并不一致所以才需要PTS和DTS这两种时间戳。视频帧的解码一定是发生在显示前所以视频帧的PTS一定是大于等于DTS的因此CTSPTS-DTS。 FLV video tag中的TimeStamp不是PTS而是DTS视频帧的PTS需要我们通过DTS CTS计算得到。 为什么audio tag不需要CompositionTime呢 因为audio的编码顺序和输入顺序一致即PTS DTS所以它没有CompositionTime的概念。 三、解析过程 1、通过解析tag header中的TagType的内容获取tag的类型通过DataSize获取tag data大小 2、读取tag data中的Audio/Video Tag Header获取音视频的编码信息 3、读取真正的音视频数据 四、知识点汇总 1、flv header通常是是9字节。 2、previous tag size固定是4字节flv header后的第一个previous tag size的值为0。 3、tag header的大小是都是固定的11字节tag data的大小则不一定因为tag有三种类型audio,video,script不同类型data大小不同不同的video tag也不一定相同。 4、tag header中的tagtype判断出tag是哪种类型音频tagtype8、视频tagtype9、脚本tagtype18。 5、script tag通常是flv文件的第一个tag。 script tag数量不是1的情况如果有字幕则script tag就不是一个了因为字幕的tag类型也是script tag字幕的tag数量是不固定的和audio/video一样字幕的script也贯穿整个flv文件字幕的AMF包类型是“OnTextData”。读取和写入过程详见ffmpeg代码。 6、AAC sequence header是AAC tag body 的一种类型通常情况下AAC sequence header这种tag在flv文件中只出现1次并且在第一个Audio Tag中它存放了解码AAC音频所需要的详细信息。 AAC sequence header数量不是1的情况如果采样率、声道数等信息变化时ffmpeg会新写一个AAC sequence header因为要重新初始化编码器读文件时读到中间的AAC sequence header会将信息重新写入编码器。 7、AVC sequence header是AVC tag body 的一种类型通常情况下AVC sequence header这种tag在flv文件中只出现1次并且在第一个Video Tag中它存放的是AVC的编码参数解码时需设置给解码器后方可正确解码。 AVC sequence header数量不是1的情况如果分辨率、码率等信息变化时ffmpeg会新写一个AVC sequence header因为要重新初始化编码器读文件时读到中间的AVC sequence header会将信息重新写入编码器。 8、FLV video tag中的TimeStamp不是PTS而是DTS视频帧的PTS需要我们通过DTS CTS计算得到。 五、FLV使用场景及优缺点 1、使用场景目前主流的视频网站基本都支持FLV直播、点播都有广泛的应用。 2、优点 1封装后的音视频文件体积小、封装简单等特点非常适合于互联网上使用。 2它的出现有效地解决了视频文件导入Flash后使导出的SWF文件体积庞大不能在网络上很好的使用等问题。 3、缺点 1FLV 参考标准协议中没有定义可以存储 H.265 视频压缩数据如果我们自己将 H.265 的视频数据存储到 FLV 容器中其它播放器不一定能够很好地播放这个视频。所以在我们将视频流、音频流写入到一个封装容器中之前需要先弄清楚这个容器是否支持我们当前的视频流、音频流数据。03如何做音视频的封装与转码-极客时间 2不适合多音轨flv只能有一条音轨和一条视频轨。 六、QA 1、previous tag size是否有存在必要因为tag header固定是11字节tag header中还有有一个字段DataSize描述TagData的大小Tag的大小 11(TagHeader大小)TagHeader-DataSize此时就不需要previous tag size了而且previous tag size描述的是前一个tag的大小tag都读完之后才会读取到previous tag size才能知道tag的大小 参考一位网友的回答Why flv file body use PreviousTagSize rather than NextTagSize?) I think flv tag list in flv body is designed as double linked list. The PreviousTagSize represents the back node point. Actually, the NextTagSize is already included in current node (DataSize syntax in tag header), and it can point to the next node. With double direction linked points, it will be easy and fast to seek previous or latter media packets. 2、如何识别出这一段数据是previous tag size呢有什么标识别吗 没有标识没有字段来描述这一段数据就是previous tag size只能通过tag末尾再偏移4个字节来找到PreviousTagSize 3、AAC/AVC sequence header都有什么作用包含哪些内容 AAC sequence header详见“2.2.2.3 Audio Tag Data - 4” AVC sequence header详见2.2.2.4 Video Tag Data - 3 4、script tag、AAC/AVC sequence header 在什么情况会有多个 详见“4知识点汇总 - 5、6、7” 5、为什么audio tag header中定义了音频的相关参数我们还需要传递AudioSpecificConfig呢 详见“2.2.2.3 Audio Tag Data - 5” 6、video tag中”相对时间戳“有什么用 详见2.2.2.4 Video Tag Data - 6 7、tag data中的数据是一帧数据吗 绝大多数情况下一般正常的文件一个tag是一帧但也不排除个例一个tag包含多帧或者不满一帧或者连续的任意数据这个是特定的音视频格式才行有帧头能够查找的比如MPV(FLV没有)H264(0x00000001头的)MP3等对于这种情况解码前就多处理一步查找一下帧常用的MPVMP3解码器不需要查找内部自己实现了只需要不断送数据就行了。关于flv中tag的问题 从ffmpeg解析tag的过程也可以看出一个tag data对应一个pkt一个pkt就是一帧数据所以一个tag就是一帧数据
http://www.tj-hxxt.cn/news/142345.html

相关文章:

  • 加强网站政务服务建设方案做网站是怎么挣钱的
  • 个人静态网页制作爱站工具seo综合查询
  • pc网站和手机网站怎样做直播网站
  • 做网站傻瓜软件做网站竞争大吗
  • 网站建设合同报价单 模板下载电脑上做简单的网站
  • 网站开发到发布掌握cms建设网站实训报告
  • 如何做好网站内链代码做网站常用单词
  • 江阴做网站的如何制作个人作品网站
  • 企业网站流程图网站建设流程详解
  • 网站设计模板源码做网站开发要多久
  • 网站什么也没动怎么不收录啦如何做情趣网站
  • 网站制作运营公司商城网站建设哪家最好
  • 网站设计广州河池seo快速排名
  • 建设企业网站需要什么wordpress建站流程
  • 大连做网站哪家公司好中山建网站公司
  • 如何建一个自己的网站dedecms 倒计时 天数 网站首页
  • 滨州做网站的科技公司网站随机代码
  • 做网站找个人深圳企业登记注册
  • 海南省城乡建设部网站首页网站建设和网站推广可以同一家做吗
  • 目前哪些企业需要做网站建设的呢WordPress设置用户访问个数
  • 虚拟主机网站建设实训总结大连网站建设企业
  • 如何做搞笑原创视频网站c2c网站内容及功能开始
  • 网站正在建设中的网页怎么做不用fash做的视频网站
  • 营销型网站建设是什么网站邮件系统建设招标
  • 国内f型网页布局的网站动画视频制作软件app
  • 高新手机网站建设公司谷歌手机版下载安装
  • 做网站需要多少兆空间大型网站开发流程和步骤
  • 网站系统建设项目做网站推广维护需要学些什么
  • 专业建站服务建站网网站建设对公司来说重要吗
  • 做个网站多少费用wordpress能做成app吗