みかづきブログ・カスタム

基本的にはちょちょいのほいです。

afplayコマンドをつかってMacにてターミナルからコマンドで音楽ファイルを再生する 💻

ターミナル

OSXのコマンドに afplay というものがありまして、これを使うとターミナルから音楽が再生できます。おそらく Audio File Play ということなんだと思います。違うかもしれません。
もうちょっと調べようと思ったのですが、OSXのコマンド一覧や、afplayのドキュメントみたいなものが見つからず、ただただ困ってました。

そんなとき、いちかばちかヘルプコマンドっぽいものをいろいろ試してみると、

afplay -h

で、ヘルプがでてきました。

    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

基本的な使い方としては、

afplay ファイル名

で、音声ファイルを再生でき、いろいろオプションを渡せるようです。

停止はどうすれば良いんだ?と思いましたが、音楽再生中に、

killall afplay

と、killコマンドを打てば普通に止まりました。

僕の場合は、Node.jsから実行する場合が多いのですが、
そんなときは、child_processをつかって、

const exec = require('child_process').exec;

exec(`afplay ${__dirname}/audio.mp3`, (err, stdout, stderr) => {}); // 再生
setTimeout(() => {
  exec(`killall afplay`, (err, stdout, stderr) => {}); // 停止
}, 5000);

といった具合に叩けます。
当然Windowsでは動かないですが、Macだけで動かす場合はこれで充分な気もします!