【问题标题】:Convert Video to MP3将视频转换为 MP3
【发布时间】:2020-11-16 16:51:37
【问题描述】:

我想将视频(mp4)转换为 Mp3 格式。请知道的人解释一下。

我试过了,但是没用。

我已经从这个链接实现,但它对我不起作用。 How do I extractor audio to mp3 from mp4 using java in Android?

public class AudioFromVideo  {

    private String audio, video;
    private MediaCodec amc;
    private MediaExtractor ame;
    private MediaFormat amf;
    private String amime;

    public AudioFromVideo(String srcVideo, String destAudio) {
        this.audio = destAudio;
        this.video = srcVideo;
        ame = new MediaExtractor();
        init();
    }

    public void init() {
        try {
            ame.setDataSource(video);
            amf = ame.getTrackFormat(1);
            ame.selectTrack(1);
            amime = amf.getString(MediaFormat.KEY_MIME);
            amc = MediaCodec.createDecoderByType(amime);
            amc.configure(amf, null, null, 0);
            amc.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void start() {
        new AudioService(amc, ame, audio).start();
    }

    private class AudioService extends Thread {
        private MediaCodec amc;
        private MediaExtractor ame;
        private ByteBuffer[] aInputBuffers, aOutputBuffers;
        private String destFile;

        @SuppressWarnings("deprecation")
        AudioService(MediaCodec amc, MediaExtractor ame, String destFile) {
            this.amc = amc;
            this.ame = ame;
            this.destFile = destFile;
            aInputBuffers = amc.getInputBuffers();
            aOutputBuffers = amc.getOutputBuffers();
        }

        @SuppressWarnings("deprecation")
        public void run() {
            try {
                OutputStream os = new FileOutputStream(new File(destFile));
                long count = 0;
                while (true) {
                    int inputIndex = amc.dequeueInputBuffer(0);
                    if (inputIndex == -1) {
                        continue;
                    }
                    int sampleSize = ame.readSampleData(aInputBuffers[inputIndex], 0);
                    if (sampleSize == -1) break;
                    long presentationTime = ame.getSampleTime();
                    int flag = ame.getSampleFlags();
                    ame.advance();
                    amc.queueInputBuffer(inputIndex, 0, sampleSize, presentationTime, flag);
                    MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
                    int outputIndex = amc.dequeueOutputBuffer(info, 0);
                    if (outputIndex >= 0) {
                        byte[] data = new byte[info.size];
                        aOutputBuffers[outputIndex].get(data, 0, data.length);
                        aOutputBuffers[outputIndex].clear();
                        os.write(data);
                        count += data.length;
                        Log.e("write", "" + count);
                        amc.releaseOutputBuffer(outputIndex, false);
                    } else if (outputIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
                        aOutputBuffers = amc.getOutputBuffers();
                    } else if (outputIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
                    }
                }
                os.flush();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

new AudioFromVideo(videopath,audioPath).start();

【问题讨论】:

  • 详细解释“它不起作用”和“它对我不起作用”是什么意思。
  • 什么不起作用?详细解释
  • 它将在 aInputBuffers = amc.getInputBuffers() 处给我空指针;这一行
  • 谁能帮我把 mp3 转换成 mp4 吗?(音频到视频的转换)并且会有我必须在视频中显示的图像......我不能发布问题,我需要

标签: android


【解决方案1】:

您需要使用 Android FFmpeg 库从 Mp4 视频中提取音频:

ffmpeg -i my_video.mp4 -ab 128k -ac 2 -ar 44100 -vn my_audio.mp3

这是执行此操作的库的链接:

http://writingminds.github.io/ffmpeg-android-java/

http://www.android-arsenal.com/details/1/931

【讨论】:

  • 阅读how-to-answer邮政编码部分..外部链接可能不会永远存在。
【解决方案2】:

可以在android中以编程方式从视频文件中提取音频。您可以在不使用任何外部库的情况下执行此操作。这可以通过使用 MediaMuxer 类来完成。

new AudioExtractor().genVideoUsingMuxer("Video source Path", "Audio destination path", -1, -1, true, false);

查看这篇文章以获得更好的理解和完整的代码。

https://androidprogrammatically425516919.wordpress.com/2020/04/21/how-to-convert-video-to-audio-in-android-programmatically/

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多