Jom*_*oos 1 java android audio-recording video-recording
我想只用android4格式录制视频.我希望容器和编解码器是MPEG4.所以这就是我为此所做的.
Thread video = new Thread(new Runnable() {
public void run() {
videoRecorder = new MediaRecorder();
videoRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
videoRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
videoRecorder.setVideoEncodingBitRate(56 * 8 * 1024);
videoRecorder.setVideoSize(176, 144);
videoRecorder.setVideoFrameRate(12);
videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
videoRecorder.setOutputFile("/sdcard/video.m4e");
try {
videoRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
videoRecorder.start();
}
});
video.start();
Run Code Online (Sandbox Code Playgroud)
现在,录制完成后,我将视频录制到video.m4e文件中.但是当我检查它的信息时,我得到了以下信息:

同时我使用以下内容录制音频:
Thread audio = new Thread(new Runnable() {
public void run() {
audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
audioRecorder.setOutputFile("/sdcard/audio.amr");
try {
audioRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
audioRecorder.start();
}
});
audio.start();
Run Code Online (Sandbox Code Playgroud)
我按照预期将容器格式和编解码器作为AMR:

那么,是什么原因导致MediaRecorder以3GP格式录制视频?我的程序中没有指定3GP.我正在运行Android 2.2的Samsung Galaxy选项卡上测试此代码
MPEG-4是一种定义音频和视频(AV)数字数据压缩的方法.
用于存储基于时间的媒体内容的文件格式.它是形成许多其他更具体的文件格式(例如3GP,Motion JPEG 2000,MPEG-4 Part 14)的基础的通用格式.
所以你得到的结果没有阴谋,你使用的压缩方法(或"编解码器")是MPEG4,手机生成的视频格式是3gp,实际上是该套件的视频格式的一部分.用于媒体的MPEG4压缩方案.
| 归档时间: |
|
| 查看次数: |
6221 次 |
| 最近记录: |