MediaRecorder test

public class

MediaRecorder

extends Object

java.lang.Object
   ↳ android.media.MediaRecorder

Class Overview



Used to record audio and video. The recording control is based on a simple state machine (see below).

A common case of using MediaRecorder to record audio works as follows:

MediaRecorder recorder = new MediaRecorder(); 
 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
 recorder.setOutputFile(PATH_NAME); 
 recorder.prepare(); 
 recorder.start();   // Recording is now started 
 ... 
 recorder.stop(); 
 recorder.reset();   // You can reuse the object by going back to setAudioSource() step 
 recorder.release(); // Now the object cannot be reused 
 

Applications may want to register for informational and error events in order to be informed of some internal update and possible runtime errors during recording. Registration for such events is done by setting the appropriate listeners (via calls (to
setOnInfoListener(OnInfoListener)setOnInfoListener
and/or setOnErrorListener(OnErrorListener)setOnErrorListener).
In order to receive the respective callback associated with these listeners, applications are required to create MediaRecorder objects on threads with a Looper running (the main UI thread by default already has a Looper running).

Note: Currently, MediaRecorder does not work on the emulator.

Developer Guides

For more information about how to use MediaRecorder for recording video, read the
Camera developer guide. For more information about how to use MediaRecorder for recording sound, read the
Audio Capture developer guide.

Summary


Nested Classes
class MediaRecorder.AudioEncoder Defines the audio encoding. 
class MediaRecorder.AudioSource Defines the audio source. 
interface MediaRecorder.OnErrorListener Interface definition for a callback to be invoked when an error occurs while recording. 
interface MediaRecorder.OnInfoListener Interface definition for a callback to be invoked when an error occurs while recording. 
class MediaRecorder.OutputFormat Defines the output format. 
class MediaRecorder.VideoEncoder Defines the video encoding. 
class MediaRecorder.VideoSource Defines the video source. 
Constants
int MEDIA_ERROR_SERVER_DIED Media server died.
int MEDIA_RECORDER_ERROR_UNKNOWN Unspecified media recorder error.
int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED A maximum duration had been setup and has now been reached.
int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED A maximum filesize had been setup and has now been reached.
int MEDIA_RECORDER_INFO_UNKNOWN Unspecified media recorder error.
Public Constructors
MediaRecorder()
Default constructor.
Public Methods
final static int getAudioSourceMax()
Gets the maximum value for audio sources.
int getMaxAmplitude()
Returns the maximum absolute amplitude that was sampled since the last call to this method.
Surface getSurface()
Gets the surface to record from when using SURFACE video source.
void prepare()
Prepares the recorder to begin capturing and encoding data.
void release()
Releases resources associated with this MediaRecorder object.
void reset()
Restarts the MediaRecorder to its idle state.
void setAudioChannels(int numChannels)
Sets the number of audio channels for recording.
void setAudioEncoder(int audio_encoder)
Sets the audio encoder to be used for recording.
void setAudioEncodingBitRate(int
bitRate)
Sets the audio encoding bit rate for recording.
void setAudioSamplingRate(int samplingRate)
Sets the audio sampling rate for recording.
void setAudioSource(int audio_source)
Sets the audio source to be used for recording.
void setCamera(Camera
c)
Sets a Camera to use for recording.
void setCaptureRate(double fps)
Set video frame capture rate.
void setLocation(float latitude, float
longitude)
Set and store the geodata (latitude and longitude) in the output file.
void setMaxDuration(int max_duration_ms)
Sets the maximum duration (in ms) of the recording session.
void setMaxFileSize(long max_filesize_bytes)
Sets the maximum filesize (in bytes) of the recording session.
void setOnErrorListener(MediaRecorder.OnErrorListener
l)
Register a callback to be invoked when an error occurs while recording.
void setOnInfoListener(MediaRecorder.OnInfoListener
listener)
Register a callback to be invoked when an informational event occurs while recording.
void setOrientationHint(int degrees)
Sets the orientation hint for output video playback.
void setOutputFile(FileDescriptor
fd)
Pass in the file descriptor of the file to be written.
void setOutputFile(String
path)
Sets the path of the output file to be produced.
void setOutputFormat(int output_format)
Sets the format of the output file produced during recording.
void setPreviewDisplay(Surface
sv)
Sets a Surface to show a preview of recorded media (video).
void setProfile(CamcorderProfile
profile)
Uses the settings from a CamcorderProfile object for recording.
void setVideoEncoder(int video_encoder)
Sets the video encoder to be used for recording.
void setVideoEncodingBitRate(int
bitRate)
Sets the video encoding bit rate for recording.
void setVideoFrameRate(int rate)
Sets the frame rate of the video to be captured.
void setVideoSize(int width, int height)
Sets the width and height of the video to be captured.
void setVideoSource(int video_source)
Sets the video source to be used for recording.
void start()
Begins capturing and encoding data to the file specified with setOutputFile().
void stop()
Stops recording.
Protected Methods
void finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
[Expand]

Inherited Methods

From class java.lang.Object

Object clone()
Creates and returns a copy of this Object.
boolean equals(Object
o)
Compares this instance with the specified object and indicates if they are equal.
void finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
final Class<?> getClass()
Returns the unique instance of Class that represents this object's class.
int hashCode()
Returns an integer hash code for this object.
final void notify()
Causes a thread which is waiting on this object's monitor (by means of calling one of the
wait() methods) to be woken up.
final void notifyAll()
Causes all threads which are waiting on this object's monitor (by means of calling one of the
wait() methods) to be woken up.
String toString()
Returns a string containing a concise, human-readable description of this object.
final void wait()
Causes the calling thread to wait until another thread calls the
notify() or notifyAll() method of this object.
final void wait(long millis, int nanos)
Causes the calling thread to wait until another thread calls the
notify() or notifyAll() method of this object or until the specified timeout expires.
final void wait(long millis)
Causes the calling thread to wait until another thread calls the
notify() or notifyAll() method of this object or until the specified timeout expires.

Constants


public static final int
MEDIA_ERROR_SERVER_DIED

Added in API level 17

Media server died. In this case, the application must release the MediaRecorder object and instantiate a new one.

See Also

Constant Value: 100 (0x00000064)

public static final int
MEDIA_RECORDER_ERROR_UNKNOWN

Added in API level 3

Unspecified media recorder error.

See Also

Constant Value: 1 (0x00000001)

public static final int
MEDIA_RECORDER_INFO_MAX_DURATION_REACHED

Added in API level 3

A maximum duration had been setup and has now been reached.

See Also

Constant Value: 800 (0x00000320)

public static final int
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED

Added in API level 3

A maximum filesize had been setup and has now been reached.

See Also

Constant Value: 801 (0x00000321)

public static final int
MEDIA_RECORDER_INFO_UNKNOWN

Added in API level 3

Unspecified media recorder error.

See Also

Constant Value: 1 (0x00000001)

Public Constructors


public MediaRecorder
()

Added in API level 1

Default constructor.

Public Methods


public static final int
getAudioSourceMax ()

Added in API level 4

Gets the maximum value for audio sources.

See Also

public int getMaxAmplitude
()

Added in API level 1

Returns the maximum absolute amplitude that was sampled since the last call to this method. Call this only after the setAudioSource().

Returns
  • the maximum absolute amplitude measured since the last call, or 0 when called for the first time
Throws
IllegalStateException if it is called before the audio source has been set.

public Surface getSurface ()

Gets the surface to record from when using SURFACE video source.

Should only be called after prepare(). Frames rendered before start() will be discarded.

Throws
IllegalStateException if it is called before prepare(), after stop() or is called when VideoSource is not set to SURFACE.
See Also

public void prepare
()

Added in API level 1

Prepares the recorder to begin capturing and encoding data. This method must be called after setting up the desired audio and video sources, encoders, file format, etc., but before start().

Throws
IllegalStateException if it is called after start() or before setOutputFormat().
IOException if prepare fails otherwise.

public void release
()

Added in API level 1

Releases resources associated with this MediaRecorder object. It is good practice to call this method when you're done using the MediaRecorder. In particular, whenever an Activity of an application is paused (its onPause() method is called), or stopped (its
onStop() method is called), this method should be invoked to release the MediaRecorder object, unless the application has a special need to keep the object around. In addition to unnecessary resources (such as memory and instances of codecs) being held, failure
to call this method immediately if a MediaRecorder object is no longer needed may also lead to continuous battery consumption for mobile devices, and recording failure for other applications if no multiple instances of the same codec are supported on a device.
Even if multiple instances of the same codec are supported, some performance degradation may be expected when unnecessary multiple instances are used at the same time.

public void reset
()

Added in API level 1

Restarts the MediaRecorder to its idle state. After calling this method, you will have to configure it again as if it had just been constructed.

public void setAudioChannels
(int numChannels)

Added in API level 8

Sets the number of audio channels for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified number of audio channels are applicable.

Parameters
numChannels the number of audio channels. Usually it is either 1 (mono) or 2 (stereo).

public void setAudioEncoder
(int audio_encoder)

Added in API level 1

Sets the audio encoder to be used for recording. If this method is not called, the output file will not contain an audio track. Call this after setOutputFormat() but before prepare().

Parameters
audio_encoder the audio encoder to use.
Throws
IllegalStateException if it is called before setOutputFormat() or after prepare().
See Also

public void setAudioEncodingBitRate
(int bitRate)

Added in API level 8

Sets the audio encoding bit rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified bit rate is applicable, and sometimes the passed bitRate will be clipped internally
to ensure the audio recording can proceed smoothly based on the capabilities of the platform.

Parameters
bitRate the audio encoding bit rate in bits per second.

public void setAudioSamplingRate
(int samplingRate)

Added in API level 8

Sets the audio sampling rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified audio sampling rate is applicable. The sampling rate really depends on the format for
the audio recording, as well as the capabilities of the platform. For instance, the sampling rate supported by AAC audio coding standard ranges from 8 to 96 kHz, the sampling rate supported by AMRNB is 8kHz, and the sampling rate supported by AMRWB is 16kHz.
Please consult with the related audio coding standard for the supported audio sampling rate.

Parameters
samplingRate the sampling rate for audio in samples per second.

public void setAudioSource
(int audio_source)

Added in API level 1

Sets the audio source to be used for recording. If this method is not called, the output file will not contain an audio track. The source needs to be specified before setting recording-parameters or encoders. Call this only before setOutputFormat().

Parameters
audio_source the audio source to use
Throws
IllegalStateException if it is called after setOutputFormat()
See Also

public void setCamera
(Camera c)

Added in API level 3

Sets a Camera to use for recording. Use this function to switch quickly between preview and capture mode without a teardown of the camera object.
unlock() should be called before this. Must call before prepare().

Parameters
c the Camera to use for recording

public void setCaptureRate
(double fps)

Added in API level 11

Set video frame capture rate. This can be used to set a different video frame capture rate than the recorded video's playback rate. This method also sets the recording mode to time lapse. In time lapse video recording, only video is recorded. Audio related
parameters are ignored when a time lapse recording session starts, if an application sets them.

Parameters
fps Rate at which frames should be captured in frames per second. The fps can go as low as desired. However the fastest fps will be limited by the hardware. For resolutions that can be captured by the video camera, the fastest fps can be computed using
getPreviewFpsRange(int[]). For higher resolutions the fastest fps may be more restrictive.
Note that the recorder cannot guarantee that frames will be captured at the given rate due to camera/encoder limitations. However it tries to be as close as possible.

public void setLocation
(float latitude, float longitude)

Added in API level 14

Set and store the geodata (latitude and longitude) in the output file. This method should be called before prepare(). The geodata is stored in udta box if the output format is OutputFormat.THREE_GPP or OutputFormat.MPEG_4, and is ignored for other output
formats. The geodata is stored according to ISO-6709 standard.

Parameters
latitude latitude in degrees. Its value must be in the range [-90, 90].
longitude longitude in degrees. Its value must be in the range [-180, 180].
Throws
IllegalArgumentException if the given latitude or longitude is out of range.

public void setMaxDuration
(int max_duration_ms)

Added in API level 3

Sets the maximum duration (in ms) of the recording session. Call this after setOutFormat() but before prepare(). After recording reaches the specified duration, a notification will be sent to the
MediaRecorder.OnInfoListener with a "what" code of
MEDIA_RECORDER_INFO_MAX_DURATION_REACHED and recording will be stopped.
Stopping happens asynchronously, there is no guarantee that the recorder will have stopped by the time the listener is notified.

Parameters
max_duration_ms the maximum duration in ms (if zero or negative, disables the duration limit)
Throws
IllegalArgumentException  

public void setMaxFileSize
(long max_filesize_bytes)

Added in API level 3

Sets the maximum filesize (in bytes) of the recording session. Call this after setOutFormat() but before prepare(). After recording reaches the specified filesize, a notification will be sent to the
MediaRecorder.OnInfoListener with a "what" code of
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED and recording will be stopped.
Stopping happens asynchronously, there is no guarantee that the recorder will have stopped by the time the listener is notified.

Parameters
max_filesize_bytes the maximum filesize in bytes (if zero or negative, disables the limit)
Throws
IllegalArgumentException  

public void setOnErrorListener
(MediaRecorder.OnErrorListener l)

Added in API level 3

Register a callback to be invoked when an error occurs while recording.

Parameters
l the callback that will be run

public void setOnInfoListener
(MediaRecorder.OnInfoListener listener)

Added in API level 3

Register a callback to be invoked when an informational event occurs while recording.

Parameters
listener the callback that will be run

public void setOrientationHint
(int degrees)

Added in API level 9

Sets the orientation hint for output video playback. This method should be called before prepare(). This method will not trigger the source video frame to rotate during video recording, but to add a composition matrix containing the rotation angle in the
output video if the output format is OutputFormat.THREE_GPP or OutputFormat.MPEG_4 so that a video player can choose the proper orientation for playback. Note that some video players may choose to ignore the compostion matrix in a video during playback.

Parameters
degrees the angle to be rotated clockwise in degrees. The supported angles are 0, 90, 180, and 270 degrees.
Throws
IllegalArgumentException if the angle is not supported.

public void setOutputFile
(FileDescriptor fd)

Added in API level 3

Pass in the file descriptor of the file to be written. Call this after setOutputFormat() but before prepare().

Parameters
fd an open file descriptor to be written into.
Throws
IllegalStateException if it is called before setOutputFormat() or after prepare()

public void setOutputFile
(String path)

Added in API level 1

Sets the path of the output file to be produced. Call this after setOutputFormat() but before prepare().

Parameters
path The pathname to use.
Throws
IllegalStateException if it is called before setOutputFormat() or after prepare()

public void setOutputFormat
(int output_format)

Added in API level 1

Sets the format of the output file produced during recording. Call this after setAudioSource()/setVideoSource() but before prepare().

It is recommended to always use 3GP format when using the H.263 video encoder and AMR audio encoder. Using an MPEG-4 container format may confuse some desktop players.

Parameters
output_format the output format to use. The output format needs to be specified before setting recording-parameters or encoders.
Throws
IllegalStateException if it is called after prepare() or before setAudioSource()/setVideoSource().
See Also

public void setPreviewDisplay
(Surface sv)

Added in API level 1

Sets a Surface to show a preview of recorded media (video). Calls this before prepare() to make sure that the desirable preview display is set. If
setCamera(Camera) is used and the surface has been already set to the camera,
application do not need to call this. If this is called with non-null surface, the preview surface of the camera will be replaced by the new surface. If this method is called with null surface or not called at all, media recorder will not change the preview
surface of the camera.

Parameters
sv the Surface to use for the preview
See Also

public void setProfile
(CamcorderProfile profile)

Added in API level 8

Uses the settings from a CamcorderProfile object for recording. This method should be called after the video AND audio sources are set, and before setOutputFile(). If a time lapse CamcorderProfile is used, audio related source or recording parameters are
ignored.

Parameters
profile the CamcorderProfile to use
See Also

public void setVideoEncoder
(int video_encoder)

Added in API level 3

Sets the video encoder to be used for recording. If this method is not called, the output file will not contain an video track. Call this after setOutputFormat() and before prepare().

Parameters
video_encoder the video encoder to use.
Throws
IllegalStateException if it is called before setOutputFormat() or after prepare()
See Also

public void setVideoEncodingBitRate
(int bitRate)

Added in API level 8

Sets the video encoding bit rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified bit rate is applicable, and sometimes the passed bitRate will be clipped internally
to ensure the video recording can proceed smoothly based on the capabilities of the platform.

Parameters
bitRate the video encoding bit rate in bits per second.

public void setVideoFrameRate
(int rate)

Added in API level 3

Sets the frame rate of the video to be captured. Must be called after setVideoSource(). Call this after setOutFormat() but before prepare().

Parameters
rate the number of frames per second of video to capture
Throws
IllegalStateException if it is called after prepare() or before setOutputFormat(). NOTE: On some devices that have auto-frame rate, this sets the maximum frame rate, not a constant frame rate. Actual frame rate will vary according to lighting conditions.

public void setVideoSize
(int width, int height)

Added in API level 3

Sets the width and height of the video to be captured. Must be called after setVideoSource(). Call this after setOutFormat() but before prepare().

Parameters
width the width of the video to be captured
height the height of the video to be captured
Throws
IllegalStateException if it is called after prepare() or before setOutputFormat()

public void setVideoSource
(int video_source)

Added in API level 3

Sets the video source to be used for recording. If this method is not called, the output file will not contain an video track. The source needs to be specified before setting recording-parameters or encoders. Call this only before setOutputFormat().

Parameters
video_source the video source to use
Throws
IllegalStateException if it is called after setOutputFormat()
See Also

public void start
()

Added in API level 1

Begins capturing and encoding data to the file specified with setOutputFile(). Call this after prepare().

Since API level 13, if applications set a camera via setCamera(Camera), the
apps can use the camera after this method call. The apps do not need to lock the camera again. However, if this method fails, the apps should still lock the camera back. The apps should not start another recording session during recording.

Throws
IllegalStateException if it is called before prepare().

public void stop
()

Added in API level 1

Stops recording. Call this after start(). Once recording is stopped, you will have to configure it again as if it has just been constructed. Note that a RuntimeException is intentionally thrown to the application, if no valid audio/video data has been received
when stop() is called. This happens if stop() is called immediately after start(). The failure lets the application take action accordingly to clean up the output file (delete the output file, for instance), since the output file is not properly constructed
when this happens.

Throws
IllegalStateException if it is called before start()

Protected Methods


protected void finalize
()

Added in API level 1

Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.

Note that objects that override finalize are significantly more expensive than objects that don't. Finalizers may be run a long time after the object is no longer reachable, depending on memory pressure, so it's a bad idea to rely on them for
cleanup. Note also that finalizers are run on a single VM-wide finalizer thread, so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary for a class that has a native peer and needs to call a native method to destroy that
peer. Even then, it's better to provide an explicit close method (and implement
Closeable), and insist that callers manually dispose of instances. This works well for something like files, but less well
for something like a BigInteger where typical calling code would have to deal with lots of temporaries. Unfortunately, code that creates lots of temporaries is the worst kind of code from the point of view of the single finalizer thread.

If you must use finalizers, consider at least providing your own
ReferenceQueue
and having your own thread process that queue.

Unlike constructors, finalizers are not automatically chained. You are responsible for calling
super.finalize() yourself.

Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See
Effective Java Item 7, "Avoid finalizers" for more.  

时间: 2024-11-03 21:04:14

MediaRecorder test的相关文章

使用MediaRecorder编写Android 录音

  1.使用Mediarecorder 录音 MediaRecorder类用来进行媒体采样,包括音频和视频.也就是用来记录音频和视频方法的类,记录的数据一般都是写入到文件里面.因此我们可以通过这个类实现录音和录视频的功能.下面介绍MediaRecorder用来录音的简单方法: MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.

auidorecorder-Android 使用mediarecorder能录制wav的录音文件吗?

问题描述 Android 使用mediarecorder能录制wav的录音文件吗? 我使用AuidoRecorder录制,发现使用单声道录制后的声音像是变声了的,所有想使用mediarecorder录制,他能录制wav格式的文件吗? 解决方案 android播放音频文件(MediaPlayer)和录音(MediaRecorder)--录音android使用MediaRecorder实现录音如何使用android用 wav格式录音 解决方案二: http://www.cnblogs.com/Ama

MediaRecorder测量音量大小

1. 2.MediaRecorder mMediaRecorder; 3.int ratio = mMediaRecorder.getMaxAmplitude() / BASE; 4.int db = 0;// 分贝 也可以理解为定义的音量大小 5.if (ratio > 1) 6.db = (int) (20 * Math.log10(ratio));//db就是我们需要取得的音量的值. 7.//(int) (20 * Math.log10(ratio))振幅和音量大小的公式 8.//BASE

【Android】用MediaRecorder录制视频太短崩的问题

具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩.   错误信息: java.lang.RuntimeException: stop failed.  at android.media.MediaRecorder.stop(Native Method) 解决办法: 在stop以前调用setOnErrorListener(null);就行了!   相关代码:     /** 开始录制 */     @Override     

android-Android调用mediarecorder录制视频,只能录十秒,这个怎么解决

问题描述 Android调用mediarecorder录制视频,只能录十秒,这个怎么解决 我用Eclipse做了一个视频录制软件,但是这个最多只能录制十秒的视频,调用了mediarecorder方法,public void recorder() { try { myRecAudioFile = File.createTempFile(""video"".3gp""dir); //创建临时文件 recorder.setVideoSource(Med

android录制和实时-使用MediaRecorder录制视频和实时传输

问题描述 使用MediaRecorder录制视频和实时传输 android开发,我要实现的是:在服务器端使用MediaRecorder录制mp4的视频, 同时要把数据流通过rtsp实时传输到客户端.因为MediaRecorder设置setOutputFile时, 只能选择文件或者localsocket的一种方式输出,请问要怎样才能把MediaRecorder输出的 数据流分成两份,一份用来录制视频,一份用来作流媒体的输入流? 解决方案 http://blog.csdn.net/lvjunwoai

android-在 MediaRecorder 如何设计时间计算?

问题描述 在 MediaRecorder 如何设计时间计算? 我使用 MediaRecorder 创建了程序我想显示音频记录的时间期限.MediaRecorder 只是用来录制声音.那如何显示时间呢? 解决方案 在记录开始的 System.currentTimeMillis(); 方法中设置 start_time 方法.然后使用 Runnable 可以执行一个循环直到停止记录. final Handler handler = new Handler();Runnable update_runna

media ecorder-关于Android MediaRecorder 录制视频问题

问题描述 关于Android MediaRecorder 录制视频问题 谁有一个可以运行的Android 的视频录制项目啊?求!简单的能运行就行,网上找的很少信息,代码又跑不起来, 好像各个教程上面也很少说到视频录制问题,真的急求啊,本人邮箱:chenshuichuan@hotmai.com,万分感谢! 解决方案 Android Mediarecorder录制视频遇到的问题总结[Android]用MediaRecorder录制视频太短崩的问题Android多媒体应用:视频录制-MediaReco

mediarecorder-android 用MediaRecorder 录制时改变预览的界面?

问题描述 android 用MediaRecorder 录制时改变预览的界面? 请问一下,用MediaRecorder 录制视频时,当开始录制之后,我想改变预览界面的大小,有什么方法吗?(我通过 LayoutParams 来改变,虽然预览显示的界面是变化了,可是当我录制结后之后,视频播出来是在我设置LayoutParams 之后的视频画面是静止的了,只有声音,画面停住了)....请问,这又是什么问题导致的呢? 解决方案 Android调用系统摄像头--使用MediaRecorder--1--预览

Android 利用mediarecorder录制视频后用ThumbnailUtils类切图返回空

问题描述 Android 利用mediarecorder录制视频后用ThumbnailUtils类切图返回空 如题,因为兼容性问题,将录制时候的MediaRecorder参数如下: recorder = new MediaRecorder(); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //指定OutputFo