用系统自带 Media Foundation 读取、解码音视频文件(MP4、MOV、M4A、MP3、WAV、WMV 等)
打开媒体文件,失败返回 null,错误信息。
可选参数 @options 可用字段:
hardware:是否允许硬件解码,默认 false;
videoProcessing:"advanced"(默认)或 "basic",选择系统视频处理器;
sampleRate:readAudio 输出的采样率,省略为源采样率,指定时由系统重采样;
channels:readAudio 输出的声道数 1 或 2,省略时与源相同(多于 2 声道的源混缩为立体声)
关闭读取器并释放资源(对象被回收时也会自动调用)
for(bitmap,time,frame in sysMfReaderObject.eachFrame()){
\t/*bitmap 是复用的 PARGB 位图*/
}
eachFrame 迭代中遇到的错误信息
媒体文件完整路径
读取音频并解码为 int16 交错 PCM(buffer),返回 PCM,起始时间(秒)。
可选指定要读取的秒数(按解码块边界会略多一点),省略则读取剩余全部音频。
读完返回 null,出错返回 null,错误信息
按顺序读取下一帧,返回 位图,时间(秒),帧号(从 0 开始,按时间戳换算)。
位图是读取器复用的 PARGB 位图,下次读取会覆盖,需要保留请调用其 copy 函数。
读完返回 null,出错返回 null,错误信息
视频与音频同时定位到指定秒数,成功返回 true。
之后读取的首帧是离该时刻最近的帧,音频从该时刻开始
媒体信息,没有视频或音频时对应字段为 null
音频信息 {sampleRate;channels;bitsPerSample;subtype;bitrate}。
调用 readAudio 后 sampleRate、channels 更新为解码输出格式,bitsPerSample 为 16
时长(秒)
视频信息 {width;height;fps;frameRate;subtype;bitrate}