ffmpeg -i test.mp4 -c copy -map 0 -f segment -segment_list .\test\test.m3u8 -segment_time 20 .\test\test_%3d.ts
-i test.mp4
: 这是输入文件,即你想要处理的视频文件。-c copy
: 这意味着不对视频或音频进行重新编码,而是直接复制。这样可以更快地完成操作,但前提是你的输入和输出格式必须是兼容的。-map 0
: 这表示从输入文件中选择所有的流(视频、音频、字幕等)。-f segment
: 这告诉ffmpeg
你想要将输出分割成多个段。-segment_list .\test\test.m3u8
: 这指定了一个M3U8播放列表文件的输出路径。这个播放列表将包含所有分割的TS片段的信息。-segment_time 20
: 这指定了每个TS片段的时长,这里是20秒。.\test\test_%3d.ts
: 这是输出TS片段的文件名模板。%3d
是一个占位符,它将被替换为一个三位数的序号,例如test_001.ts
、test_002.ts
等。
ffmpeg -i test.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -f hls -hls_time 60 -hls_list_size 0 -hls_segment_filename .\test\output_%03d.ts .\test\output.m3u8
这是一个使用ffmpeg
命令行的示例,用于将MP4视频文件转换为HLS(HTTP Live Streaming)格式。让我们一步步地解析这个命令:
ffmpeg
: 这是调用FFmpeg程序的命令。FFmpeg是一个非常强大的工具,可以用来处理音频和视频文件。-i test.mp4
:-i
选项后面跟的是输入文件的名称,这里是test.mp4
。-c copy
: 这意味着将尽可能地直接复制输入文件的编码,而不进行重新编码。这可以使转换过程更快。-map 0
: 这意味着从输入文件中选择所有的流(视频、音频、字幕等)进行复制。-vbsf h264_mp4toannexb
: 这是一个视频比特流过滤器,用于将H.264编码的MP4视频转换为Annex B格式。这是因为HLS需要视频以Annex B格式进行分段。-f hls
: 这指定了输出格式为HLS。-hls_time 60
: 这指定了每个HLS分段的时长为60秒。-hls_list_size 0
: 这指定了播放列表(.m3u8文件)中的最大分段数量为0,这意味着播放列表将包含所有分段。-hls_segment_filename .\test\output_%03d.ts
: 这指定了分段文件的命名模式和位置。.\test\
是文件的保存路径,output_%03d.ts
是文件名模式,%03d
将被替换为每个分段的序号,例如output_001.ts
、output_002.ts
等。.\test\output.m3u8
: 这是播放列表(.m3u8文件)的输出路径和名称。
总的来说,这个命令将test.mp4
文件转换为HLS格式,并将分段保存在.\test\
目录下,同时生成一个名为output.m3u8
的播放列表文件。每个分段的时长为60秒,并且所有的分段都将包含在播放列表中。