Articles of android mediarecorder

如何以MPEG-2 TS输出和ACC音频编码格式录制video

当我设置video格式MPEG-2(常数值8)TS和音频格式ACC(常数值3)时,它仅以ACC格式记录video而没有音频。 但它没有给出任何错误。 我试过三星Galaxy Tab(Honeycomb)。 因为MPEG-2TS支持Android 3.0版以上版本。 如果我使用默认的video和音频格式,它可以正常工作。 我怎样才能做到这一点。 请帮忙。 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();

暂停…选项,如默认的相机应用程序?

我一直在努力寻找更好的解决方案来暂停和恢复video录制。 据我所知,Media Recorder类不允许在Android 4.3或更低版本的录制过程中暂停。 我发现mp4parser库可以将多个video文件合并为一个video文件。 我正在使用以下jar子: aspectjrt-1.7.3.jar isoparser-1.0.6.jar 问题是将它们合并在一起需要太长时间。 例如,总共约5分钟的2-3个video文件需要至少2分钟才能合并它们! 我的Galaxy S3和Note 2附带的默认Camera应用程序,在video录制中有暂停选项。 他们暂停的video只需不到1秒即可完成合并。 有人可以告诉我这里我做错了什么吗? 我使用下面的代码合并video文件: for (ArrayList PathList : VideoList) { VideoPathList = PathList; } for (String mMovie : VideoPathList) { Movie movie = MovieCreator.build(mMovie); MovieList.add(movie); } List videoTracks = new LinkedList(); List audioTracks = new LinkedList(); for (Movie mMovie : MovieList) { for […]

Nexus 7摄像机颜色识别问题

我正在创建一个自定义相机应用程序,我发现了Nexus 7的一个严重问题。当我用前置摄像头录制video时,录制的video是流畅的并且再现相同的颜色,但如果使用后置摄像头完成录制,再现的颜色是红色变为蓝色和黄色变为青色。 此问题仅在Nexus 7中发生。有人可以帮助解决方案。 mMediaRecorder = new MediaRecorder(); // Step 1: Unlock and set camera to MediaRecorder mCamera.unlock(); mMediaRecorder.setCamera(mCamera); mMediaRecorder.setMaxDuration(25000); if (mCameraPosition == CameraInfo.CAMERA_FACING_FRONT) { if (orientation == Configuration.ORIENTATION_LANDSCAPE) mMediaRecorder.setOrientationHint(0); else if (orientation == Configuration.ORIENTATION_PORTRAIT) mMediaRecorder.setOrientationHint(270); else if (orientation == REVERSED_LANDSCAPE) { mMediaRecorder.setOrientationHint(180); } else { mMediaRecorder.setOrientationHint(90); } } else { if (orientation == Configuration.ORIENTATION_PORTRAIT) […]

在onLongClickListener中调用MediaRecorder.start时,android.media.MediaRecorder.start中的java.lang.IllegalStateException

当我按住按钮时,我想用MediaRecorder开始录制语音消息。 尝试在onLongClickListener开始录制时,我收到IllegalStateException 。 我在堆栈跟踪中注意到的错误是在第219行: recorder.start() 为什么会这样? btnSendVoice.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View view) { isVoiceButtonHeld = true; startRecording(); return false; } }); btnSendVoice.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { view.onTouchEvent(event); if (event.getAction() == MotionEvent.ACTION_UP) { if (isVoiceButtonHeld) { isVoiceButtonHeld = false; stopRecording(); } } return false; } }); private void […]

android mediarecoder保存空文件

这是我用来以MP4格式记录来自Android设备的video的代码。 正在创建文件,但大小为0字节。 我似乎不明白出了什么问题。 任何帮助将不胜感激。 if(mCamera == null) { mCamera = Camera.open(); mCamera.unlock(); } if(mediaRecorder == null) mediaRecorder = new MediaRecorder(); mediaRecorder.setCamera(mCamera); mediaRecorder.setCamera(mCamera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setMaxDuration(maxDurationInMs); mediaRecorder.setOutputFile(“/sdcard/1.mp4”); mediaRecorder.setVideoFrameRate(videoFramesPerSecond); mediaRecorder.setVideoSize(176,144); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); mediaRecorder.setPreviewDisplay(surface); mediaRecorder.setMaxFileSize(maxFileSizeInBytes); mediaRecorder.prepare(); try { mediaRecorder.prepare(); } catch (IllegalStateException e) { // This is thrown if the previous calls are not called with the […]

Android MediaRecorder – “开始失败:-19”

我正在尝试在Android上创建一个录像机,我已经准备好了应该正常工作的代码 – 但是我不断收到错误信息, start failed: -19 。 这是我的代码: public boolean startRecording() { try { camera.unlock(); mediaRecorder = new MediaRecorder(); mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() { @Override public void onError(MediaRecorder mr, int what, int extra) { Log.i(TAG, “Error”); } }); mediaRecorder.setCamera(camera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); Log.i(TAG, “a”); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); Log.i(TAG, “b”); mediaRecorder.setMaxDuration(maxDurationInMs); // set to 20000 String uniqueOutFile = OUTPUT_FILE […]

android中的video质量?

我正在使用媒体录制器类录制video,我使用以下属性初始化录制器, recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 但是video的质量与我在本机Android相机上拍摄的video不一样,我使用媒体记录器拍摄的video与原生video相比质量较差,如何提高video质量。 如果有人知道我帮助我。谢谢

Android:如果发生任何声音,则监听器录制声音

在我的应用程序中,我想实现在声音发生时记录声音的方法。 像这个应用程序类似的东西:会说话的汤姆猫 那我该怎么办呢? 是否有任何声音可以监听声音并记录它?

Android MediaPlayer错误无法播放此video

我正在开发用于video录制的自定义相机应用程序。 录制的video存储在SD卡上。 该代码适用于所有设备,除了T-Mobile S3(SGH-T999 android v 4.1.2),我得到’无法播放此video’错误。 我已经研究了很多这个问题,尝试改变参数但仍然无法解决。 W/VideoView( 4490): Unable to open content: /storage/sdcard0/MyCameraApp/VID_20140807_130327.ogg W/VideoView( 4490): java.io.IOException: setDataSourceFD failed.: status=0x80000000 W/VideoView( 4490): at android.media.MediaPlayer.setDataSource(Native Method) W/VideoView( 4490): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1204) W/VideoView( 4490): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1175) W/VideoView( 4490): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1121) W/VideoView( 4490): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:953) W/VideoView( 4490): at android.widget.VideoView.openVideo(VideoView.java:249) W/VideoView( 4490): at android.widget.VideoView.access$2000(VideoView.java:51) W/VideoView( 4490): at android.widget.VideoView$6.surfaceCreated(VideoView.java:492) W/VideoView( […]

无法同时录制video并从onPreviewFrame回调中获取帧

我正在使用MediaRecorder在我的Android应用程序中录制video,我还想通过onPreviewFrame回调来MediaRecorder帧数据。 问题是:如果在surfaceChanged回调中重新开始预览,则video录制将停止工作。 如果没有重新启动,可以通过注释surfaceChanged所有surfaceChanged ,然后video录制继续工作,但onPreviewFrame回调停止工作。 我怎样才能使它们都有效? CameraActivity.java import android.app.Activity; import android.hardware.Camera; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class CameraActivity extends Activity implements SurfaceHolder.Callback, Camera.PreviewCallback { private static final String TAG = […]