[英]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.