基于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

相关推荐
bubiyoushang88817 小时前
CentOS安装ffmpeg并转码视频为mp4
ffmpeg·centos·音视频
weiwei2284421 小时前
ffmpeg使用入门
ffmpeg·vcpkg
云霄IT1 天前
python使用ffmpeg录制rtmp/m3u8推流视频并按ctrl+c实现优雅退出
python·ffmpeg·音视频
rjszcb2 天前
通过v4l2,采集视频,FFmpeg编码压缩封装视频(三)
ffmpeg·音视频
老谢不老2 天前
ffmpeg-7.1.1 下载安装 windows 版,MP4 转 m3u8 切片,遇到报错 Unrecognized option ‘vbsf‘的解决办法
ffmpeg
xhBruce2 天前
FFmpeg+javacpp中FFmpegFrameGrabber
ffmpeg·ffmpeg+javacpp
努力做小白2 天前
Linux驱动20 --- FFMPEG视频API
linux·驱动开发·单片机·嵌入式硬件·ffmpeg·lvgl
肥or胖4 天前
【音视频协议篇】WebRTC 快速入门
ffmpeg·音视频·webrtc
aqi004 天前
FFmpeg开发笔记(七十八)采用Kotlin+Compose的NextPlayer播放器
android·ffmpeg·音视频·直播·流媒体