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

如何用FFmpeg从M3U8播放列表选择指定分辨率下载视频

如何用FFmpeg从M3U8播放列表选择指定分辨率下载视频

我来帮你解决这个问题——你当前用的FFmpeg命令默认会拉取带宽最高的流(也就是最高分辨率版本),要指定分辨率下载其实很简单,给你两种实用方法:

方法一:通过流索引指定下载

这种方法适合你想先确认所有可用分辨率的情况:

  1. 先查看所有流的参数
    用ffprobe(FFmpeg配套工具)解析主M3U8的流信息,执行这条命令:

    ffprobe -v error -show_entries stream=index,width,height,bit_rate -of csv=p=0 "https://sitevideo.com/list.m3u8"
    

    执行后会输出类似这样的内容(对应你提供的M3U8片段):

    0,640,360,400000
    1,1280,720,1500000
    2,1920,1080,3000000
    这里第一列是流索引,后面依次是分辨率、码率,你能轻松对应到标注为low的400k码率流(比如索引0)。

  2. 修改FFmpeg命令指定流
    在原命令基础上添加-map参数,明确指定要下载的视频和音频流:

    /home/user/bin/ffmpeg -user_agent "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" -i "https://sitevideo.com/list.m3u8" -map 0:v:0 -map 0:a:0 -c copy "/home/file/video.ts"
    

    其中-map 0:v:0表示选择输入文件(标记为0)的第一个视频流,-map 0:a:0选择第一个音频流,这样就会下载你想要的低分辨率版本了。

方法二:直接使用子播放列表URL

如果你已经从主M3U8内容里看到了对应目标分辨率的子播放列表(比如你提到的size1.m3u8对应low分辨率),可以直接用子列表的完整URL下载:

  1. 拼接完整URL:如果子列表是相对路径,就把主M3U8的域名加上,比如主URL是https://sitevideo.com/list.m3u8,那子列表的完整地址就是https://sitevideo.com/size1.m3u8。
  2. 替换原命令的输入URL即可:
    /home/user/bin/ffmpeg -user_agent "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" -i "https://sitevideo.com/size1.m3u8" -c copy "/home/file/video_low.ts"
    
    这种方法更直接,适合你已经明确知道子列表对应分辨率的场景。

内容的提问来源于stack exchange,提问作者Bruno Andrade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:58:59