首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

音视频学习 - ffmpeg 编译与调试

  • 25-04-18 18:21
  • 2860
  • 9769
juejin.cn

编译

环境

macOS Ventrua 13.4 ffmpeg 7.7.1 Visual Studio Code Version: 1.99.0 (Universal)

操作

FFmpeg 下载源码

sh
代码解读
复制代码
$ cd ffmpeg-x.y.z $ ./configure nasm/yasm not found or too old. Use --disable-x86asm for a crippled build. If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the [email protected] mailing list or IRC #ffmpeg on irc.libera.chat. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem. # 听劝 + 考虑到后面需要调试 $ mkdir build $ ./configure --prefix=./build --disable-x86asm --enable-debug --disable-stripping $ make

编译成功后结果如下图

2025-04-16 16.33.06.png

ffmpeg

常用库简介

来自参考1

库介绍
avcodec音视频编解码核心库
avformat音视频容器格式的封装和解析
avutil核心工具库
swscal图像格式转换的模块
swresample音频重采样
avfilter音视频滤镜库,如视频加水印、音频变声
avdevice输入输出设备库,提供设备数据的输入与输出,和硬件设备交互

画了个图,比较像了解编解码加封装部分的

2025-04-17 14.40.49.png

准备

获取媒体信息

可以通过ffmpeg包含的工具命令ffprobe

sh
代码解读
复制代码
# 获取mp3的信息 $ ffprobe -show_format 天空之城.mp3

输出结果如下,可知这个音频文件采样率是44.1KHz,双声道,码率是128kb

一个采样率为44.1KHz,采样大小为16bit,双声道的 PCM编码的WAV文件,它的数据速率则为44.1K×16×2=1411.2Kb/s。我们常说128K的MP3,对应的WAV的参数,就是这个 1411.2Kb/s,这个参数也被称为数据带宽,它和ADSL中的带宽是一个概念。

ini
代码解读
复制代码
Input #0, mp3, from '天空之城.mp3': Duration: 00:03:00.35, start: 0.025057, bitrate: 128 kb/s Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s Metadata: encoder : LAME3.99r Side data: replaygain: track gain - -3.300000, track peak - unknown, album gain - unknown, album peak - unknown, [FORMAT] filename=天空之城.mp3 nb_streams=1 nb_programs=0 format_name=mp3 format_long_name=MP2/3 (MPEG audio layer 2/3) start_time=0.025057 duration=180.349388 size=2886135 bit_rate=128024
解封装

将mp3文件转成pcm,选择双声道,采样率44100

sh
代码解读
复制代码
# -y 允许覆盖 # -i 源文件 # -acodec pcm_s16le 编码器 # -f s16le 强制文件格式 # -ac 2 双声道 # -ar 44100 采样率 $ ffmpeg -y -i 天空之城.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 44100 天空之城.pcm

mp3压缩率差不多在1:10到1:12,原来大小是2.9M,转换成31.8M,

下载VLC来播放pcm文件

sh
代码解读
复制代码
$ /Applications/VLC.app/Contents/MacOS/VLC --demux=rawaud --rawaud-channels 2 --rawaud-samplerate 44100 天空之城.pcm

2025-04-17 11.30.09.png

调试ffmpeg

本文在mac环境上使用vscode来调试ffmpeg

用vscode打开ffmpeg目录,选中ffmpeg_g

2025-04-17 15.23.23.png

点击左侧的调试功能,在出现的界面创建一个launch.json file

2025-04-17 15.23.14.png

在出现的下拉选择框中选择Install extension

2025-04-17 15.23.36.png

选择CodeLLDB

2025-04-17 15.24.29.png

安装完成后再次点击,配置launch.json

json
代码解读
复制代码
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "ffmpeg", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/ffmpeg_g", "args": ["-f", "avfoundation", "-list_devices", "true", "-i", "\"\""], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb" } ] }

设置断点,点击调试

2025-04-17 16.07.09.png

与在Xcode中调试不一样的是在交互窗口输入命令前要加一个 -exec。

参考

  1. ffmpeg 各库的介绍、解码流程、常用结构体
  2. ffmpeg处理pcm和mp3互转
  3. mac:VLC播放YUV文件和pcm文件(命令行)
  4. The macOS platform uses vscode to debug ffmpeg
  5. ffmpeg.xianwaizhiyin.net/base-knowle…
注:本文转载自juejin.cn的忘川三的文章"https://juejin.cn/post/7493828097173225511"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

142
代码人生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top