Skip to content

Commit 8d4a19c

Browse files
committed
update
1 parent de97a2f commit 8d4a19c

3 files changed

Lines changed: 17 additions & 27 deletions

File tree

VideoDevelopment/视频封装格式/MP4格式详解.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ moov和mdat这两个Atom顺序不固定,一般来说都是moov在前。
4545

4646
#### ftyp(File Type Box)
4747

48-
声明该违建为MP4文件的相关信息,必须在第一个,而且只有一个
48+
声明该文件为MP4文件的相关信息,必须在第一个,而且只有一个
4949

5050
#### moov(movie box)
5151

@@ -102,4 +102,4 @@ mvhd定义了整个movie的特性,通常包含媒体无关的信息,例如
102102
---
103103

104104
- 邮箱 :charon.chui@gmail.com
105-
- Good Luck!
105+
- Good Luck!

VideoDevelopment/视频封装格式/fMP4 vs ts.md

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,18 @@ MP4,全称MPEG-4 Part 14,是一种使用MPEG-4的多媒体电脑档案格
1212

1313
### 媒体数据与元数据的分离
1414

15-
在mp4格式中,元数据可以和媒体数据很好地分开存储,后者都在mdat box中,而在ts中,诸多es流和header/metadata信息是复用在一起的。(TODO:介绍ts中的metadata信息怎么存储)。
15+
在mp4格式中,元数据可以和媒体数据很好地分开存储,后者都在mdat box中,而在ts中,诸多es流和header/metadata信息是复用在一起的。
1616
元数据的分离允许我们在streaming中先读取各个流的元数据,知道他们的媒体内容的属性(比如不同的视频质量、不同的语言等),从而可以更好地在不同的media data之间做自适应切换。
1717
当然,在更实际的应用场景中,比如在dash协议中会直接把这些元数据信息写在mpd中,player可以只读一个mpd就知道各个媒体数据的属性
1818

1919
### 各个Track独立存储
2020

21-
在fmp4中,不仅媒体数据和metadata相互独立的存储,音视频track的数据也可以分开存储,这里的“分开”已经不仅仅局限于box层面的分开,而是真的可以分开存储于不同的目录。在这种情况下,player只需要读一个记录了它们各自存储位置的manifest,即可去对应的位置download它们的分片,只要做好音视频分片之间的同步工作,就可以正常的播放。
22-
举个例子,下面是一个dash中常见的mpd:
23-
![这里写图片描述](https://www.itdaan.com/imgs/5/4/8/5/76/090fc502224c3e083760a2300d06e866.jpe)
24-
在这个mpd中我们看到视频的分片都是存储在video/1/这个目录下,而音频分片都存储在audio/und/mp4a/1这个目录下,而player还是可以将它们拼接到一起完成播放。
25-
相对地,在streaming TS流时,音视频往往是复用在一起的,以HLS这个应用场景为例的话,server端一定还需要提前将TS切片做好,这样就会带来几个问题:
21+
在fmp4中,不仅媒体数据和metadata相互独立的存储,音视频track的数据也可以分开存储,这里的“分开”已经不仅仅局限于box层面的分开,而是真的可以分开存储于不同的目录。在这种情况下,player只需要读一个记录了它们各自存储位置的manifest,即可去对应的位置download它们的分片,只要做好音视频分片之间的同步工作,就可以正常的播放。
22+
相对地,在streaming TS流时,音视频往往是复用在一起的,以HLS这个应用场景为例的话,server端一定还需要提前将TS切片做好,这样就会带来几个问题:
2623
**1. 媒体文件存储成本和媒资管理成本增加**
2724
假设server端将video track编码为三个质量级别V1, V2, V3,audio track也被编码为三个质量级别A1, A2, A3,那么如果利用fmp4格式的特性,我们只需要存储这6份媒体文件,player在播放时再自主组合不同质量级别的音视频track即可。而对于TS,则不得不提前将3x3=9种不同的音视频复用情况对应的媒体文件都存储到server端,平白无故多出三份文件的存储成本。实际中,因为要考虑到大屏端、小屏端、移动端、桌面端、不同语言、不同字幕等各种情况,使用TS而造成的冗余成本将更加可观。同时,存储文件的增加也意味着媒资管理成本的增加。这也是包括Netflix在内的一些公司选择使用fmp4做streaming格式的原因。
2825
**2. manifest文件更加复杂**
29-
fmp4格式的特性可以确保每一个单独的媒体分片都是可解密可解码的(当然player需要先从moov box中读到它们的编解码等信息),这意味着server端甚至根本不需要真的存储一大堆分片,player可以直接利用byte range request技术从一个大文件中准确地读出一个分片对应的media data,这也使得对应manifest(mpd)文件可以更加简洁,如下:
30-
![这里写图片描述](https://www.itdaan.com/imgs/2/0/5/0/35/0e7a66325da9f454b13b32692004c33d.jpe)
26+
fmp4格式的特性可以确保每一个单独的媒体分片都是可解密可解码的(当然player需要先从moov box中读到它们的编解码等信息),这意味着server端甚至根本不需要真的存储一大堆分片,player可以直接利用byte range request技术从一个大文件中准确地读出一个分片对应的media data,这也使得对应manifest(mpd)文件可以更加简洁。
3127
针对不同语言的音频,都只需要存一个大文件就够了。
3228
相对地,在streaming TS流时,不得不在manifest(m3u8)文件中把成百上千个ts分片文件全都老老实实地记录下来。
3329
**3.服务器的cache效率会降低**
@@ -43,7 +39,6 @@ fmp4格式的特性可以确保每一个单独的媒体分片都是可解密可
4339

4440
无缝码流切换实现的关键在于:当第一个码流播放结束时,也就是发生切换的时间,第二个码流一定要以关键帧开始播放。在streaming TS流时,因为不能保证每一个TS chunk一定以关键帧开始,做码流切换时就意味着要同时download两个码流的相应分片,同时解析两个码流,然后找到关键帧对应的位置,才能切换。同时下载、解析两个码流的媒体内容对网络带宽以及设备性能都形成了挑战。而且有意思的是,如果当前网络环境不佳,player想要切换到低码率码流,结果还要在本来就不好的网络环境下同时进行两个码流的下载,可谓是雪上加霜。
4541
而在fmp4中,除了保证各个分片一定以IDR帧开始外,还能保证不同码流的分片之间在时间线上是对齐的。而且streaming fmp4流时因为不要求音视频复用存储,也就意味着视频和音频的同步点可以不一样,视频可以全都以GOP边界作为同步点,音频可以都以sync frame作为同步点,这都使得无缝码流切换更简单。
46-
TODO:介绍在分片中间进行切换的情况
4742

4843
### 与DRM的集成
4944

@@ -67,4 +62,4 @@ CENC使用的就是fMP4格式,这是利用了fMP4中音视频可以不复用
6762
---
6863

6964
- 邮箱 :charon.chui@gmail.com
70-
- Good Luck!
65+
- Good Luck!

VideoDevelopment/视频封装格式/视频封装格式.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,15 @@
1111

1212
常用视频封装格式及对应的文件格式:
1313

14-
| 视频封装格式 | 视频文件格式 |
15-
16-
| ------ | ------ |
17-
18-
| AVI(Audio Video Interleave) | AVI |
19-
| WMV(Windows Media Video) | WMV |
20-
| MPEG分为MPEG-1,MPEG-2,MPEG-4 | MPG MPEG VOB DAT 3GP MP4 |
21-
| Matroska | MKV |
22-
| Real Video | RM RMVB |
23-
| QuickTime File Format | MOV |
24-
| Flash Video | FLV |
25-
26-
27-
14+
| 视频封装格式 | 视频文件格式 |
15+
| ------ | ------ |
16+
| AVI(Audio Video Interleave) | AVI |
17+
| WMV(Windows Media Video) | WMV |
18+
| MPEG分为MPEG-1,MPEG-2,MPEG-4 | MPG MPEG VOB DAT 3GP MP4 |
19+
| Matroska | MKV |
20+
| Real Video | RM RMVB |
21+
| QuickTime File Format | MOV |
22+
| Flash Video | FLV |
2823

2924

3025
## 音频编码格式
@@ -124,4 +119,4 @@ H.264最大的优势是具有很高的数据压缩比率,在同等图像质量
124119
---
125120

126121
- 邮箱 :charon.chui@gmail.com
127-
- Good Luck!
122+
- Good Luck!

0 commit comments

Comments
 (0)