FFmpeg是视频处理利器 我目前所在公司是搞视频面试的 难免经常和视频打交道 趁着放假 简单学习下这个工具

Mac下安装FFmpeg

下载地址:

https://ffmpeg.org/download.html#build-mac
下载完成 直接在目录下执行
./ffmpeg

加上全局变量

vi ~/.bash_profile
export PATH=$PATH:/安装路径
source ~/.bash_profile
之后执行 ffmpeg -version 看下是否成功

/**
 * 提取视频里的音频
 * <p>
 * -vn 不处理视频
 * -y 表示如果输出文件已存在则覆盖
 * -vcodec copy表示使用跟原视频一样的视频编解码器。
 * -acodec copy表示使用跟原视频一样的音频编解码器。
 * -i 表示源视频文件
 * -ss设置从视频的哪个时间点开始截取
 * -t表示截取多长的时间
 * -to 截到视频的哪个时间点结束。
 * -r 表示每一秒几帧
 * -q:v表示存储jpeg的图像质量,一般2是高质量。
 * -s 设定画面的宽与高
 * -aspect 设定画面的比例
 * -f:指定文件格式(format),这里指定为image2的格式
 *
 * @throws Exception
 */
@Test
public void t() throws Exception {
    String fileName = "/Users/chenqi/Downloads/mytest.mp4";
    String newFileName = "/Users/chenqi/Downloads/mymymy.aac";
    StringBuilder sb = new StringBuilder();
    sb.append("/Users/chenqi/tools/ffmp/ffmpeg").append(" -i ").append(fileName).append(" -vn -y -acodec copy ")
            .append(newFileName);
    Runtime.getRuntime().exec(sb.toString()).waitFor();
}
/**
 * 从一个视频文件中抽取一帧图像
 *
 * @throws Exception
 */
@Test
public void t3() throws Exception {
    String fileName = "/Users/chenqi/Downloads/mytest.mp4";
    String newFileName = "/Users/chenqi/Downloads/testjpgmy.jpg";
    String sb = "/Users/chenqi/tools/ffmp/ffmpeg" +
            " -y " +
            " -i " +
            fileName +
            " -ss 00:00:08.000 -vframes 1 -an " +
            newFileName;
    Runtime.getRuntime().exec(sb).waitFor();
}

/**
 * 剪切视频
 * ffmpeg -ss 0:05:00 -t 0:1:30 -i input_file -vcodec copy -acodec copy output_file
 * ffmpeg -ss 300 -t 90  -i input_file -vcodec copy -acodec copy output_file
 * 上面的两种方式等价,时间格式支持 HH:MM:SS或者秒数。 -ss 开始时间, -t 持续时间, -vcodec copy 保持原视频编码, -acodec copy 保持原音频编码。
 *
 * @throws Exception
 */
@Test
public void t4() throws Exception {
    String fileName = "/Users/chenqi/Downloads/mytest.mp4";
    String newFileName = "/Users/chenqi/Downloads/mycut.mp4";
    String sb = "/Users/chenqi/tools/ffmp/ffmpeg" +
            " -ss 0:01:00 " +
            " -t 0:03:00 " +
            " -i " +
            fileName +
            " -vcodec copy -acodec copy " +
            newFileName;
    Runtime.getRuntime().exec(sb).waitFor();
}
最后修改:2022 年 06 月 11 日
如果觉得我的文章对你有用,请随意赞赏