Nginx+ffmpeg搭建Apple Http Live Streaming笔记
程序员文章站
2023-12-22 18:38:28
...
起始Nginx来搭建HLS步骤非常少
安装好Nginx,然后跑起来
把切片好的视频和m3u8文件放到部署目录,直接访问就可以了
重点是(切片)视频
网上国内国外的找了好多博客
这里一定注意一点,不要用VLC播放器来测试,最好用iPad或者iPhone,再么用Safari 开发模式下模拟iPad、iPhone的浏览器模式播放
因为在网上找了很多大家说VLC源码里面对HLS协议支持的不好,甚至快进暂停在源码里压根就没实现!!
下面是ffmpeg对视频进行切片的命令
ffmpeg -y -i %(filename)s -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r %(fps)s -profile:v baseline -b:v %(bitrate)sk -maxrate %(bitrate)sk -force_key_frames %(keyframe_str)s -s %(width)sx%(height)s %-f segment -segment_list %(target_dir)sindex_%(bitrate)s.m3u8 -segment_time %(segment_size)s -segment_list_type m3u8 %(filenameNoExt)s_%(count)s.ts
比如
ffmpeg -y -i infile.mp4 -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r 25 -profile:v baseline -b:v 1500k -maxrate 2000k -force_key_frames 50 -s 640×360 -map 0 -flags -global_header -f segment -segment_list /tmp/index_1500.m3u8 -segment_time 10 -segment_format mpeg_ts -segment_list_type m3u8 /tmp/segment%05d.ts
https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment
上面这个链接介绍了大概的命令解释,但是ffmpeg开发的人多,版本更新的也快,就是写说明文档的人特别少,写的也让人看不懂,不会用啊!!!
我的文件是用的MP4
所以用了一下命令
ffmpeg -i input.mp4 -codec copy -map 0 -bsf h264_mp4toannexb -c copy -f segment -segment_list ™output.m3u8 -segment_time 10 output-%03d.ts
目前还有一个需要研究,就是我把文件放在其他路径,写成 绝对路径的时候,.m3u8文件里面也会对应编程绝对路径,就会导致文件播放不了,这个还有待于继续研究,先坐下笔记
安装好Nginx,然后跑起来
把切片好的视频和m3u8文件放到部署目录,直接访问就可以了
重点是(切片)视频
网上国内国外的找了好多博客
这里一定注意一点,不要用VLC播放器来测试,最好用iPad或者iPhone,再么用Safari 开发模式下模拟iPad、iPhone的浏览器模式播放
因为在网上找了很多大家说VLC源码里面对HLS协议支持的不好,甚至快进暂停在源码里压根就没实现!!
下面是ffmpeg对视频进行切片的命令
ffmpeg -y -i %(filename)s -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r %(fps)s -profile:v baseline -b:v %(bitrate)sk -maxrate %(bitrate)sk -force_key_frames %(keyframe_str)s -s %(width)sx%(height)s %-f segment -segment_list %(target_dir)sindex_%(bitrate)s.m3u8 -segment_time %(segment_size)s -segment_list_type m3u8 %(filenameNoExt)s_%(count)s.ts
比如
ffmpeg -y -i infile.mp4 -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r 25 -profile:v baseline -b:v 1500k -maxrate 2000k -force_key_frames 50 -s 640×360 -map 0 -flags -global_header -f segment -segment_list /tmp/index_1500.m3u8 -segment_time 10 -segment_format mpeg_ts -segment_list_type m3u8 /tmp/segment%05d.ts
https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment
上面这个链接介绍了大概的命令解释,但是ffmpeg开发的人多,版本更新的也快,就是写说明文档的人特别少,写的也让人看不懂,不会用啊!!!
我的文件是用的MP4
所以用了一下命令
ffmpeg -i input.mp4 -codec copy -map 0 -bsf h264_mp4toannexb -c copy -f segment -segment_list ™output.m3u8 -segment_time 10 output-%03d.ts
目前还有一个需要研究,就是我把文件放在其他路径,写成 绝对路径的时候,.m3u8文件里面也会对应编程绝对路径,就会导致文件播放不了,这个还有待于继续研究,先坐下笔记