VS2022编译librtmp制作rtmp.lib用于安装windows版本的python-librtmp 0.3.0
聲明:
部分參考
2020-08-28 Windows下編譯librtmp - 簡書1、下載最新的rtmpdump源碼,下載路徑:http://git.ffmpeg.org/rtmpdump PS:當前最新版本為v2.4,rtmpdump-c5f04a5.t...https://www.jianshu.com/p/2bd46399e3ab和
Python python-librtmp包_程序模塊 - PyPI - Python中文網Python python-librtmp這個第三方庫(模塊包)的介紹: librtmp的python綁定,用cffi構建 Python bindings for librtmp, built with cffi 正在更新《 python-librtmp 》相關的最新內容!https://www.cnpython.com/pypi/python-librtmp
python librtmp是一個RTMP客戶端庫。它使用實現 由librtmp通過cffi提供。
如果你想在你的python環境安裝python-librtmp 0.3.0,可以參考此博文。
依賴性
- Python,至少2.6或3.3版。
- 一個c編譯器,能夠生成Python擴展,例如gcc
- librtmp:包含其頭的庫(librtmp dev或等效的庫)
- cffi:cffi依賴于libffi及其頭文件(libffi dev或等效文件)
- 在python<;3.4中,還需要singledispatch的后臺端口。
這些依賴性里,除了第三個,其他都比較容易,這里不贅述。
Python python-librtmp包_程序模塊 - PyPI - Python中文網Python python-librtmp這個第三方庫(模塊包)的介紹: librtmp的python綁定,用cffi構建 Python bindings for librtmp, built with cffi 正在更新《 python-librtmp 》相關的最新內容!https://www.cnpython.com/pypi/python-librtmp
1. 下載librtmp的源代碼
http://git.ffmpeg.org/rtmpdumphttp://git.ffmpeg.org/rtmpdump下載下來的包是?rtmpdump-2.3.tgz。
解壓后可見如下
2. 新建VS空項目,添加解壓后的librtmp目錄下所有 *.c *.h 文件
?3.VS2022 右擊項目名稱設置property,將Configuration Type為.dll。
?4. 配置預定義宏
_DEBUG _CONSOLE NO_CRYPTO _CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE?5.添加附加依賴項 ws2_32.lib和wsock32.lib
?6.?修改rtmp_sys.h和rtmp.c文件
rtmp_sys.h修改部分如下:
#ifdef _MSC_VER /* MSVC */ //#define snprintf _snprintf #define strcasecmp stricmp #define strncasecmp strnicmp #define strdup _strdup //#define vsnprintf _vsnprintf #endifrtmp.c修改部分如下:
添加頭文件
#include <sys/types.h>注釋掉以下三段
//#ifdef _DEBUG //extern FILE *netstackdump; //extern FILE *netstackdump_read; //#endif //#ifdef _DEBUG // fwrite(ptr, 1, nBytes, netstackdump_read); //#endif //#ifdef _DEBUG // fwrite(buf, 1, len, netstackdump); //#endif7.?使用 _declspec(dllexport)與_declspec(dllimport),產生librtmp.lib
此時,可以嘗試編譯,其實也可以生成librtmp.dll和librtmp.lib。但是你直接做操作8,可能你會發現有不少報錯。報錯格式如下:
error LNK2001: unresolved external symbol RTMP_**解決辦法是修改代碼。
如果報錯的函數聲明是extern,使用_declspec(dllimport),其他則使用 _declspec(dllexport)。我一共有24條要修改。修改格式仿照如下:
_declspec(dllimport) extern RTMP_LogLevel RTMP_debuglevel; _declspec(dllexport) void RTMP_LogSetOutput(FILE *file);修改后成功編譯,可以生成librtmp.dll和librtmp.lib。
8. 從git下載python-librtmp安裝文件,將librtmp.lib拷貝到根目錄。執行安裝
git clone git://github.com/chrippa/python-librtmp.git cd python-librtmp sudo python setup.py install執行安裝并檢查安裝成功。
Extracting python_librtmp-0.3.0-py3.9-win-amd64.egg to d:\users\me\appdata\local\programs\python\python39\lib\site-packages Adding python-librtmp 0.3.0 to easy-install.pth fileInstalled d:\users\me\appdata\local\programs\python\python39\lib\site-packages\python_librtmp-0.3.0-py3.9-win-amd64.egg Processing dependencies for python-librtmp==0.3.0 Searching for cffi==1.15.0 Best match: cffi 1.15.0 Adding cffi 1.15.0 to easy-install.pth fileUsing d:\users\me\appdata\local\programs\python\python39\lib\site-packages Searching for pycparser==2.21 Best match: pycparser 2.21 Adding pycparser 2.21 to easy-install.pth fileUsing d:\users\me\appdata\local\programs\python\python39\lib\site-packages Finished processing dependencies for python-librtmp==0.3.0D:\pythonfile\rtmptest\python-librtmp-master\python-librtmp-master>pip list Package Version -------------- ------- cffi 1.15.0 pip 22.0.4 pycparser 2.21 python-librtmp 0.3.0 setuptools 57.4.0 wheel 0.37.1D:\pythonfile\rtmptest\python-librtmp-master\python-librtmp-master>檢查安裝成功
總結
以上是生活随笔為你收集整理的VS2022编译librtmp制作rtmp.lib用于安装windows版本的python-librtmp 0.3.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非学习的点云配准方法汇总
- 下一篇: 基于Unity的阿里云短信SDK接入流程