一行代码播放当前目录下的所有mp3

所谓彩云易散,无论什么好东西,如果不在自己的手里,就随时可能失去。

原本好好的,突然就不能用了,这样的例子很多。Google reader 当年用得好好的,Google说不再做了。Gmail用得好好的,突然逐渐断断续续不能访问了。Keep练得百八十遍觉得很好的课程,需要会员才能练了。

这几天遇到的是听歌时,网易云音乐听到喜欢的曲子,某一天突然就不能听了。这首不能听是由于版权方要求,还有些是不知道谁要求的,本来能听的突然就要求买会员才能行。惊喜地在网易云音乐找到了这首的视频,官方的,下载,导出为mp3。尝试上传到网易云音乐,它说,它把可能有版权限制的音乐替我筛选去除了。吓得我一哆嗦,赶紧看看自己是不是衣装革履谨言慎行人模狗样。它、它、它怎么能访问我的手机SD卡呢。我要求上传,要求上传时,你当然可以并且那时才能访问我的SD卡。为了筛选,那不是我的要求,你怎么能访问我的SD卡呢,我授权了?试了一下播放,还可以,没有好心替我删除掉。

所以,音乐必须放在本地,播放器也必须可靠,不然会被供应商卡脖子。再这么发展下去,我是不是得自己手挫个C语言编译器才行。然而,这个编译器的源代码,用哪个可靠的编译器才能转换成可执行程序呢。这么说,我还得手搓一个汇编器,手搓一个……用十六进制写个编译器,操作系统可靠吗?还得手搓一个操作系统,手搓一个CPU,亲手手搓电烙铁,以及焊锡。

任务艰巨,来日方长,且顾眼前。并且,开头跑题已经够远的了。

把一堆mp3文件放在同一个目录下。

用ffmpeg。在这里下载 https://ffmpeg.org/download.html,以下红框中的应该都行,我不记得当初自己下载的是哪一个了,每次装机这都是早期必装软件之一。

使用其中的ffplay。在文件资源管理器(猜测 我的电脑 也行)中打开mp3所在的文件夹,然后在文件资源管理器的地址栏,即下图中红框位置,输入 cmd,回车,弹出命令行窗口,当前目录刚好就是文件资源管理器的当前文件夹。

在命令行窗口中输入下述命令。

for %i in (*.mp3) do ffplay "%i" -autoexit

这行代码会遍历当前目录中的所有mp3文件,逐一用ffplay播放。其中的%i表示正在遍历 的变量。-autoexit参数用于要求ffplay播放完当前mp3后退出,以便下一个ffplay进程开始播放下一首mp3。

播放时效果如下图。

左侧是弹出的窗口,ffplay正在播放mp3,开始显示频谱。
按q退出当前音乐,并开始下一首。
按w由频谱切换成波形。

右侧是命令行窗口。在命令行窗口中按 ctrl-C,停止所有mp3播放并退出。

这行代码也可以写个批处理 bat 文件,每次放歌的时候运行这个批处理。代码需要稍微修改,如下。

for %%i in (*.mp3) do ffplay "%%i" -autoexit

缺点包括以下几点。

(1) mp3未排序,可忍。

(2) 左侧窗口总显示在当前虚拟桌面上。不希望它打扰我,但是没有找到方法使它隐藏或者显示在不是我正工作的虚拟桌面上。

优点是 mp3 在本地,不担心云山雾绕或者乱云飞渡,播放器令人放心。

最大的优点是,通过捅咕这些练习了批处理和ffplay的命令行。

 

Leave a Reply

Your email address will not be published. Required fields are marked *