使用ffmpeg对视频进行转码(支持浏览器播放)

在开发中,算法保存的mp4视频文件通过路径打开该视频发现视频播放不了,需要转码进行播放。使用java代码进行转码。代码如下,inputFilePath是转之前的视频路径,outputFilePath是转之后的视频路径。ffmpeg命令中libx264也可以改为其它的格式,例如:h264。

java 复制代码
   public void conversion(String inputFilePath, String outputFilePath){
        // 构建FFmpeg命令
        String[] command = {"ffmpeg", "-i", inputFilePath, "-c:v", "libx264", "-preset", "ultrafast", "-c:a", "aac", "-strict", "experimental", "-movflags", "faststart", outputFilePath};
        try {
            // 执行FFmpeg命令
            ProcessBuilder processBuilder = new ProcessBuilder(command);
            Process process = processBuilder.start();
            // 获取FFmpeg输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            // 等待转换完成
            int exitCode = process.waitFor();
            System.out.println("Conversion exited with code " + exitCode);
            // 关闭读取器
            reader.close();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

注意使用ffmpeg需要安装ffmpeg所需要的环境。在windows中和linux中都需要。如果已经安装ffmpeg但是视频还会转换报错, 例如

这个问题是找不到libx264环境,建议卸载重装ffmpeg,使用以下命令。将ffmpeg卸载了之后再conda 重新安装(用conda,因为conda会自动下载配置所需要的依赖库):

bash 复制代码
conda uninstall ffmpeg
conda install -c conda-forge ffmpeg
相关推荐
晨间晓2 小时前
单目视频测速不准?我给 YOLO + ByteTrack 加了透视标定和鸟瞰图测速
yolo·音视频
码农小旋风6 小时前
Claude Opus 5.5把视频制作变成Agent工作流
音视频
lank_M6 小时前
WebCodecs解码竖拍视频变横的?四个浏览器实测
图像处理·人工智能·计算机视觉·音视频
小幂同学7 小时前
图片、视频和PDF太大,电脑上怎么压缩更合适?
pdf·音视频·zip·解压缩软件·zip解压缩
cuijiecheng20187 小时前
音频降混是什么?从5.1声道到双声道,一篇讲清楚
音视频
码流子7 小时前
高速场景视频接入:GB/T 28181 级联与 RTSP 取流,一条链路讲清楚
大数据·数据库·人工智能·物联网·音视频
海水冷却7 小时前
WebRTC 视频通话:从裸写信令到 30 分钟上线
音视频·webrtc
hz567898 小时前
数据本地化音视频系统设计:数据存储、传输路径与访问权限管理
网络·安全·音视频·实时音视频·信息与通信
闭包不眠8 小时前
竖拍视频宽高显示1920×1080?两种存法怎么分辨
图像处理·人工智能·计算机视觉·音视频
voipmaker8 小时前
融合通信工程实战:SIP 与 GB28181 联合接入布控球的常见问题
科技·物联网·网络协议·音视频·实时音视频·信息与通信·政务