Adobe HTTP Dynamic Streaming (HDS) manifest 文件 f4m bootstrap属性解析

  首先介绍一下应用背景,我们使用的很多浏览器都依赖Adobe Flash Player 播放视频文件。Flash Player是一个播放的客户端,客户端和服务端之间的流通信有几套实现的标准。包括这里介绍了HDS,Apple的Http Live Streaming等。HDS主要思路是,在服务端将一个视频文件分割成segment节,segment节表示的是这个视频的几种不同分辨率模式,针对某种分辨率的segment节,由可以将视频划分成片,每一片段都是视频的一小段时间。而分段之后会有一个类似表的信息来用来索引这些问题件,即这里说到的manifes文件,后缀名为f4m。f4m文件相关信息可以在网上找到。

  manifes文件中最主要的部分就是bootstrapInfo标签。bootstrapInfo标签包含了视频的索引信息,即Flash Player在播放的时候,会根据索引的条目来发送相应请求。比如http请求可能类似于http://foo.bar/foo/bar/Seg1-Frag1,http://foo.bar/foo/bar/Seg1-Frag30这样的连接地址格式。bootstrapInfo里面的数据可以是来自其他外部链接,也可以直接写在标签里。按照其官方文档所描述的信息,bootstrapInfo数据为BASE64编码数据,解码之后,发现全是乱码也不要慌。看起来是乱码,其实只是因为那些数据都是二进制而不是文本格式的而已,数据首部会发现有abst,asrt,afrt字样,说明的确是解码了。

abst: 表示HDS内容的总体信息 adobe bootstrap Info box table

asrt: 如果有多个segment 应该会有多个asrt字样,表示segment总体信息 adobe segment run table

afrt: 表示fragment总体信息 adobe fragment run table

  因为研究这个是为了要知道一个segment有多少的fragment,所以查阅了一下flv specification。

其中UI8表示unsigned int 8 即占用一个字节,UI24,UI32以此类推。而String为UTF-8格式,遇到0x00之后表示字符串终止。

随后的三个字节即保存的是一个segment有多少fragment数量。这样后面就可以提取这一个信息了。

时间: 2024-11-26 06:23:58

Adobe HTTP Dynamic Streaming (HDS) manifest 文件 f4m bootstrap属性解析的相关文章

浅析一个Manifest文件

在Android平台的应用程序开发过程中,Manifest文件举足轻重.每一个应用程序都要有一个Manifest文件,他配置了应用程序在Android系统上的基本信息. 下面对AOSP中的一个manifest文件做个简单解析,以期了解manifest文件的大概结构. 例子取自AOSP4.4 源码中的 frameworks/base/packages/SystemUI/AndroidManifest.xml (有删减) <manifestxmlns:android="http://schem

Android manifest文件中的标签详细介绍

概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: --为Java应用程序指定一个独一无二的名字. --描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容. --定义哪一个成分是主要的.比如主线程等. --声明程序正常运行所需要的权限.比如,读写SD卡等. --声明该程序的API Level,低于该API

Manifest文件的最新理解

今天看了Manifest文件内容的相关视频,感觉对知识的理解深刻了一些: 首先,先来说说这个文件的作用,这个文件可以说是聚集了很多个标签,其实对于每个主标签,在将来编译的时候,都会被处理成一个类,而标签里的属性也就成为了该类的成员变量,这些类究竟起到一个什么样的作用呢,主要无外乎标注了一些文件的执行顺序,以及一些权限的赋予,起到一个辅助的作用. 先来说说这个Manifest文件的整体结构,在默认的情况下,最外边标签是为了声明此文件为XML文件,以及XML文件的版本问题,接下来包裹的标签就到正题了

Manifest文件

Manifest文件是简单的文本文件,它告知浏览器缓存的内容(或不缓存的内容) Manifest文件可以分为三个部分: 1.CAHCEMANIFEST-在此标题下列出的文件将在首次下载后进行缓存. CACHE MANIFEST(必需的) /style.css /html5logo.png /active.js 上面的manifest文件列出三个资源,第一个是样式文件,第二个是png格式的html5logo图片,第三个是JavaScript文件.当manifest文件加载后,浏览器会从网站的根目录

Manifest文件简介

每个Android项目都包含一个Manifest文件-Android Manifest.xml,它存储在项目层次中的最底层.Manifest可以定义应用程序及其组件和需求的结构和元数据. 它包含了组成应用程序的每一个Activity.Service.Content Provider和Broadcast Receiver的节点,并使用Intent Filter 和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的. Manifest文件还可以制定应用程序的元数据(如它的图标.版本号或者主

Android应用程序Manifest文件简介

任何一个Android项目都包含一个AndroidManifest.xml文件,它存储在项目层次中的最底层.Manifest可以定义应用程序及其组件和需求的结构和元数据. 它包含了组成应用程序的每一个Activity.Service.Content Provider和Broadcast Receiver的节点,并且使用Intent Filter和权限来确定这些组件之间以及这些组件和其它应用程序是如何交互的. Manifest文件还可以指定应用程序的元数据(如它的图标.版本号或者主题)以及额外的顶

manifest 文件

什么是.manifest 文件 [现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其 它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不 正确,请重新安装程序……或者是MSVCR80D.dll没有找到什么的(我记得不是很清楚,不过大致是这样的) [分析]看到这样 的提示,当然不会傻到重装咯.第一反应应该是什么配置有问题.或者是缺少了什么依赖的库文件:于是我就根据以前Windows

manifest文件详解

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.exe.phone" <?xml version="1.0" encoding="utf-8"?> <manife

android开发学习笔记(一)-Manifest文件

一:概述 所有的app都要在根目录下AndroidManifest.xml文件,这个文件显示了app告诉android系统的基本信息.在app代码运行之前,android系统从这个文件获取基本信息 功能: 给app的java包起名作为这个app的唯一标识符 声明app中要使用的组件 决定哪些进程持有app组件 确定app需要的用户权限 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 声明a