You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为FFmpeg HLS脚本添加更多视频分辨率及指定输出路径

FFmpeg多分辨率HLS编码脚本修改方案

一、扩展到5种分辨率的修改

原脚本支持3路分辨率,要扩展到5路,需同步调整滤镜链、编码参数和流映射这几个核心部分,以下是修改后的完整脚本(以1080p、720p、480p、360p、240p为例):

ffmpeg -i /Volumes/4\ XXX/XXX/XXX\ XXX/XXX/MYVIDEO.mov \
  -filter_complex \
    "[0:v]split=5[v1][v2][v3][v4][v5]; \
     [v1]scale=w=1920:h=1080[v1out]; \
     [v2]scale=w=1280:h=720[v2out]; \
     [v3]scale=w=854:h=480[v3out]; \
     [v4]scale=w=640:h=360[v4out]; \
     [v5]scale=w=426:h=240[v5out]" \
  # 1080p视频参数
  -map "[v1out]" -c:v:0 libx264 -b:v:0 5000k -maxrate:v:0 5350k -bufsize:v:0 7500k \
  # 720p视频参数
  -map "[v2out]" -c:v:1 libx264 -b:v:1 2800k -maxrate:v:1 2996k -bufsize:v:1 4200k \
  # 480p视频参数
  -map "[v3out]" -c:v:2 libx264 -b:v:2 1500k -maxrate:v:2 1647k -bufsize:v:2 2250k \
  # 360p视频参数
  -map "[v4out]" -c:v:3 libx264 -b:v:3 1000k -maxrate:v:3 1098k -bufsize:v:3 1500k \
  # 240p视频参数
  -map "[v5out]" -c:v:4 libx264 -b:v:4 500k -maxrate:v:4 549k -bufsize:v:4 750k \
  # 对应各分辨率的音频参数
  -map a:0 -c:a aac -b:a:0 192k -ac 2 \
  -map a:0 -c:a aac -b:a:1 128k -ac 2 \
  -map a:0 -c:a aac -b:a:2 128k -ac 2 \
  -map a:0 -c:a aac -b:a:3 96k -ac 2 \
  -map a:0 -c:a aac -b:a:4 64k -ac 2 \
  -f hls \
  -hls_time 10 \
  -hls_playlist_type vod \
  -hls_flags independent_segments \
  -hls_segment_type mpegts \
  -hls_segment_filename stream_%v/data%03d.ts \
  -master_pl_name MYVIDEO.m3u8 \
  -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3 v:4,a:4" \
  stream_%v/playlist.m3u8

关键修改点说明:

  • 滤镜链调整:把split=3改成split=5,新增[v4][v5]两个分流标签,再对应添加这两路的scale滤镜,分辨率可根据需求自行调整(比如换成320x180等)。
  • 视频编码参数:每新增一路分辨率,复制一组-map "[vXout]"开头的视频参数,调整对应的流索引(v:0到v:4)和码率(码率建议随分辨率降低按比例调整,避免小分辨率码率过高)。
  • 音频编码参数:对应新增的视频流,添加-map a:0开头的音频参数,流索引从a:0到a:4,码率也可按需调整(低分辨率搭配低码率音频更合理)。
  • 流映射更新:在-var_stream_map里加入新增的v:3,a:3 v:4,a:4,确保每一路视频对应一路音频。

如果要扩展到6种分辨率,重复上述步骤即可:将split改为6,新增第6个分流标签和scale滤镜,添加对应的视频、音频参数,更新var_stream_map。


二、指定自定义输出路径

原脚本输出到根目录是因为未指定前缀路径,只需在所有输出路径前加上目标路径即可,例如要输出到/Users/你的用户名/Videos/hls_output/:

  1. 提前创建目标目录(避免ffmpeg因目录不存在报错):
mkdir -p /Users/你的用户名/Videos/hls_output/
  1. 修改脚本中的路径参数:
    将:
-hls_segment_filename stream_%v/data%03d.ts \
-master_pl_name MYVIDEO.m3u8 \
stream_%v/playlist.m3u8

替换为:

-hls_segment_filename /Users/你的用户名/Videos/hls_output/stream_%v/data%03d.ts \
-master_pl_name /Users/你的用户名/Videos/hls_output/MYVIDEO.m3u8 \
/Users/你的用户名/Videos/hls_output/stream_%v/playlist.m3u8

所有ts分片、播放列表都会生成到指定目录下,也可以使用相对路径(如./output/),确保路径正确即可。

内容的提问来源于stack exchange,提问作者Andy Nickless

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 21:14:50