zoukankan      html  css  js  c++  java
  • OBS源码编译开发

    本文来自网易云社区


    作者:梁敏


    OBS简介

    OBS(Open Broadcaster Software)是免费开源的视频录制和直播软件,支持运行在windows,Mac和linux平台。官方链接 https://obsproject.com 。 OBS有OBS Classic和OBS studio两个版本。OBS classic是早期版本,已经不再维护和更新。现在推荐使用的是OBS studio版本,是在OBS经典版的基础上重构实现的,使用了更好的模块设计,提高了性能,同时支持DirectX和OpenGL渲染,还支持了多个平台。UI使用了QT制作皮肤。  

    官方有较详细的说明文档,但是在实际编译开发过程中,还是遇到了一些问题。在此记录下来,以备查阅。  

    OBS编译(Windows)

    准备

    生成工程

    • git命令行下载源码,如果没有用git下载,要把子模块也下载完全。git clone --recursive https://github.com/jp9000/obs-studio.git 

    • cmake-gui打开并设置obs-studio代码路径和build路径。本文将下载的obs-studio代码放在了D:/OBS/obs-build/下面。

    • ADD ENTRY增加依赖库,QT路径等,如下:

            DepsPath:D:/OBS/obs-build/dependencies2013/win64/include

            QTDIR:D:/Qt/Qt5.9.0/5.9/msvc2013_64

           

    • Config 选择构建使用的vs版本,本文采用vs2013+QT5.9

    • Generate 构建成功。

    • 打开D:OBSobs-buildobs-studiouildobs-studio.sln

    编译工程

    • 生成解决方案。ALL_BUILD会导致工程中所有项目被构建。一般由CMAKE构建的解决方案(Solution)中包含ALL_BUILD和ZERO_CHECK。

              

    • 解决方案配置

              

    想调试可以使用Debug或者RelWithDebInfo运行程序。

    • 调试运行

    程序编译完成,可以运行D:OBSobs-buildobs-studiouild undirReleasein64bit下obs64.exe。

    Tip:直接运行D:OBSobs-buildobs-studiouildUIRelease目录下的obs.exe,依赖的库都没在这个目录下,所以会报缺失文件什么的。使用ALL build为启动项,这里会从rundir下启动程序的。obs项目在生成后,会把相关文件拷贝到D:OBSobs-buildobs-studiouild undirReleasein64bit下。obs定义了生成后事件:

    C:Program Files (x86)CMakeincmake.exe" -DCONFIG=RelWithDebInfo -DFNAME=obs64.exe -DINPUT=D:/OBS/obs-build/obs-studio/build/UI/RelWithDebInfo -DOUTPUT=D:/OBS/obs-build/obs-studio/build/rundir/RelWithDebInfo/bin/64bit -P D:/OBS/obs-build/obs-studio/cmake/copy_on_debug_helper.cmake   D:OBS  obs-build    obs-studio  uild undirReleasein64bit

    OBS-browser插件

          obs-browser是obs-studio的一个输入源插件,基于CEF开发实现的

    编译CEF

    CEF设置输入,输出目录,Configure,再Generate。

    • CEF编译

    打开D:OBSobs-buildcef_binary_3.2987.1601.gf035232_windows64uildcef.sln,生成解决方案。libcef_dll_wrapper默认的运行库是/MT。obs-studio的项目都是用/MD生成的,因此libcef_dll_wrapper生成时需要修改运行库为/MD,否则obs-studio无法正常生成obs-browser。   

    Building OBS and obs-browser

    • cmake时一定设置下面:

    CEF_ROOT_DIR:D:/OBS/obs-build/cef_binary_3.2987.1601.gf035232_windows64

    BUILD_BROWSER = TRUE 默认是不创建obs-browser的。

    USE_STATIC_CRT = FALSE 设置构建的项目/MD,默认是/MT。这个配置之前没有设置false,导致CEF和obs-browser编译各种问题。

    这里有时候会遇到错误如下图:  

     

    此时手动设置CEFWRAPPER_LIBRARY路径:  

    D:/OBS/obs-build/cef_binary_3.2987.1601.gf035232_windows64/build/libcef_dll_wrapper/Release/libcef_dll_wrapper.lib(注意:如果CEF没有编译过,这需要先CEF构建编译)  

    • 运行调试

    需要把D:OBSobs-buildcef_binary_3.2987.1601.gf035232_windows64Resources下的所有资源文件拷贝到OBS的rundir目录下:D:OBSobs-buildobs-studiouild undirReleaseobs-plugins64bit

    Release版本,需要D:OBSobs-buildcef_binary_3.2987.1601.gf035232_windows64Release下的文件拷贝到OBS的rundir目录下:D:OBSobs-buildobs-studiouild undirReleaseobs-plugins64bit (.lib不用拷贝)


    libcef.dll依赖libEGL.dll和libGLESv2这两个文件,但是QT也依赖这两个文件,他们分别在不同的目录,且使用的版本不统一。debug程序时,会报错,把CEF下的这两个文件统一使用D:OBSobs-buildobs-studiouild undirReleasein64bit目录下的。



    网易云大礼包:https://www.163yun.com/gift


    本文来自网易云社区,经作者梁敏授权发布


    相关文章:
    【推荐】 详解DDOS防护之TCP防护
    【推荐】 大数据技术在金融行业的应用前景
    【推荐】 一个接口的性能问题定位和分析过程

  • 相关阅读:
    Event事件的兼容性
    学会使用Google代码搜索
    event.srcElement怎么取得tr的title值及怎么利用样式编辑blogs
    Mac下MyEclipse配置Tomcat的方法
    Mac 下配置Tomcat7
    myEclipse导入现成项目出现错误
    Android——padding/margin/layout_alignParentRight详解
    Mac系统下Eclipse安装前端开发各类插件
    MyEclipse导入现成项目后报Target runtime Apache Tomcat v6.0 is not defined. 错误的解决办法
    Mac下配置PHP+MySql环境
  • 原文地址:https://www.cnblogs.com/zyfd/p/9590466.html
Copyright © 2011-2022 走看看