三星s7 eage 录视频有问题 把视频和音频分开录制然后合并


//MP4视频录制设置
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);//视频源
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//输出格式;
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//视频解码器;

//MP3音频录制设置
audioRecorder = new MediaRecorder();
audioRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/Snoppa/pano_tmp/" + "mp3.mp3");
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

有了音频和视频,可以合成了。在网上找了找一些合成库,首先找到的开源java库mp4parser,他可以将AAC、h264、mp4等格式合成MP4。随后找到了isoviewer-1.0-RC-35.jar(该库包含了mp4parser),可使用它实现音视频合成。


mp4parser估计已经是在子线程里做了,保险起见再次放到子线程里去做(1.7G的视频合并用了50多秒,有点慢~~降低编码率可以加快速度,但是清晰度降低了)

new Thread(new Runnable() {
    @Override
    public void run() {
        //mp4音视频合成
        try {
            //转菊花
            Message message = Message.obtain();
            message.what = MAKEVIDEO_ING;
            handler.sendMessage(message);

            Movie countVideo = MovieCreator.build(Environment.getExternalStorageDirectory() + "/Snoppa/pano_tmp/" + "mp4.mp4");
            AACTrackImpl aacTrack = new AACTrackImpl(new FileDataSourceImpl(Environment.getExternalStorageDirectory() + "/Snoppa/pano_tmp/" + "mp3.mp3"));
            countVideo.addTrack(aacTrack);
            Container out = new DefaultMp4Builder().build(countVideo);
            FileOutputStream fos = new FileOutputStream(new File(cacheVideoFilePath));
            out.writeContainer(fos.getChannel());
            fos.close();
            //合成成功
            Message message1 = Message.obtain();
            message1.what = MAKEVIDEO_SUCC;
            handler.sendMessage(message1);
        } catch (Exception e) {
            //合成失败
            Message msg = Message.obtain();
            msg.what = MAKEVIDEO_FAIL;
            handler.sendMessage(msg);

            Logger.d(TAG, e.toString());
            e.printStackTrace();
        } finally {
            File mp3_file = new File(Environment.getExternalStorageDirectory() + "/Snoppa/pano_tmp/" + "mp3.mp3");
            if (mp3_file.exists()) {
                mp3_file.delete();
            }
            File mp4_file = new File(Environment.getExternalStorageDirectory() + "/Snoppa/pano_tmp/" + "mp4.mp4");
            if (mp4_file.exists()) {
                mp4_file.delete();
            }
        }
    }
}).start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值