音视频开发底层用C而非C++的原因

C++

1个回答

写回答

C++
C++

下面来谈谈我所了解的几个音视频项目的相关情况。FFmpeg这个项目,其代码主要采用C和汇编编写,很少会用到C++,只有在依赖的第三方库仅有C++接口时(通常不欢迎没有C接口的第三方库)才可能会用到C++。gstreamer项目主要是基于C语言的,并且它构建了一套GObject的面向对象设计。VLC项目主要以C语言为基础,只有少数插件是通过C++来实现的,其在AndroidIOS版本的上层使用了一套C++封装接口。mpv项目和FFmpeg有着一脉相承的关系,也是用C语言编写的。obs项目的核心是C语言编写的,不过有一些插件是通过C++实现的。x264是用C语言编写的,而x265则是采用C++编写的。dav1d采用C语言编写,srs和mediAInfo是用C++编写的。在开发者群体中,有不少人喜欢C语言而厌恶C++。对于性能敏感的项目,开发者往往希望能清楚知晓每个语句在CPU中的执行情况,C++较高的封装抽象程度会让一些人觉得不适应。例如,用C语言开发的x264非常稳定,而用C++开发的x265至今仍然存在各种内存问题,虽然语言可能不是主要原因,更多的是人的因素。另外,C语言的编写方式容易让大家达成共识,而C++在一些小细节上容易引发很多争论,这对于社区的运行是不利的,特别是在没有一个能拍板做决定的负责人的情况下,争论会无休止地进行下去。像WebRTC这种由公司主导的开源项目就不存在这样的问题。我并不讨厌C++,我自己写东西就会用C++,因为这样开发效率高,比较省心,而且不用和别人争论该怎么写(我自己能做主)。多数C++开发者,如果没有经过专门的训练,基本上无法用C语言开发稍大型的项目。从实用的角度来说,还是踏踏实实地用C++编写比较好。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号