搭建视频播放服务

安装必备软件

  • libx264
    得到安装源代码 git clone git://git.videolan.org/x264.git
    编译
    1
    2
    ./configure --disable-yasm --enable-shared --enable-static
    make && make install

把so包增加到系统中

1
2
echo '/usr/local/lib/' >> /etc/ld.so.conf
ldconfig

使用

把mp4文件分割为多个ts文件和m3u8

1
ffmpeg -i 2001045000007.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_time 15 -hls_list_size 0 output.m3u8

-hls_time n: 设置每片的长度,默认值为2。单位为秒

-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5

-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量

-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

注意:播放列表的sequence number 对每个segment来说都必须是唯一的,而且它不能和片的文件名(当使用wrap选项时,文件名有可能会重复使用)混淆

生成的m3u8文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
cat output.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:22
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:21.050000,
output0.ts
#EXTINF:11.000000,
output1.ts
#EXTINF:13.500000,
output2.ts
#EXTINF:14.500000,
output3.ts
#EXTINF:16.500000,
output4.ts
#EXTINF:19.600000,
output5.ts
#EXTINF:8.900000,
output6.ts
#EXTINF:14.950000,
output7.ts
#EXTINF:15.050000,
output8.ts
#EXTINF:15.600000,
output9.ts
#EXTINF:15.750000,
output10.ts
#EXTINF:14.000000,
output11.ts
#EXTINF:14.700000,
output12.ts
#EXTINF:15.350000,
output13.ts
#EXTINF:15.000000,
output14.ts
#EXTINF:10.600000,
output15.ts
#EXT-X-ENDLIST

搭建hls播放服务

  • 参考《做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)》

推荐文章