首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MPEG-2TS输出和ACC音频编码格式中录制视频

如何在MPEG-2TS输出和ACC音频编码格式中录制视频
EN

Stack Overflow用户
提问于 2012-03-24 20:29:52
回答 3查看 5.6K关注 0票数 6

当我设置视频格式MPEG-2(常量值8) TS和音频格式ACC (常量值3)时,它只录制ACC格式的没有音频的视频。但它不会给出任何错误。我在三星Galaxy Tab(Honeycomb)上试过了。因为MPEG-2TS支持安卓版本的3.0+。如果我使用默认的视频和音频格式,它可以正常工作。我该怎么做呢。请帮帮忙。

代码语言:javascript
复制
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();
EN

回答 3

Stack Overflow用户

发布于 2012-04-22 00:47:16

看起来您的问题与音频编码器有关。在Android2.3.3(GingerBread)之前,您必须将编码器设置为AMR_NB。在2.3.3版本中,您还可以使用AMR_WB和AAC作为音频编解码器。

票数 0
EN

Stack Overflow用户

发布于 2013-12-03 02:57:16

mMediaRecorder.setAudioEncodingBitRate(44100):44100不是好的音频比特率。它更可能是一个采样率。128000更常见的是音频比特率。

话虽如此,我也有困难录制为m2ts格式的三星盖乐世S3的所有。

代码语言:javascript
复制
    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”。这可能是一个线索,表明这种格式并不真正受支持。

票数 0
EN

Stack Overflow用户

发布于 2014-09-27 05:16:49

解决方案是在M2ts Writer中应用补丁。构建libstagefright.so并推送到设备。在应用程序中也设置如下

代码语言:javascript
复制
recorder.setAudioSamplingRate(48000); 
recorder.setAudioEncodingBitRate(128000);

否则它将不会完整地录制该剪辑。不过,我并没有深入研究设置上述参数的原因。

libstagefrightM2tsWriter的修补程序

代码语言:javascript
复制
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)) { 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9851771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档