求问Android录制视频时,为什么用html5的video控件播放不出声音

小爷胡汉三 发布于 2015/11/13 12:10
阅读 1K+
收藏 0
我做了一个Android的视频录像功能,录像完毕后上传到服务器,然后可以在网页打开!
在Android内部录制完毕预览跟在服务器用迅雷等播放器打开视频文件都能正常的播放!
但是在HTML5的Video中播放时就会出现只有画面没有声音的问题!
求问大牛,是不是录制的时候声音编码的格式有什么讲究!

Android关键部分代码:

mMediaRecorder = new MediaRecorder();
        mMediaRecorder.reset();
        if (mCamera != null)
            mMediaRecorder.setCamera(mCamera);
        mMediaRecorder.setOnErrorListener(this);
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
        
        // 设置从麦克风采集声音(或来自录像机的声音AudioSource.CAMCORDER)
        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        // 设置从摄像头采集图像  
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        // 设置视频文件的输出格式
        // 必须在设置声音编码格式、图像编码格式之前设置
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        // 设置声音编码的格式 
        mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mMediaRecorder.setVideoEncodingBitRate(2 * 1024 * 1024);// 设置帧频率,然后就清晰了
        mMediaRecorder.setOrientationHint(90);// 输出旋转90度,保持竖屏录制   
        // 设置图像编码的格式     
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mMediaRecorder.setVideoSize(mWidth, mHeight);
        // 每秒 4帧  
        mMediaRecorder.setVideoFrameRate(20);      
        mMediaRecorder.setOutputFile(mVecordFile.getAbsolutePath());
        mMediaRecorder.prepare();  
        try { 
            mMediaRecorder.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (RuntimeException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }



另外如果我想加入一些视频优化该从哪些方面入手,请指教!我看美颜相机中拍摄出来的视频很小也很清晰,请问这是用什么技术做处理的呢?



加载中
1
小爷胡汉三
小爷胡汉三

MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件。因为HTML5的问题,setAudioEncoder的时候我得采用AAC的方式来弄!而且setVideoEncoder的时候也不能乱来,得用H264否则视频在HTML5的Video里面也显示不了,目前我的是这样的!

OK能显示了,我在去看看有什么方法能在压缩视频大小的同时还能保证清晰!

返回顶部
顶部