基于ffmpeg+sdl的audio player

以下是一篇关于本工程的博客介绍,项目地址为:audio_player: 此程序实现了一个基于 FFmpeg 和 SDL2 的简单音频播放器,并支持歌词(LRC)同步显示。其主要功能包括: 音频解码与播放:使用 FFmpeg 打开并解码 MP3 等音频文件,将音频数据转换为 PCM 格式,通过 SDL2 实现音频播放。 歌词同步显示:解析 LRC 歌词文件,提取每行歌词的时间戳和内容,在音频播放过程中根据当前播放时间实时输出对应歌词,实现歌词与音频的同步显示。


基于 FFmpeg 和 SDL2 的简易音频播放器 ------ 支持歌词同步

git地址:git@gitee.com:fahati-champion-and-runner-up/audio_player.git

audio_player: 此程序实现了一个基于 FFmpeg 和 SDL2 的简单音频播放器,并支持歌词(LRC)同步显示。其主要功能包括: 音频解码与播放:使用 FFmpeg 打开并解码 MP3 等音频文件,将音频数据转换为 PCM 格式,通过 SDL2 实现音频播放。 歌词同步显示:解析 LRC 歌词文件,提取每行歌词的时间戳和内容,在音频播放过程中根据当前播放时间实时输出对应歌词,实现歌词与音频的同步显示。

项目简介

本项目实现了一个基于 FFmpeg 和 SDL2 的简易音频播放器,支持 MP3 等音频文件的解码与播放,并可同步显示 LRC 歌词。适合音视频开发初学者学习 FFmpeg 解码流程和 SDL2 音频播放机制。

主要特性

  • 音频解码与播放:利用 FFmpeg 解码音频文件,通过 SDL2 播放 PCM 数据。
  • 歌词同步显示:解析 LRC 歌词文件,实时输出与音频同步的歌词。
  • 跨平台支持:支持 Windows 和 Linux。
  • 代码简洁,易于理解:适合音视频开发入门学习。

依赖环境

  • FFmpeg
  • SDL2
安装依赖(以 Ubuntu/Debian 为例)

sudo apt-get update

sudo apt-get install ffmpeg libsdl2-dev

为了方便初学者运行,具体的头文件与库已经放到了工程的include 与lib下

Windows 用户请参考 FFmpeg 官网 和 SDL2 官网 配置开发环境。

快速开始

  1. 克隆项目代码

    git clone git@gitee.com:fahati-champion-and-runner-up/audio_player.git

    cd audio_player

  2. 准备音频和歌词文件

    将音频文件(如 M500000jJ2Kz4G3ZT7.mp3)和对应的 LRC 歌词文件(如 test.lrc)放在项目根目录下,文件名需一致。

  3. 编译项目

    Linux 下可直接运行:

    ./compile_gcc.sh

    Windows 下可使用 Visual Studio 工程文件或 MinGW 脚本编译。

  4. 运行播放器

    ./audio_player

    播放过程中,歌词会在终端同步输出。按 Ctrl+C 可退出程序。

  5. 运行效果

核心代码说明

播放器主逻辑位于 ffmpeg_audio_player.cpp。主要流程如下:

  1. 使用 FFmpeg 打开音频文件,查找音频流并解码为 PCM 数据。
  2. 通过 SDL2 初始化音频设备,设置回调函数进行音频播放。
  3. 解析 LRC 歌词文件,将时间戳与歌词内容存入内存。
  4. 在音频播放过程中,根据当前播放时间实时输出对应歌词,实现歌词同步。

适用人群

  • FFmpeg、SDL2 初学者
  • 需要实现音频播放及歌词同步功能的开发者
  • 音视频开发相关课程实验

欢迎大家 Star、Fork 和贡献代码!

项目地址:git@gitee.com:fahati-champion-and-runner-up/audio_player.git

相关推荐
l***77521 小时前
从MySQL5.7平滑升级到MySQL8.0的最佳实践分享
ffmpeg
ZouZou老师7 小时前
FFmpeg性能优化经典案例
性能优化·ffmpeg
aqi0010 小时前
FFmpeg开发笔记(九十)采用FFmpeg套壳的音视频转码百宝箱FFBox
ffmpeg·音视频·直播·流媒体
齐齐大魔王12 小时前
FFmpeg
ffmpeg
你好音视频13 小时前
FFmpeg RTSP拉流流程深度解析
ffmpeg
IFTICing1 天前
【环境配置】ffmpeg下载、安装、配置(Windows环境)
windows·ffmpeg
haiy20111 天前
FFmpeg 编译
ffmpeg
aqi001 天前
FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap
ffmpeg·音视频·直播·流媒体
八月的雨季 最後的冰吻1 天前
FFmepg--28- 滤镜处理 YUV 视频帧:实现上下镜像效果
ffmpeg·音视频
ganqiuye1 天前
向ffmpeg官方源码仓库提交patch
大数据·ffmpeg·video-codec