如何将音频文件与新的视频文件合并?在 android 中可以吗?
Posted
技术标签:
【中文标题】如何将音频文件与新的视频文件合并?在 android 中可以吗?【英文标题】:how to merge audio file with new video file?is it possible in android? 【发布时间】:2012-12-11 16:46:47 【问题描述】:我在 android 中使用 javacv 成功地从图像序列中获取了视频。现在我遇到了如何将音频合并到新创建的视频的问题。在 android 或 javacv 集成中是否可能?
Here is my code,
String path ="/mnt/sdcard/Video_images";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
if(listOfFiles.length>0)
iplimage = new opencv_core.IplImage[listOfFiles.length];
for (int j = 0; j < listOfFiles.length; j++)
String files="";
if (listOfFiles[j].isFile())
files = listOfFiles[j].getName();
System.out.println(" j " +j + listOfFiles[j]);
String[] tokens = files.split("\\.(?=[^\\.]+$)");
String name=tokens[0];
Toast.makeText(getBaseContext(), "size"+listOfFiles.length, Toast.LENGTH_SHORT).show();
iplimage[j]=cvLoadImage("/mnt/sdcard/Video_images/"+name+".jpg");
//
FFmpegFrameRecorder recorder = new
FFmpegFrameRecorder("/mnt/sdcard/Video_images
/output"+System.currentTimeMillis()+".mp4",200,150);
try
recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO
recorder.setFrameRate(24);
recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P
recorder.start();
for (int i=0;i<iplimage.length;i++)
recorder.record(iplimage[i]);
recorder.stop();
catch (Exception e)
e.printStackTrace();
在这段代码中,如何合并我的音频文件?
【问题讨论】:
合并完成了吗? 【参考方案1】:Android 中没有用于合并视频文件的功能。如果您需要在设备上执行此操作,您将需要找到一些可以为您处理此问题的 Java JAR。
【讨论】:
你好 commonsware.did 你有任何相关的示例或链接吗? @CommonsWare 自 2012 年以来有关此主题的任何更新?我知道有MediaMuxer
但只有 API>18 并且它不进行编解码器转换...
@ChristopheCVB:我不知道,抱歉。【参考方案2】:
用最新版的javacv应该可以了,可以从here下载。
如果您想在创建 mp4 时将音频与视频合并,以下是您的代码的想法:
FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber("song.mp3");
grabber1.start();
FFmpegFrameRecorder recorder = new
FFmpegFrameRecorder("/mnt/sdcard/Video_images/output"+System.currentTimeMillis()+".mp4",200,150, grabber1.getAudioChannels());
try
recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO
recorder.setFrameRate(24);
recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P
recorder.start();
com.googlecode.javacv.Frame frame1 = new com.googlecode.javacv.Frame();
for (int i=0;i<iplimage.length;i++)
frame1 = grabber1.grabFrame();
recorder.record(frame1);
recorder.record(iplimage[i]);
recorder.stop();
grabber1.stop();
这可能不是 100% 正确,但应该是一个很好的起点。当然,在尝试记录之前,您要确保 frame1 不为空。
【讨论】:
第一行显示 targetInovationError。我该如何解决这个问题?以上是关于如何将音频文件与新的视频文件合并?在 android 中可以吗?的主要内容,如果未能解决你的问题,请参考以下文章