ffmpeg转HLS参数介绍(ffmpeg转m3u8参数)
参考文章:.m3u8播放列表文件(索引格式文件)、HLS(HTTP Live Streaming)协议介绍
参考文章:ffmpeg教程笔记(C++ffmpeg库应用开发)命令行使用篇——第三章:FFmpeg转封装——视频文件转M3U8(转HLS)
文章目录
FFmpeg转HLS参数详解
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文中,我们将介绍使用FFmpeg进行HLS (HTTP Live Streaming) 转码的相关参数。
1. 基础命令
在介绍参数之前,需要理解基础的FFmpeg命令行语法:
ffmpeg -i input.mp4 output.m3u8
这是一个最简单的示例,将MP4文件转换为HLS流。-i
是输入文件的标志,后面紧跟着的是输入文件的路径。
2. HLS相关参数
以下是一些与HLS转换相关的重要参数:
-hls_time
此选项设置每个HLS分片的最大持续时间(以秒为单位)。默认值为2秒。例如,-hls_time 10
将使每个分片的持续时间为10秒。
-hls_list_size
此选项设置播放列表中保存的最大分段数量。默认情况下,所有分段都会保留。如果设置为0,那么将不再生成新的播放列表文件,而是覆盖旧的文件。例如,-hls_list_size 5
将只保留最新的5个分段。
-hls_wrap
此选项确定当分段索引达到hls_list_size
所设置的大小时,是否开始覆盖旧的分段文件。例如,-hls_wrap 10
将在生成10个分段后开始覆盖最早的分段。
-hls_flags
此选项允许用户设置各种HLS标志。例如:
delete_segments
:删除过时的分段。append_list
:在现有列表而不是新列表中添加新分段。
3. 高级参数
一些高级的FFmpeg参数可以更精细地控制HLS流的转换:
-start_number
此选项用于设置播放列表中首个媒体分段的序列号。例如,-start_number 100
将使首个分段的序列号为100。
-start_number
是ffmpeg在转换视频到HLS格式时使用的一个参数。这个参数主要用来指定生成的HLS切片的起始索引号。例如,如果你设定
-start_number 0
,那么生成的第一段切片文件名可能会是fileSequence0.ts
,然后是fileSequence1.ts
,以此类推。如果你设定
-start_number 100
,那么生成的第一段切片文件名可能会是fileSequence100.ts
,然后是fileSequence101.ts
,以此类推。这个参数对于某些特定场景非常有用,比如你希望继续一个已经存在的HLS流,并且不希望覆盖已经存在的切片。
-hls_allow_cache
此选项指定是否允许客户端缓存媒体分段。例如,-hls_allow_cache 0
将禁止客户端缓存分段。(但事实上似乎无法禁用,用户想缓存时仍然可以缓存)
-hls_key_info_file
如果你需要对HLS进行加密,这个参数可以指定一个包含秘钥信息的文件。例如,-hls_key_info_file key_info.txt
将使用该文本文件中的秘钥信息对HLS流进行加密。
-hls_base_url
此选项可以为所有分段URL添加一个前缀。例如,-hls_base_url http://myserver.com/
将会把这个URL加到m3u8文件中每个分片的前面。
使用场景
-hls_base_url http://myserver.com/
这个有什么用?如果我用nginx代理,根本不需要网络url前缀啊,这个是在什么场景下需要把网络url拼凑在前面?
-hls_base_url
参数在一些特殊的应用场景下会很有用。其主要作用是在生成的 .m3u8 文件中,为每个分片的 URI 添加一个基础 URL 前缀。假设你的流媒体服务器和你的内容分发网络(CDN)不在同一个地方,或者你需要将 HLS 分片放在不同的域名或服务器上,这时候
-hls_base_url
就非常有用了。例如,你可以把所有的 .ts 文件上传到 CDN 或者云存储服务,然后在 .m3u8 播放列表文件中,使用完整的 URL(包含http://mycdn.com/
前缀)来引用这些 .ts 文件。这样,客户端播放器就可以直接从 CDN 或云服务上获取分片,而不是从你的原始流媒体服务器获取。另外,如果你的应用需要跨域访问 HLS 流,那么
-hls_base_url
参数也会非常有用。因为在同源策略下,Web
页面只能获取和其自身同源的资源,如果需要获取其他源的资源,就需要使用完整的 URL。所以,即使你使用 nginx 代理,有些情况下也可能需要使用
-hls_base_url
参数。
-hls_playlist_type
此选项设置播放列表类型。例如,-hls_playlist_type vod
将生成点播(VOD)样式的播放列表。另一个选项是 event
,它将生成一个"live"样式的播放列表,但如果新的分片被添加,旧的不会被删除。
-hls_segment_filename
此选项允许用户指定分段文件的命名模式。例如,-hls_segment_filename 'segment%d.ts'
将使用给定的模式为分段文件命名。
-hls_flags single_file
此选项使得所有媒体数据都被写入一个单独的分段文件,同时生成一个与之配套的索引文件。这可以避免产生大量的小文件。
-hls_flags independent_segments
此选项强制每个分段文件都从新的关键帧开始,这样可以确保每个分段文件都可以独立解码。
-hls_flags discont_start
此选项使播放列表以EXT-X-DISCONTINUITY标签开始,这在有广告插入等情况下可能很有用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!