小工具知识网

当前位置: 首页 > 行业知识 > javacv FFmpeg 剪辑音频文件

行业知识

javacv FFmpeg 剪辑音频文件

2026-11-15 00:17:34 来源:互联网转载

需要对mp3���件进行剪辑,剪掉几秒到几秒,然后生成新的文件。

()

     目前有两种方法,

                方法一、是用脚本+安装FFmpeg执行包,

()

                方法二、不需要安装FFmpeg,直接调用ffmpeg包解码。

本文介绍的为方法二,不需要下载安装FFmpeg.

1、maven 需要添加2个依赖

        javacv  和 ffmpeg-platform 都是org.bytedeco,这两个版本要匹配

org.bytedecojavacv1.5.6org.bytedecoffmpeg-platform4.4-1.5.6

2、写个测试类

public class Mp3Cutter {public static void main(String[] args) {// 输入音频文件和输出音频文件路径String inputFile = "F:\temp\欢乐谷.mp3";String outputFile = "F:\temp\mp3_out.mp3";cutAudio(inputFile, outputFile);}public static void cutAudio(String inputFile, String outputFile) {try {// 创建 FFmpegFrameGrabber 以读取输入音频文件FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile);int bitrate=grabber.getAudioBitrate();int sampleRate=grabber.getSampleRate();// 创建 FFmpegFrameRecorder 以写入输出音频文件FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, 2);recorder.setAudioCodec(grabber.getAudioCodec());recorder.setAudioQuality(0);recorder.setAudioBitrate(64000);//比特,中等效果recorder.setAudioChannels(2);//grabber.getAudioChannels());recorder.setSampleRate(44100);//grabber.getSampleRate());recorder.setAudioOption("crf", "0");    recorder.start();grabber.start();            //这个顺序要在后面  Frame f;    int total=0;    //计算音频样本帧的数量    while((f=grabber.grabSamples())!=null)    {    total++;    }    //设置要剪辑掉的 18秒--30秒    long startSec=18;    long endSec=startSec+12;                   //计算时长    long durationInSec = grabber.getFormatContext().duration() / 1000000;   //设置要剪辑掉的 倒数50秒--60秒    long startSec2=durationInSec-50;    if(durationInSec startFrameNum&&i startFrameNum2&&i= durationInSecond)        return (int) durationInSecond;    double percent = startOrEndAtSecond / (double) durationInSecond;    return (int) Math.round(totalFrame * percent);}}

运行测试。上面的代码可以直接跑。

上一篇:揭秘数字神秘面纱,探寻数字786背后的故事!

下一篇:时间戳神秘面纱揭秘,概念解析与应用实践探索