在 OS X 下有一个命令行音乐播放器 afplay
但是这个命令每次只能接受一个参数
我尝试写一个脚本让它可以播放文件下所有的音乐文件
首先想到的就是
#!/bin/zsh
for music in "$@"
do
afplay ${music}
done
尝试运行,出现了
may only specify one file to play
于是我意识到应该是播放结束后执行下一次循环
但是……
要怎么知道当前这首歌已经播放完成了呢?
1
manoon 2015-11-25 00:21:44 +08:00
逻辑上来讲
想办法去判断一首歌的时间长度, 如果没有办法去判断,那就都设成 5 分钟 我是打酱油的,提供一个思路,哈哈。 |
2
kendetrics 2015-11-25 00:35:08 +08:00
意思就是在播放中再次执行命令就会输出 may only specify one file to play ?
你在循环里加个判断呢,如果输出匹配这个就不跳到下一首的名字去,而是继续尝试执行这一首的命令 |
3
4641585 OP |
4
MrGba2z 2015-11-25 00:53:35 +08:00 1
for SONG in *.mp3 ; do afplay ${SONG} ; done
|
5
4641585 OP @kendetrics
➜ /Users/{user}/Downloads/floder git:(master) ✗ ./test1 *.wav { may only specify one file to play Audio File Play Version: 2.0 Copyright 2003-2013, Apple Inc. All Rights Reserved. Specify -h (-help) for command options Usage: afplay [option...] audio_file Options: (may appear before or after arguments) {-v | --volume} VOLUME set the volume for playback of the file {-h | --help} print help { --leaks} run leaks analysis {-t | --time} TIME play for TIME seconds {-r | --rate} RATE play at playback rate {-q | --rQuality} QUALITY set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality) {-d | --debug} debug print output } *n #n=$# |
7
hienchu 2015-11-25 09:56:36 +08:00 via iPhone
找个能分析 mp3 的工具,得到时间长度,问题就解决了。如果不想用工具,可以根据码率和文件大小做个大概的估计
|
8
liberize 2015-11-25 12:39:36 +08:00
我这儿 afplay 是同步的,播完才会播下一首,脚本运行没问题
|