使用vscode调试ffmpeg源码

ffmpeg的编译配置
bash 复制代码
# --enable-debug 设置为调试级别
# --disable-stripping 如果不加此选项,会strip去掉符号信息
./configure --prefix={output_path} --enable-debug --disable-stripping
make -j10
VSCode的配置

将以下文件对比替换工程.vscode目录下的相同文件

  • launch.json
XML 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "debug_ffmpeg",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/../offical_ffmpeg/debug/bin/${fileBasenameNoExtension}",
      "args": [
        "-i",
        "http://xxx/test_shot_hls.m3u8",
        "-r",
        "1.00",
        "-f",
        "image2",
        "/Users/admin/test_output/live_%06d.jpeg"
      ],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}/",
      "environment": [],
      "externalConsole": false,
      "launchCompleteCommand": "exec-run",
      "linux": {
        "MIMode": "gdb",
        "miDebuggerPath": "/usr/bin/gdb"
      },
      "osx": {
        "MIMode": "lldb"
      },
      "windows": {
        "MIMode": "gdb",
        "miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe"
      },
      "preLaunchTask": "precompile_ffmpeg",
      "sourceFileMap": {
        "/proc/self/cwd/ffmpeg-src": "${workspaceFolder}/../offical_ffmpeg"
      }
    },
    {
      "name": "debug_ffmpeg_examples",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/../offical_ffmpeg/doc/examples/${fileBasenameNoExtension}",
      "args": [
        "1.aac"
      ],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}/",
      "environment": [],
      "externalConsole": false,
      "launchCompleteCommand": "exec-run",
      "linux": {
        "MIMode": "gdb",
        "miDebuggerPath": "/usr/bin/gdb"
      },
      "osx": {
        "MIMode": "lldb"
      },
      "windows": {
        "MIMode": "gdb",
        "miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe"
      },
      "preLaunchTask": "precompile_ffmpeg_examples",
      "sourceFileMap": {
        "/proc/self/cwd/ffmpeg-src": "${workspaceFolder}/../offical_ffmpeg"
      }
    }
  ]
}
  • tasks.json
XML 复制代码
{
  "tasks": [
    {
      "label": "precompile_ffmpeg",
      "type": "shell",
      "command": "cd ${workspaceFolder} && make -j16"
    },
    {
      "label": "precompile_ffmpeg_examples",
      "type": "shell",
      "command": "cd ${workspaceFolder} && make examples -j16"
    }
  ],
  "version": "2.0.0"
}
  • settings.json
XML 复制代码
{
  "files.associations": {
    "*.ipp": "cc",
    "any": "cpp",
    "array": "cpp",
    "atomic": "cpp",
    "bit": "cpp",
    "*.tcc": "cpp",
    "bitset": "cpp",
    "cctype": "cpp",
    "chrono": "cpp",
    "clocale": "cpp",
    "cmath": "cpp",
    "codecvt": "cpp",
    "complex": "cpp",
    "condition_variable": "cpp",
    "csignal": "cpp",
    "cstdarg": "cpp",
    "cstddef": "cpp",
    "cstdint": "cpp",
    "cstdio": "cpp",
    "cstdlib": "cpp",
    "cstring": "cpp",
    "ctime": "cpp",
    "cwchar": "cpp",
    "cwctype": "cpp",
    "deque": "cpp",
    "forward_list": "cpp",
    "list": "cpp",
    "map": "cpp",
    "set": "cpp",
    "unordered_map": "cpp",
    "unordered_set": "cpp",
    "vector": "cpp",
    "exception": "cpp",
    "string_view": "cpp",
    "fstream": "cpp",
    "functional": "cpp",
    "future": "cpp",
    "initializer_list": "cpp",
    "iomanip": "cpp",
    "iosfwd": "cpp",
    "iostream": "cpp",
    "istream": "cpp",
    "limits": "cpp",
    "memory": "cpp",
    "mutex": "cpp",
    "new": "cpp",
    "numeric": "cpp",
    "optional": "cpp",
    "ostream": "cpp",
    "ratio": "cpp",
    "sstream": "cpp",
    "stdexcept": "cpp",
    "streambuf": "cpp",
    "string": "cpp",
    "system_error": "cpp",
    "thread": "cpp",
    "type_traits": "cpp",
    "tuple": "cpp",
    "typeindex": "cpp",
    "typeinfo": "cpp",
    "utility": "cpp",
    "valarray": "cpp",
    "variant": "cpp",
    "data_type_def.h": "c",
    "ctype.h": "c"
  },
  "cmake.sourceDirectory": "${workspaceFolder}"
}
  • c_cpp_properties.json
XML 复制代码
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "configurationProvider": "ms-vscode.makefile-tools"
        },
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}
相关推荐
工具派13 小时前
口播视频怎么自动剪掉冷场?视频静音删除的阈值实测
ffmpeg·音视频·视频
❀͜͡傀儡师14 小时前
移动端 360° 商品展示方案:从 20MB 雪碧图到 800KB 丝滑视频
ffmpeg·webgl·sprite
2501_930472441 天前
深度复盘|数据库迁移实战(上):腾讯云助手解析慢查询日志,定位索引缺失与语法不兼容
数据库·阿里云·ffmpeg·云计算·腾讯云·aws
我就是DaLing呀!1 天前
flutter + ffmpeg_kit_extended_flutter 大视频合并下载
flutter·ffmpeg·音视频
可乐鸡翅yeah_3 天前
多浏览器 HLS 兼容性差异排查,Chrome、Firefox、Safari 表现不一致定位
chrome·ffmpeg·音视频·firefox·safari·m3u8
行者-全栈开发4 天前
Spring Boot + FFmpeg 视频批量处理实战:压缩、HLS切片与异步任务引擎
spring boot·ffmpeg·异步处理·视频压缩·hls切片·批量任务·redis队列
可乐鸡翅yeah_4 天前
M3U8测试流使用指南,流媒体开发自测与环境校验标准化方案
网络·ffmpeg·音视频·m3u8·m3u8在线·音视频在线播放
heqingchun164 天前
Ubuntu 22.04 交叉编译 RK3568 MPP + FFmpeg 完整指南
linux·ubuntu·ffmpeg
刘广睿4 天前
音频降噪实战:ffmpeg 滤镜、RNNoise 与人声分离方案对比
ffmpeg·音视频·效率工具·剪辑
IvorySQL5 天前
代价比较的变革——PostgreSQL执行计划干预增强深度解析
数据库·postgresql·ffmpeg