问题描述
我有一个包含一首歌曲的 FLAC 文件。我想创建一个 HLS 流,其中质量最好的流是 FLAC(匹配输入,因此只是通过但分块),然后是 AAC-LC 320、160 和 96Kbps。
我该怎么做?
解决方法
以下命令是一个很好的起点:
./ffmpeg -i my.flac -map 0:a -map 0:a -map 0:a -map 0:a -c:a:0 flac -c:a:1 aac -c:a:2 aac -c:a:3 aac -b:a:1 320k -b:a:2 160k -b:a:3 96k -f hls -hls_playlist_type vod -master_pl_name master.m3u8 -var_stream_map "a:0 a:1 a:2 a:3" stream_%v.m3u8
一些解释:
-
-map 0:a
添加音频输入 4 次(0:a 表示来自第一个输入文件 (0) 的音频流) -
-c:a:0
为每个流设置编解码器(0 = flac;1+2+3 为 aac) -
-b:a:0
设置每个流的比特率(aac 320/160/96kbits 为 1-3) -
-f hls
因为你想要 HLS -
-hls_playlist_type vod
保留 HLS 流的所有片段 -
-master_pl_name master.m3u8
主播放列表的名称(包含所有 4 个流) -
-var_stream_map "a:0 a:1 a:2 a:3"
将所有 4 个音频流添加到输出 -
stream_%v.m3u8
每个流的 HLS 播放列表的名称(带有用于流变体的占位符%v