在操作系统中进行视频压缩,查了一下系统支持H.265进行视频压缩。压缩过程中,发现视频压缩速度特别慢。而且有些设备根本放不了,还出现播放错误。压缩一个比较大的视频文件,结果压缩到一半时,系统突然报错说内存不足。这种情况需要改解码器么?
在操作系统中进行视频压缩,查了一下系统支持H.265进行视频压缩。压缩过程中,发现视频压缩速度特别慢。而且有些设备根本放不了,还出现播放错误。压缩一个比较大的视频文件,结果压缩到一半时,系统突然报错说内存不足。这种情况需要改解码器么?
1 回答530 阅读✓ 已解决
1 回答537 阅读
1 回答479 阅读
454 阅读
408 阅读
1 回答372 阅读
视频压缩原理还是先解码后重新编码,harmonyos中视频编解码封装在AVCodec kit(Audio & Video Codec Kit,音视频编解码,封装解封装原子能力)是媒体系统中的音视频的编解码,媒体文件的解析,封装,媒体数据输入等原子能力。
以C++ API对外提供,视频编码,解码支持硬件加速:支持H264 ,H265,H265 10bit的硬件编解码。
视频编解码本身就是耗时操作,尤其是编码,使用硬件加速的编解码会比软件实现的编解码快很多,优先使用系统提供的硬件支持的H265编解码。
压缩大视频内存问题应该是程序存在内存泄漏或者缓存了较多的视频帧,具体原因需要针对日志和代码来看,使用硬件转码的流程:

如果之前使用的不是系统提供的硬件编解码器,切换成系统硬件编解码器试试,系统硬件编解码器在系统内部数据零拷贝:在视频解码过程,AVCodec通过回调函数提供AVbuffer给应用,由应用将要解码的sample数据写入AVBuffer,在AVCodec中数据不再需要从内存考入硬件解码器,而是直接送入解码器解码,实现系统内数据零拷贝。