簡體   English   中英

如何在Android中多路復用mp3和mp4文件

[英]How to multiplex mp3 and mp4 files in Android

問題陳述:我正在設計一個Android應用程序,在該應用程序中,我必須從用戶的圖庫中獲取圖像,將其組合以制作視頻文件並添加背景音樂。 我已經使用jcodec庫使用圖像資源來創建mp4視頻文件(我知道如何從圖庫中獲取圖像並將其顯示在ImageViews中並從中創建位圖)。 我有一個mp4文件。 現在,我想使用mp3文件在其中添加背景音樂。

請有人可以幫助我嗎? 我不能使用jcodec或至少添加它,我不知道該怎么做。 我可以使用任何可以完成此工作的庫,但是應該使用Java,因為我不想使用ndk。 我為Java嘗試了ffmpeg和opencv,但它使我的應用程序的大小增加了15MB以上,並且jcodec已經完成了制作mp4文件的一半工作。

我可以給你我用來制作mp4文件的代碼。 提前致謝。

我認為JCODEC不支持在MP4中添加mp3 ,但是JAVACV支持在mp4中添加mp3

從此鏈接https://github.com/bytedeco/javacv下載JAVACV

該庫支持從圖像創建視頻,並在mp4中添加mp3

在mp4中添加mp3的代碼。

注意:它可能不適用於從JCODEC創建mp4,使用JAVACV創建mp4

FrameGrabber grabber1 = new FFmpegFrameGrabber(videoPath);
            FrameGrabber grabber2 = new FFmpegFrameGrabber(audioPath);
            grabber1.start();
            grabber2.start();
            FrameRecorder recorder = new FFmpegFrameRecorder(OutputPath,
                    grabber1.getImageWidth(), grabber1.getImageHeight(), 2);
            recorder.setFormat("mp4");
            recorder.setVideoQuality(1);
            recorder.setFrameRate(grabber1.getFrameRate());
            recorder.setSampleRate(grabber2.getSampleRate());
            recorder.start();
            Frame frame1, frame2 = null;
            long timestamp = -2;
            int count = 0;
            boolean isFirstTime = false;
            boolean isFirstCheck = true;
            while ((frame1 = grabber1.grabFrame())!=null) {
                //frame1 = grabber1.grabFrame();
                frame2 = grabber2.grabFrame();
                recorder.record(frame1);
                recorder.record(frame2);

                }
            recorder.stop();
            grabber1.stop();
            grabber2.stop();
    } catch (org.bytedeco.javacv.FrameGrabber.Exception e) {
            e.printStackTrace();
        } catch (Exception e1) {

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM