1.下载openh264源码:openh264-2.5.0.tar.gz
2.创建test文件夹,将openh264的源码目录放进去。最终test项目的目录结构为:
3.新建main.cpp,可以编写对openh264的测试代码。
4.创建makefile,实现编译test项目和ophn264源码。makefile设置如下:
THIRDPARTY_DIR := openh264 CXX := g++ CXXFLAGS := -std=c++11 -Wall -Wextra -g -I$(THIRDPARTY_DIR)/codec/api TARGET := main OUTDIR := release THIRDPARTY_SO := $(wildcard $(THIRDPARTY_DIR)/*.so)# 默认目标:先编译第三方库,复制.so文件,再编译主程序 all: openh264 copy_so $(OUTDIR)/$(TARGET)# 编译主程序 $(OUTDIR)/$(TARGET): main.cpp@mkdir -p $(OUTDIR)$(CXX) $(CXXFLAGS) -o $@ $< -L$(OUTDIR) -lpthread -lopenh264# 递归编译第三方库 openh264:$(MAKE) -C $(THIRDPARTY_DIR)# 复制.so文件到release目录 copy_so: openh264@mkdir -p $(OUTDIR)cp $(THIRDPARTY_DIR)/*.so* $(OUTDIR)/;# 清理:先清理主程序,再清理第三方库 clean:rm -rf $(OUTDIR)$(MAKE) -C $(THIRDPARTY_DIR) clean.PHONY: all clean openh264 copy_so
5.在test目录下执行make,即可实现对openh264和main.cpp的编译。并将libopenh264.so和main可执行程序放置在release目录下。
6.为了便于对openh264源码进行debug断点调试。需要修改openh264文件夹下的makefile,将编译类型由release改为debug
7.开始设置vscode的配置项。创建.vscode文件夹
8.创建编译配置task.jsom。内容如下:
{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "make","args": [],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}] }
9.创建C++属性配置c_cpp_properties.json。内容如下:
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","${workspaceFolder}/openh264/codec/api/**"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "gnu++14","intelliSenseMode": "linux-gcc-x64"}],"version": 4 }
10.创建调试配置launch.json。内容如下:
{"version": "0.2.0","configurations": [{"type": "cppdbg","request": "launch","name": "Debug", "program": "${workspaceFolder}/release/main", "args": [], "cwd": "${workspaceFolder}","stopAtEntry": false,"externalConsole": false,"environment": [{"name": "LD_LIBRARY_PATH","value": "${LD_LIBRARY_PATH}:${workspaceFolder}/release"}],"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "/usr/bin/gdb"}] }
11.至此VSCode配置完毕,就可以使用F5进行愉快的编译和调试了。
12.可以在openh264源码中打断点,通过在main.cpp中写编解码的测试代码。一步步的探究h264的整个编解码流程。