| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 如何用4行 C 代码实现一个跨平台的命令行 mp3 播放器 -> 正文阅读 |
|
[C++知识库]如何用4行 C 代码实现一个跨平台的命令行 mp3 播放器 |
需求: 实现一个命令行 mp3 播放器,能够通过命令行播放 mp3 文件。 要实现一个 mp3 音乐播放器,首先要有能够播放音乐的类库,并且支持 mp3 协议。?网上没有看到代码简洁清晰的最小命令行的 mp3 播放器的实现。 调研了几个类库之后实现了一个,供需要的朋友参考。 有不少开源和闭源的音频类库可以使用。 可以选择的类库蛮多的: ffmpeg,?mpg123,bass fmod,libvlc,sfml,qt media player 尝试了其中的? libvlc 跑不起来, qt media player 依赖于 qt 而比较笨重,? ffmpeg 也比较重。 最后用 baas 实现了命令行的 mp3 音乐播放器。 仅仅 4行代码实现命令行 mp3 播放器如下4行代码, 命令行的第一个参数指定音频文件路径,创建文件音频流,开始播放。 文件 player.c? 的内容:
代码里面用到 bass.h ,从 bass 官网下载的包里面拷贝出来即可。 动态库的安装从 bass 官网下载动态库:?Un4seen Developments bass 库下载之后(不同操作系统下载不同的压缩包), 把bass 库里面的 so 文件, 或者 dylib, 或者 dll 拷贝到系统的动态库目录中。 比如 Linux 是拷贝 x64/libbass.so (现在几乎没有 32 位的 linux,注意要用 x86 版本的)到 /usr/local/lib 目录下。 然后运行一下 ldconfig 即可编译前面的源代码。 Mac 是拷贝 libbass.dylib 到 /usr/local/lib 目录下。? 编译播放器动态库拷贝到系统的库目录后,Mac/Linux 下面直接用 GCC 编译:
如果动态库没有拷贝到系统的库目录, 跟 bass 库里面的 bass.h 文件一起, 拷贝到源代码 player.c 相同的目录也是可以的。 编译的时候用 -L 参数指定 Library 路径为当前目录。
这样在 Mac/Linux 下面就编译出了 player.out 的可执行程序。 可以播放音乐:
让4行代码更完善前面四行代码的播放器,没有任何的用户帮助,错误提示,也不支持网络歌曲的 URL 播放。? 稍微完善一下,让逻辑更完整,工具也更好用,至少出错的时候有一个提示。
这段代码可以在 Mac/Linux 上面编译运行。 参考注释略加修改可以在 Windows 上编译运行。 编译命令跟前面 4行代码版本的编译命令一样。 新编译出来的程序,除了可以播放本机的音乐,也可以播放网络上的音乐。
注意 bass 库对于开源的软件,免费的软件是不需要收费的。 如果是商业用途是需要收费的。 商业的播放器可以考虑使用 ffmpeg,qt media player 之类的类库。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 5:27:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |