MediaRecorder方法属性详解

 分类:Android, Java 阅读 (1,709)
6月 282022
 

基本Android sdk28版本编写

一、方法

setMaxDuration(int max_duration_ms)

  设置最大录像时长(单位:毫秒),需要在setOutFormat()之后prepare()之前调用。当录像时长达到这个时长,将触发MediaRecorder.OnInfoListener事件,事件的what参数为MEDIA_RECORDER_INFO_MAX_DURATION_REACHED,并且录像停止。停止动作是异步执行的,不能保证收到OnInfoListener时停止操作已完成。

setMaxFileSize(long max_filesize_bytes)

  设置最大录像文件大小(单位:字节),需要在setOutFormat()之后prepare()之前调用。当录像时长达到这个时长,将触发MediaRecorder.OnInfoListener事件,事件的what参数为MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED,并且录像停止。停止动作是异步执行的,不能保证收到OnInfoListener时停止操作已完成。

setNextOutputFile(File file)

  当setOutputFile或者setNextOutputFile所设置的输出文件达到最大文件尺寸时,使用此函数设置下一个输出文件。文件应该是可查找的(seekable)?当设置了next output file后,程序在调用mediarecorder.stop之前不要使用这个文件。程序应该在收到what参数为MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING的OnInfoListener事件之后,what参数为MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED的OnInfoListener之前调用setNextOutputFile函数。当收到what参数为MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED的OnInfoListener事件后,此函数设置的文件才开始被录制。当之前设置的文件未被使用时,是不能设置新的输出文件的。当调用stop停止录像时,程序负责清理未使用的文件。

setPreviewDisplay(Surface sv)

  设置一个Surface用于预览正在录制的视频。需要在prepare函数前调用此函数。

  如果使用了setCamera(camera),并且camera对象已经设置了surface,程序就不用再调用此函数设置surface了,如果使用了一个非null值的surface作为参数调用了此函数,camera的预览surface将被新设置的surface代替;如果根本没有调用此函数或者传入了一个为null的surface,media recorder不会改变camera的surface。

打赏
 Posted by on 2022-06-28

Sorry, the comment form is closed at this time.