官方教程:
基于 HTTP 的动态自适应流式处理 (DASH) 复用器,可创建分段 以及符合 MPEG-DASH 标准 ISO/IEC 23009-1:2014 的清单文件。
有关详细信息,请参阅:
- ISO 破折号规格:http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
- WebM DASH规格:https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
它为每个流创建 MPD 清单文件和分段文件。
段文件名可能包含与段模板一起使用的预定义标识符 如本标准第5.3.9.4.4节所定义。可用的标识符为“$RepresentationID$”, “$Number$”、“$Bandwidth$”和“$Time$”。 除了标准标识符外,还支持特定于 ffmpeg 的“$ext$”标识符。 当指定ffmpeg时,会将文件名中的$ext$替换为muxing格式的扩展名,例如mp4,webm等,
ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline \
-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0 \
-b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1 \
-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd
-map 0 从输入索引 #0(第一个输入)中选择所有流。
-c:a libfdk_aac 指定音频编码器为libfdk_aac
-c:v libx264 指定视频编码器为libx264
-b:v:0 800k 设置输出第一个视频码率为800k
-b:v:1 300k 设置输出第二个视频码率为300k
-s:v:1 320x170 设置输出分辨率为320x170
-profile:v:1 baseline H264编码器参数
-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0 H264编码器参数
-keyint_min 120 设置最小关键帧间隔
-g 120 设置关键帧间隔。
-sc_threshold 0 设置场景切换不强行插入关键帧
-b_strategy 0
-ar:a:1 22050
-use_timeline 1 在区段模板中启用 (1) 或禁用 (0) 段时间轴
-use_template 1 启用 (1) 或禁用 (0) 使用区段模板而不是区段列表
-window_size 5 实时更新只保留5个切片
-adaptation_sets "id=0,streams=v id=1,streams=a"
将流分配给适配集。语法是“id=x,streams=a,b,c id=y,streams=d,e”,其中x和y是ID 的适应集和 A、B、C、D 和 E 是映射流的索引。
要将所有视频(或音频)流映射到 AdaptationSet,可以使用“v”(或“a”)作为流标识符而不是 ID。
如果未定义分配,则默认为每个流设置一个适应集。
-f dash 文件格式,表示切片dash
seg_duration duration
以秒为单位设置段长度(可以设置小数值)。值为 启用和禁用时被视为平均段持续时间,所有其他时被视为最小段持续时间 用例。use_templateuse_timeline
frag_duration duration
设置段内片段的长度(以秒为单位)(可以设置小数值)。
frag_type type
设置碎片的间隔类型。
window_size size
设置清单中保留的最大段数。
extra_window_size size
设置从磁盘中删除之前保留在清单外部的最大段数。
remove_at_exit remove
完成后启用 (1) 或禁用 (0) 删除所有段。
use_template template
启用 (1) 或禁用 (0) 使用区段模板而不是区段列表。
use_timeline timeline
在区段模板中启用 (1) 或禁用 (0) 段时间轴。
single_file single_file
启用 (1) 或禁用 (0) 将所有段存储在一个文件中,使用字节范围访问。
single_file_name file_name
用于基本网址的达世币模板化名称。隐含设置为“1”。在模板中,“$ext$”将替换为特定于段格式的文件扩展名。single_file
init_seg_name init_name
用于初始化段的 DASH 模板化名称。默认值为 “init-stream$RepresentationID$.$ext$”。“$ext$”将替换为特定于段格式的文件扩展名。
media_seg_name segment_name
用于媒体段的 DASH 模板名称。默认值为“chunk-stream$RepresentationID$-$Number%05d$.$ext$”。“$ext$”将替换为特定于段格式的文件扩展名。
utc_timing_url utc_url
将以 ISO 格式返回 UTC 时间戳的页面的 URL。示例:“https://time.akamai.com/?iso”
method method
使用给定的 HTTP 方法创建输出文件。通常设置为 PUT 或 POST。
http_user_agent user_agent
覆盖 HTTP 标头中的用户代理字段。仅适用于 HTTP 输出。
http_persistent http_persistent
使用持久 HTTP 连接。仅适用于 HTTP 输出。
hls_playlist hls_playlist
生成HLS播放列表文件。主播放列表是使用文件名生成的。 为每个流生成一个媒体播放列表文件,文件名为 media_0.m3u8、media_1.m3u8 等。hls_master_name
hls_master_name file_name
HLS 主播放列表名称。默认值为“master.m3u8”。
streaming streaming
启用 (1) 或禁用 (0) 输出的块流模式。在区块流式处理中 模式,每个帧将是一个形成一个块的 moof 片段。
adaptation_sets adaptation_sets
将流分配给适配集。语法是“id=x,streams=a,b,c id=y,streams=d,e”,其中x和y是ID 的适应集和 A、B、C、D 和 E 是映射流的索引。
要将所有视频(或音频)流映射到 AdaptationSet,可以使用“v”(或“a”)作为流标识符而不是 ID。
如果未定义分配,则默认为每个流设置一个适应集。
可选语法是“id=x,seg_duration=x,frag_duration=x,frag_type=type,descriptor=descriptor_string,streams=a,b,c id=y,seg_duration=y,frag_type=type,streams=d,e”等等, 描述符对于 ISO/IEC 23009-1:2014/Amd.2:2015 定义的方案很有用。 例如,-adaptation_sets “id=0,descriptor=<SupplementalProperty schemeIdUri=\”urn:mpeg:dash:srd:2014\“ value=\”0,0,0,1,1,2,2\“/>,streams=v”。 请注意,描述符字符串应为自闭合 xml 标记。 seg_duration、frag_duration和frag_type覆盖每个适应集的全局选项值。 例如,-adaptation_sets “id=0,seg_duration=2,frag_duration=1,frag_type=持续时间,流=v id=1,seg_duration=2,frag_type=无,流=a” type_id将改编集标记为包含用于引用改编集的特技模式的流。 例如,-adaptation_sets “id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1”
timeout timeout
设置套接字 I/O 操作的超时。仅适用于 HTTP 输出。
index_correction index_correction
启用 (1) 或禁用 (0) 段索引更正逻辑。仅在启用和禁用时适用。use_templateuse_timeline
启用后,逻辑将监视段索引的流。如果流的 段索引值不在预期的实时位置,则逻辑 更正该索引值。
通常,在实时流式传输用例中需要此逻辑。网络带宽 波动在长期流式传输中很常见。每次波动都可能导致 段索引落后于预期的实时位置。
format_options options_list
使用分隔列表设置容器格式 (mp4/webm) 选项 键=值参数。包含特殊字符的值必须是 逃脱。::
global_sidx global_sidx
写入全局 SIDX 原子。仅适用于单个文件,mp4输出,非流媒体模式。
dash_segment_type dash_segment_type
可能的值:
auto
如果设置了此标志,将根据流编解码器选择破折号段文件格式。这是默认模式。
mp4
如果设置了此标志,则破折号段文件将采用 ISOBMFF 格式。
webm
如果设置了此标志,则破折号段文件将采用 WebM 格式。
ignore_io_errors ignore_io_errors
在打开和写入期间忽略 IO 错误。对于具有网络输出的长时间运行很有用。
lhls lhls
启用低延迟 HLS(LHLS)。添加具有当前段 URI 的 #EXT-X-预取标记。 HLS.js玩家们正试图标准化一个开放的LHLS规范。规范草案提供 https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md 此选项尝试符合上述开放规范。 它会自动启用沙选项。 这是一项实验性功能。streaminghls_playlist
注意:这不是Apple版本的LHLS。见https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis
ldash ldash
通过约束某些元素的存在和值来启用低延迟达世币。
master_m3u8_publish_rate master_m3u8_publish_rate
在指定的片段间隔数之后,每隔一次重复发布主播放列表。
write_prft write_prft
在支持的流上写入创建者参考时间元素。这也使写作成为可能 基础复用器中的 PRFT 框。仅在启用该选项时适用。 默认情况下,它设置为 auto,在这种情况下,复用器将尝试仅在模式下启用它 需要它。utc_url
mpd_profile mpd_profile
设置一个或多个清单配置文件。
http_opts http_opts
要传递给底层 HTTP 的键=值选项的 :-分隔列表 协议。仅适用于 HTTP 输出。
target_latency target_latency
设置预期的服务目标延迟(以秒为单位)(可以设置小数值)。仅在启用和选项时适用。 这是客户端可用于测量服务延迟的信息字段。streamingwrite_prft
min_playback_rate min_playback_rate
设置指示的最低播放速率,以便自动 调整客户端正常播放期间的播放延迟和缓冲区占用。
max_playback_rate max_playback_rate
设置指示的最大播放速率,以便自动 调整客户端正常播放期间的播放延迟和缓冲区占用。
update_period update_period
为动态内容设置 mpd 更新周期。 该单位是第二个。
Comments NOTHING