0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コマンドでmp3ファイルの再生時間を取得・集計する(ffprobe)

Posted at

動機

複数ある音声ファイルの総再生時間を集計したい。
手でひとつひとつ打ち込むのは面倒なので、テキストで一気に。

環境

  • macOS Darwin 22.3.0
  • Homebrew導入済

方法

ffprobeコマンドを使用して音声ファイルのメタデータを取得する。

ffmpegをインストールするとffprobeコマンドが使用できるようになる。

$ brew install ffmpeg
$ which ffprobe
/usr/local/bin/ffprobe

ffprobeコマンドの引数に音声ファイルを与えるとメタデータが表示される。
このうち 'Duration'が再生時間であるようだ。(1秒未満なのはダミーデータだから)

$ ffprobe hello.mp3
ffprobe version 5.1.2 Copyright (c) 2007-2022 the FFmpeg developers
(中略)
Input #0, mp3, from 'hello.mp3':
  Metadata:
    encoder         : Lavf59.27.100
  Duration: 00:00:00.65, start: 0.050113, bitrate: 34 kb/s
  Stream #0:0: Audio: mp3, 22050 Hz, mono, fltp, 32 kb/s

ただ、このままパイプにつないで絞り込めない。

$ ffprobe hello.mp3 | grep Duration
(同じ出力になる)

標準エラー出力に出ていた。リダイレクトする。

$ ffprobe hello.mp3  2>&1 | grep Duration
  Duration: 00:00:00.65, start: 0.050113, bitrate: 34 kb/s

絞り込めた。あとはAWKで

$ ffprobe hello.mp3  2>&1 | grep Duration | awk -F, '{print $1}' | awk '{print $2}'
00:00:00.65

目的であった再生時間が取得できた。
現在ディレクトリの複数ファイルに対してはたとえば次のように。

$ ls | xargs -I% ffprobe % 2>&1 | grep Duration |  awk -F, '{print $1}' | awk '{print $2}'
00:00:00.65
00:00:00.81
(以下略)

以上で目的が達成できた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?