ffmpeg.js使用libopenh264解码性能低的原因

最近在研究用Emscripten开发JavaScript的直播播放器,使用ffmpeg内置的h264解码速度还是可以接受的,本想使用openh264的解码进行比较,但发现非常慢,无法达到640×480@30帧的解码速度。

本来以前也有过用openh264的项目,直接使用libopenh264进行解码速度还是很快的。但编译进ffmpeg里使用就特别慢,于是-g重新编译NodePlayer.js并开始Chrome Performance录制。

libopenh264dec.c ->svc_decode_frame中,av_image_copy居然比DecodeFrame2解码耗时还多。这段代码是这样的

原来openh264的实现里面DecodeFrame2需要传入的只是 uint8_t* ptrs[3]; 指针,解码器内部分配内存,这导致不能直接解码到我们预先分配好内存的AVFrame->data上去,解码后还有进行内存拷贝,速度自然就快不起来了。

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: ffmpeg.js使用libopenh264解码性能低的原因

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据