ffmpeg + java + window/Liunx 视频截图归纳总结

ffmpeg [[options][`-i' input_file]]... {[options] output_file}...

a) 通用选项
-L license
-h 帮助
-fromats 显示可用的格式,编解码的,协议的。。。
-f fmt 强迫采用格式fmt
-i filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
-title string 设置标题
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置,只需要输入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

-hq 激活高质量设置
-itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

b) 视频选项
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576

-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-croptop size 设置顶部切除带大小 像素单位
-cropbottom size –cropleft size –cropright size
-padtop size 设置顶部补齐的大小 像素单位
-padbottom size –padleft size –padright size –padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如 000000代表黑色)
-vn 不做视频记录
-bt tolerance 设置视频码率容忍度kbit/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR)
-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-passlogfile file 选择两遍的纪录文件名为file

* 以上红色highlight为我在项目中经常使用的到的options

  • 视频截图例子:
截取一张352x240尺寸大小的,格式为jpg的图片
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
把视频的前30帧转换成一个Animated Gif
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
截取指定时间的缩微图
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg
-ss后跟的时间单位为秒
转换文件为3GP格式
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144
 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp

ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp

==================== 补充新知识 ==========================
在java中 如果调用 ffmpeg 程序的方法,可以使用命令行调用方式,具体是一个java的demo如下:
**
 * 关于使用
 * Created by Administrator on 2016/11/2.
 */
public class FFmpegUtilTest {

    //cmd:
    //c:\ffmpeg -i c:\abc.mp4 e:\sample.jpg -ss 00:00:05  -r 1 -vframes 1  -an -vcodec mjpeg
    public void makeScreenCut(String ffmepgPath,String videoRealPath,String imageRealName){
        List<String> commend = new ArrayList<String>();
        commend.add(ffmepgPath);
        commend.add("-i");
        commend.add(videoRealPath);
        commend.add("-y");
        commend.add("-f");
        commend.add("image2");
        commend.add("-ss");
        commend.add("8");
        commend.add("-t");
        commend.add("0.001");
        commend.add(imageRealName);

        try {
        ProcessBuilder builder = new ProcessBuilder();
        builder.command(commend);
        builder.redirectErrorStream(true);
        System.out.println("视频截图开始...");

        Process process = builder.start();
        InputStream in = process.getInputStream();
        byte[] bytes = new byte[1024];
        System.out.print("正在进行截图,请稍候");
        while (in.read(bytes)!= -1){
            System.out.println(".");
        }
            System.out.println("");
            System.out.println("视频截取完成...");

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("视频截图失败!");
        }
    }
}
===================================================================================================================================
  • 在Liunx Centos 7 安装 FFmpeg 程序安装以及运行截图。
第一步:在FFmpeg安装对应源码
地址: FFmpeg安装地址
下载位置

第二步:把压缩包放到Liunx服务器文件夹 /usr/local下并使用tar指令加压文件
$ tar -jxvf       ffmpeg-3.2.tar.bz2
ps:这里需要使用root角色解压

解压后,需要使用mv把文件夹改名为 ffmpeg
$ mv ffmpeg-3.2/ ffmpeg/
进入ffmpge/ 文件夹,ls - l 查看有没有 configure
   














  • 接下来就是安装FFmpeg 
./configure --disable-yasm --enable-static --enable-static
make
make install
ps:安装过程中,会出现warning ,但是由于项目是关于视频截图,所以这些警告信息可以暂时忽略。

安装成功的话,可以使用ffmpeg -version 测试。成功会出现如下信息:

















  • 使用命令行对视频文件(测试使用mp4格式)进行截图
以下是测试时候我存放的abc.mp4文件,如图:
















命令行:
[root@localhost ffmpeg]# ffmpeg -i /usr/local/movie/abc.mp4 /usr/local/movie/sample.jpg -ss 00:00:05  -r 1 -vframes 1  -an -vcodec mjpeg




































以上便是命令行对视频截图,之后会补充代码对视频截图的java代码整合(在Liunx 环境下)。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值