1.首先安装ffmpeg工具,进入ffmpeg官网下载对应自己版本的工具并安装。
2.安装之后配置环境变量,我的是linux版本的,配置路径:/usr/local/bin/ffmpeg,安装教程可参考:https://blog.youkuaiyun.com/u014470361/article/details/90705336
3.运行命令(湖南卫视rtmp流):
ffmpeg -i "rtmp://58.200.131.2:1935/livetv/hunantv" -f image2 -ss 0 -vframes 1 -s 220*220 /tmp/a.jpg
-i “rtmp。。。” :后接地址
-y :覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了
-t 0.001 :设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss 1 :延迟1秒后开始
-f image2 :以图片格式保存
-r 1 :帧数,此处为截取一帧
最后生成a.jpg文件:
java代码调用如下:
public static void processBuilderCommand(String RtmpUrl,String FFmpegPath, String imageName, Integer x, Integer y, Integer w, Integer h) throws Exception {
List<String> commands = new java.util.ArrayList<String>();
commands.add(FFmpegPath);
commands.add("-i");
commands.add(RtmpUrl);
commands.add("-vf");
commands.add("crop=" + w + ":" + h + ":" + x + ":" + y);
commands.add("-r");
commands.add("1");
commands.add("-q:v");
commands.add("2");
commands.add("-f");
commands.add("image2");
commands.add("-t");
commands.add("1");
commands.add(imageName);
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
builder.start();
log.info(RtmpUrl + ", " + DateUtil.now() + " 截取成功...");
}
注:FFmpegPath是工具的路径“/usr/local/bin/ffmpeg”,RtmpUrl是rtmp流的url,imageName是路径+文件名