aardio 文档

sys.mediaFoundation.writer 库模块帮助文档

sys.mediaFoundation 成员列表 #

sys.mediaFoundation.writer #

用系统自带 Media Foundation 写入 MP4(H.264 视频 + AAC 音频)

sys.mediaFoundation.writer() #

返回对象:sysMfWriterObject

sys.mediaFoundation.writer(path,options) #

创建 MP4 写入器,失败返回 null,错误信息。
参数 @options 可用字段:
width,height:视频尺寸(必须是偶数),省略则只写音频;
fps:帧率,默认 30,可写 29.97 或 {30000,1001};
quality:画质 1~100,默认 80(固定 QP:关键帧 12、其他帧 20),文件大小随画面复杂度变化;
低于 80 时主要降低运动内容的画质,关键帧 QP 不高于 14,静止文字始终清晰;
videoBitrate:改为按平均码率(bps)编码(VBR),与 quality 只能指定一个;
profile:"high"(默认)、"main"、"baseline";
gop:关键帧间隔(帧数),默认 2 秒;
hardware:是否允许硬件编码器,默认 false(软件编码);
encoder:编码器参数表,键为 CODECAPI_ 名称(可省略前缀),覆盖以上默认设置;
audio:音频参数 {sampleRate=48000;channels=2;bitrate=192000},省略则不写音频

sysMfWriterObject 成员列表 #

sysMfWriterObject.audioBitrate #

实际使用的 AAC 码率

sysMfWriterObject.audioFrames #

已写入的音频采样帧数

sysMfWriterObject.audioTime #

已写入的音频时长(秒)

sysMfWriterObject.channels #

音频声道数

sysMfWriterObject.close() #

结束写入(Finalize)并释放资源,成功返回 true。
必须调用,否则 MP4 文件不完整(对象被回收时也会自动调用)

sysMfWriterObject.fps #

帧率(数值)

sysMfWriterObject.frameCount #

已写入的视频帧数

sysMfWriterObject.frameRate #

帧率分数 {分子,分母}

sysMfWriterObject.height #

视频高度

sysMfWriterObject.path #

输出文件完整路径

sysMfWriterObject.rateControl #

视频码率控制方式:
{mode="quality";quality;qpI;qpP}、{mode="bitrate";bitrate},
encoder 参数里指定了 AVEncCommonRateControlMode 时为 {mode="custom"}

sysMfWriterObject.sampleRate #

音频采样率

sysMfWriterObject.sinkWriter #

IMFSinkWriter 接口对象(高级用法),关闭后为 null

sysMfWriterObject.videoTime #

已写入的视频时长(秒)

sysMfWriterObject.width #

视频宽度

sysMfWriterObject.writeAudio(pcm,size) #

写入音频,成功返回 true,失败返回 null,错误信息。
参数 @pcm 为 int16 交错 PCM(buffer 或字符串),传入指针时必须用 @size 指定字节数。
可分块多次写入,时间戳按已写入的采样数自动计算。
建议每写一帧视频就写入这一帧时长的音频

sysMfWriterObject.writeFrame(frame,repeatCount) #

写入一帧,成功返回 true,失败返回 null,错误信息。
参数 @frame 可以是 gdip.bitmap(尺寸必须与视频一致,建议 PARGB 格式,透明部分按黑底合成),
也可以是自上而下、B,G,R,X 字节序、步幅为 宽×4 的 buffer、字符串或指针。
可选参数 @repeatCount 指定重复写入的帧数(共用同一份数据),默认 1。
时间戳按帧号自动计算

Markdown 格式