我在Android中使用javacv成功地从图像序列中获取视频.现在我遇到了问题,如何将音频合并到新创建的 video.is 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();
}
在此代码中,如何合并我的音频文件?
Android中没有用于合并视频文件的内容。如果您需要在设备上执行此操作,则需要找到一些可以为您处理此问题的 Java JAR。
使用最新版本的javacv应该是可能的,可以从这里下载。
如果您想在创建 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 不为空。