eri*_*rik 6 android-mediarecorder mp4parser
我正在使用mp4Parser isoviewer-1.0-RC-35.jar来组合使用android MediaRecorder录制的剪辑.通过聆听音轨,剪辑似乎正确组合,但视频保持在一帧上,时间码在播放时保持为零.
媒体记录器创建单个剪辑时的代码
mediaRecorder = new MediaRecorder();
        myCamera.lock();
        myCamera.unlock();
        String clipLocation = file.getAbsolutePath();
        _moviePaths.add(clipLocation);
        // Please maintain sequence of following code.
        // If you change sequence it will not work.
        mediaRecorder.setCamera(myCamera);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        if (facingBack) {
            mediaRecorder.setOrientationHint(90);
        } else {
            mediaRecorder.setOrientationHint(270);
        }
        // Log.v("cam","supported vid sizes: "+
        // myCamera.getParameters().getSupportedVideoSizes());
        CamcorderProfile profile = CamcorderProfile
                .get(CamcorderProfile.QUALITY_720P);
        // mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
         //mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        // mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setMaxDuration(g.kMaxVideoDurationInMiliseconds);// 15seconds
        mediaRecorder.setProfile(profile);
        mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
        mediaRecorder.setOutputFile(path + filename);
        mediaRecorder.prepare();
        startTimer();
        mediaRecorder.start();
    }
我用来组合剪辑的方法:
protected void combineClips() throws IOException{
        for(int i=0; i<_moviePaths.size();i++){
                Movie tm = MovieCreator.build(_moviePaths.get(i));
                _clips.add(tm);
        }
         List<Track> videoTracks = new LinkedList<Track>();
         List<Track> audioTracks = new LinkedList<Track>();
            for (Movie m : _clips) {
                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();
            Log.v("cam", "adding:"+audioTracks.size()+" audio tracks and "+videoTracks.size()+" video tracks");
            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()])));
            }
            Container out = new DefaultMp4Builder().build(result);
            FileChannel fc = new RandomAccessFile(String.format(videoFolder.getPath()+"/output.mp4"), "rw").getChannel();
            out.writeContainer(fc);
            fc.close();
    }
| 归档时间: | 
 | 
| 查看次数: | 1989 次 | 
| 最近记录: |