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

相关推荐
活捉一个坏小孩6 天前
Nvidia FFmpeg安装说明
ffmpeg
WF_YL6 天前
如何删除 Oracle 过期 key / 数据,删除目的的key
ffmpeg
浩瀚之水_csdn6 天前
avcodec_find_decoder函数详解
ffmpeg
浩瀚之水_csdn9 天前
avcodec_parameters_copy详解
linux·人工智能·ffmpeg
不吃鱼的猫74813 天前
【ffplay 源码解析系列】02-核心数据结构详解
c++·ffmpeg·音视频
不吃鱼的猫74813 天前
【ffplay 源码解析系列】01-开篇-ffplay整体架构与启动流程
c++·架构·ffmpeg·音视频
REDcker15 天前
FFmpeg开发者快速入门
ffmpeg
不吃鱼的猫74815 天前
【从零手写播放器:FFmpeg 音视频开发实战】04-封装格式与多媒体容器
c++·ffmpeg·音视频
REDcker16 天前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
硬汉嵌入式17 天前
QEMU & FFmpeg作者Fabrice Bellard推出MicroQuickJS,一款面向嵌入式系统JavaScript引擎,仅需10K RAM
javascript·ffmpeg·microquickjs