FFmpeg实现本地视频截取

平安 2023-02-17 02:02:33 10216 0 0 0

一、下载链接

http://ffmpeg.org/

二、下载成功后解压

把解压后的文件夹改名为ffmpeg,如下图:
图片alt

三、配置环境变量

点击“环境变量”按钮后,弹出“环境变量”窗口,找到并选中“Path”变量,点击编辑,如下图:
图片alt
在PATH变量追加内容,“;你本地方ffmpeg所在路径\ffmpeg\bin”,点击确定即可。

四、测试配置成功

打开cmd,输入“ffmpeg”命令,如果有输出,则说明配置成功:
图片alt

五、Java调用FFmpeg实现视频截取

(1) 首先处理权限问题

通过java直接执行cmd的命令行口令,可能会出现权限不足而导致执行失败。因此,下载一个window命令行工具nircmd即可。
nircmd下载地址:http://www.nirsoft.net/utils/nircmd.html

进去后直接把页面拉到最下面

图片alt
(2)下载后,把nircmd.exe放到c盘下,以上面代码为例,如下图:
图片alt

(3) 集成到项目config下
/**
 * @Author : zhangS
 * @Date :2020-08-19
 */
public class ExecWindowCMD {

    public static void main(String[] args) {

        File viedoFile = new File("F://ffmpegDemo//test.mp4");
        File outFile = new File("F://ffmpegDemo//test3.mp4");
        //根据目标视频viedoFile,生成截取30秒后的试看视频outFile
        ExecWindowCMD.cutVideo1(viedoFile,outFile,30);
    }

    /*
     *
     * @param videoFile  原视频
     * @param outputFile  截取后视频
     * @param timeLength  截取时间长度,单位秒
     */
    public static void cutVideo1(File videoFile, File outputFile,  int timeLength) {
        String cmdStr = "F:\\ffmpegDemo\\ffmpeg\\bin\\ffmpeg.exe -ss 0:0:0 -t" + " 0:0:" + timeLength + " -i " + videoFile + " -vcodec copy -acodec copy " + outputFile;
        Runtime run = Runtime.getRuntime();
        try {
            Process process = run.exec("c:/nircmd.exe elevate  " + cmdStr);
            InputStream in = process.getInputStream();
            in.close();
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("----截取视频成功----");
    }
}