Merge 如何使用mp4parser合并前后摄像头交替拍摄的mp4视频

Merge 如何使用mp4parser合并前后摄像头交替拍摄的mp4视频,merge,rotation,mp4parser,Merge,Rotation,Mp4parser,我正在开发一个应用程序,使用mp4parser合并n个视频。要合并的视频在前置摄像头和后置摄像头中拍摄。如果我将这些视频合并为单个视频,则可以很好地合并所有视频,但通过前置摄像头拍摄的备选视频合并为反向视频。 我能做什么。 请任何人帮助我 这是我合并视频的代码: try { String f1,f2,f3; f1 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo1.mp4";// video took via b

我正在开发一个应用程序,使用mp4parser合并n个视频。要合并的视频在前置摄像头和后置摄像头中拍摄。如果我将这些视频合并为单个视频,则可以很好地合并所有视频,但通过前置摄像头拍摄的备选视频合并为反向视频。 我能做什么。 请任何人帮助我

这是我合并视频的代码:

try {


String f1,f2,f3;


f1 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo1.mp4";// video took via back camera


f2 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo2.mp4";// video took via front camera


f3 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo3.mp4";// video took via front camera


        Movie[] inMovies = new Movie[] {
          MovieCreator.build(f1),
          MovieCreator.build(f2),
          MovieCreator.build(f3) 
         };
            List<Track> videoTracks = new LinkedList<Track>();
            List<Track> audioTracks = new LinkedList<Track>();
            for (Movie m : inMovies) {
                for (Track t : m.getTracks()) {
                    if (t.getHandler().equals("soun")) {
                        audioTracks.add(t);
                    }
                    if (t.getHandler().equals("vide")) {
                        videoTracks.add(t);
                    }
                }
            }
            Movie result = new Movie();
            if (audioTracks.size() > 0) {
                result.addTrack(new AppendTrack(audioTracks
                        .toArray(new Track[audioTracks.size()])));
            }
            if (videoTracks.size() > 0) {
                result.addTrack(new AppendTrack(videoTracks
                        .toArray(new Track[videoTracks.size()])));
            }
            BasicContainer out =  (BasicContainer) new DefaultMp4Builder().build(result);
            WritableByteChannel fc = new RandomAccessFile(
            String.format(Environment.getExternalStorageDirectory()+ "/DCIM/CombinedVideo.mp4"), "rw").getChannel();
            out.writeContainer(fc);                  
            fc.close();

        } catch (Exception e) {
            Log.d("Rvg", "exeption" + e);
            Toast.makeText(getApplicationContext(), "" + e, Toast.LENGTH_LONG)
                    .show();
        }
试试看{
字符串f1、f2、f3;
f1=Environment.getExternalStorageDirectory()+“/DCIM/testvideo1.mp4”;//通过后置摄像头拍摄的视频
f2=Environment.getExternalStorageDirectory()+“/DCIM/testvideo2.mp4”;//通过前置摄像头拍摄的视频
f3=Environment.getExternalStorageDirectory()+“/DCIM/testvideo3.mp4”;//通过前置摄像头拍摄的视频
电影[]inMovies=新电影[]{
MovieCreator.build(f1),
电影创作者制作(f2),
MovieCreator.build(f3)
};
List videoTracks=新建链接列表();
List audioTracks=新建链接列表();
对于(电影m:inMovies){
对于(轨道t:m.getTracks()){
if(t.getHandler().equals(“soun”)){
添加(t);
}
if(t.getHandler().equals(“vide”)){
视频跟踪。添加(t);
}
}
}
电影结果=新电影();
如果(audioTracks.size()>0){
结果:addTrack(新的AppendTrack(音频曲目
.toArray(新曲目[audioTracks.size()]);
}
如果(videoTracks.size()>0){
结果:addTrack(新的AppendTrack(videoTracks
.toArray(新曲目[videoTracks.size()]);
}
BasicContainer out=(BasicContainer)新建DefaultMp4Builder().build(结果);
WritableByteChannel fc=新的随机访问文件(
String.format(Environment.getExternalStorageDirectory()+“/DCIM/CombinedVideo.mp4”),“rw”).getChannel();
out.writeContainer(fc);
fc.close();
}捕获(例外e){
日志d(“Rvg”、“例外”+e);
Toast.makeText(getApplicationContext(),“”+e,Toast.LENGTH\u LONG)
.show();
}

Hi Grace Venkat你解决了这个问题吗?如果你固定的方式,请分享你的想法。我过去三天也面临着同样的问题。我将非常感谢你。提前谢谢,我也有同样的问题,似乎找不到解决办法。请与我分享这个想法,我也遇到了同样的问题。如果您发现任何与此问题相关的解决方案,请共享您的解决方案。嗨,Grace,我尝试了上述代码,但它显示文件未找到异常,即使我正确获取视频路径,也可以共享代码。