首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ffmpeg/mencoder/transcode et转储最后一帧视频文件。阿尔

使用ffmpeg/mencoder/transcode et转储最后一帧视频文件。阿尔
EN

Stack Overflow用户
提问于 2011-03-09 15:48:45
回答 5查看 15.3K关注 0票数 17

我想抓取视频中的最后一帧(.mpg.avi,什么的),并将其转储到一个图像文件中(.jpg.png,随便什么)。工具链是一个现代的Linux命令行,因此类似于mencodertranscodeffmpeg &c。

干杯,鲍勃。

EN

回答 5

Stack Overflow用户

发布于 2011-11-03 23:53:04

这不是一个完整的解决方案,但它将为您指明正确的道路。

使用ffprobe -show_streams IN.AVI获取视频输入中的帧数。然后

代码语言:javascript
复制
ffmpeg -i IN.AVI -vf "select='eq(n,LAST_FRAME_INDEX)'" -vframes 1 LAST_FRAME.PNG

其中LAST_FRAME_INDEX是帧数减去1(帧为零索引),将输出最后一个帧。

票数 23
EN

Stack Overflow用户

发布于 2019-02-21 08:44:49

我有一个mp4 / h264 matroska输入视频文件。上面的解决方案对我都没有用。(虽然我确信它们适用于其他文件格式)。

桑拉德以上的回答这个伟大的答案相结合,并提出了这个工作代码

代码语言:javascript
复制
input_fn='output.mp4'

image_fn='output.png'

rm -f $image_fn

frame_count=`ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 $input_fn`

ffmpeg -i $input_fn -vf "select='eq(n,$frame_count-1)'" -vframes 1 "$image_fn" 2> /dev/null
票数 4
EN

Stack Overflow用户

发布于 2015-02-18 09:51:09

我无法找到纳尔逊的解决方案。这对我有用。https://gist.github.com/samelie/32ecbdd99e07b9d8806f

编辑(万一链接消失,下面是shellscript脚本-bobbogo):

代码语言:javascript
复制
#!/bin/bash

fn="$1"
of=`echo $1 | sed s/mp4/jpg/`

lf=`ffprobe -show_streams "$fn" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2`
rm -f "$of"
let "lf = $lf - 1"
ffmpeg -i $fn -vf select=\'eq\(n,$lf\) -vframes 1 $of
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5248283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档