如何使用FFmpeg从MPEG-TS分段文件提取帧作为封面图
从HLS的MPEG-TS分段文件提取封面帧(第一帧/最后一帧)
提取第一帧
直接用FFmpeg指定提取第一帧并保存为高质量JPEG:
ffmpeg -i input.ts -select_streams v:0 -vframes 1 -q:v 2 output_first.jpg
参数说明:
-i input.ts:替换为你的目标TS文件路径-select_streams v:0:指定处理第一个视频流,避免音频流干扰-vframes 1:仅提取1帧-q:v 2:设置JPEG输出质量,数值范围1-31,越小质量越高,2是高质量常用值
提取最后一帧
有两种便捷方法:
方法1:从文件末尾取帧(推荐)
利用-sseof参数直接定位到文件末尾附近提取帧,无需计算总帧数:
ffmpeg -sseof -1 -i input.ts -select_streams v:0 -vframes 1 -q:v 2 output_last.jpg
参数说明:
-sseof -1:从文件最后1秒的位置开始读取,能精准获取最后一帧,适配大多数视频场景
方法2:通过总帧数定位
先获取视频总帧数,再提取对应帧:
- 执行命令获取总帧数:
ffmpeg -i input.ts -v error -select_streams v:0 -show_entries stream=nb_frames -of default=noprint_wrappers=1:nokey=1
- 用总帧数减1,帧索引从0开始,替换下面的
[总帧数-1]后执行:
ffmpeg -i input.ts -select_streams v:0 -vf "select=eq(n\,[总帧数-1])" -vframes 1 -q:v 2 output_last.jpg
内容的提问来源于stack exchange,提问作者xrfang
相关产品推荐
相关产品推荐

