用FFmpeg旋转视频

下载并安装

# 下载
wget http://www.ffmpeg.org/releases/ffmpeg-4.0.tar.gz

# 解压安装
tar -zxvf ffmpeg-4.0.tar.gz
cd ffmpeg-4.0
./configure --enable-shared --prefix=/usr/local/ffmpeg
make
make install

进行配置

安装完成之后还需要进行一些配置才可以正常使用

1.)编辑动态库配置
vi /etc/ld.so.conf
加入下面两行内容,安装时也可能自动加入,已有的就可以忽略

include ld.so.conf.d/*.conf
/usr/local/ffmpeg/lib

保存退出后执行下面命令刷新

ldconfig -v

2.)配置ffmpeg的环境变量
vi /etc/profile
在文件尾部追加

export FFMPEG=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH

3.)检查安装是否安装OK
ffmpeg -version

JAVA代码

    /**
     * 视频顺时旋转90°
     * @param filePath
     */
    private void videoRotate(String filePath) throws InterruptedException, IOException, TimeoutException {
        List<String> convert = new ArrayList();
        convert.add("ffmpeg");
        convert.add("-i");
        convert.add(filePath);
        convert.add("-metadata:s:v");
        convert.add("rotate=270");
        convert.add("-codec");
        convert.add("copy");
        convert.add("-y");
        convert.add(filePath + ".mp4");
        ProcessUtils.executeCommand(conve
        File oldFile = new File(filePath);
        oldFile.delete();
        File video = new File(filePath + ".mp4");
        video.renameTo(oldFile);rt);
    }

//设置超时
public class ProcessUtils {
    public static int executeCommand(final List<String> command) throws InterruptedException, TimeoutException, IOException {
        ProcessBuilder builder = new ProcessBuilder();
        builder.command(command);
        builder.redirectErrorStream(true);
        Process process = builder.start();
        Worker worker = new Worker(process);
        worker.start();
        try {
            worker.join(5000);
            if (worker.exit != null){
                return worker.exit;
            } else{
                throw new TimeoutException();
            }
        } catch (InterruptedException ex) {
            worker.interrupt();
            Thread.currentThread().interrupt();
            throw ex;
        } finally {
            process.destroy();
        }
    }


    private static class Worker extends Thread {
        private final Process process;
        private Integer exit;

        private Worker(Process process) {
            this.process = process;
        }

        @Override
        public void run() {
            try {
                exit = process.waitFor();
            } catch (InterruptedException ignore) {
                return;
            }
        }
    }
}

安装参考:https://segmentfault.com/a/1190000015025340

猜你喜欢

转载自blog.csdn.net/qq_34576655/article/details/82789141