当我设置视频格式MPEG-2(常量值8) TS和音频格式ACC (常量值3)时,它只录制ACC格式的没有音频的视频。但它不会给出任何错误。我在三星Galaxy Tab(Honeycomb)上试过了。因为MPEG-2TS支持安卓版本的3.0+。如果我使用默认的视频和音频格式,它可以正常工作。我该怎么做呢。请帮帮忙。
if(mCamera == null) {
mCamera = Camera.open();
mCamera.unlock();
}
if(mMediaRecorder == null) mMediaRecorder = new MediaRecorder();
mMediaRecorder.setPreviewDisplay(surface);
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(8);
mMediaRecorder.setOutputFile("/mnt/sdcard/temp.ts");
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setVideoSize(640, 480);
mMediaRecorder.setVideoEncodingBitRate(500000);
mMediaRecorder.setAudioEncodingBitRate(44100);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setMaxDuration(-1);
mMediaRecorder.prepare();发布于 2012-04-22 00:47:16
看起来您的问题与音频编码器有关。在Android2.3.3(GingerBread)之前,您必须将编码器设置为AMR_NB。在2.3.3版本中,您还可以使用AMR_WB和AAC作为音频编解码器。
发布于 2013-12-03 02:57:16
mMediaRecorder.setAudioEncodingBitRate(44100):44100不是好的音频比特率。它更可能是一个采样率。128000更常见的是音频比特率。
话虽如此,我也有困难录制为m2ts格式的三星盖乐世S3的所有。
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(/*MediaRecorder.OutputFormat.OUTPUT_FORMAT_MPEG2TS*/8);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioSamplingRate(48000);
mediaRecorder.setAudioEncodingBitRate(128000);OutputFormat.OUTPUT_FORMAT_MPEG2TS选项实际上隐藏在Android4.2.2SDK中。因此使用“8”。这可能是一个线索,表明这种格式并不真正受支持。
发布于 2014-09-27 05:16:49
解决方案是在M2ts Writer中应用补丁。构建libstagefright.so并推送到设备。在应用程序中也设置如下
recorder.setAudioSamplingRate(48000);
recorder.setAudioEncodingBitRate(128000);否则它将不会完整地录制该剪辑。不过,我并没有深入研究设置上述参数的原因。
libstagefright中M2tsWriter的修补程序
diff --git a/media/libstagefright/MPEG2TSWriter.cpp b/media/libstagefright/MPEG2TSWriter.cpp
index c9ed5bb..a42371f 100644
--- a/media/libstagefright/MPEG2TSWriter.cpp
+++ b/media/libstagefright/MPEG2TSWriter.cpp
@@ -411,6 +411,7 @@ void MPEG2TSWriter::SourceInfo::onMessageReceived(const sp<AMessage> &msg) {
(const uint8_t *)buffer->data()
+ buffer->range_offset(),
buffer->range_length());
+ readMore();
} else if (buffer->range_length() > 0) {
if (mStreamType == 0x0f) {
if (!appendAACFrames(buffer)) { https://stackoverflow.com/questions/9851771
复制相似问题