LoginSignup
3
8

More than 5 years have passed since last update.

ffmpegコンテナを使ってm4aファイルをwavファイルに変換する

Posted at

こんにちはみなさん

macのquicktime Player使ってPCから流れる音を録音すると、m4a形式で録音されるのだけど、pythonとかでいじりたいので、wavにできないかなーって思ってgoogle先生に聞きまわったところ、webサイトでのエンコードとかしか出てこなかったので、せっかくだからffmpegとか使ってさっさと変換してしまおうと考えました。

今回はそんなお話です。

まずはDockerhuからffmpegイメージを落とす

もう全部コンテナでいいんじゃないかってくらいコンテナに浸かっているので、今回もdockerhub上で一番DL数の多いイメージを落として、そいつを使うことにしました。
というか、ローカルにffmpegインストールすると、PCに変な依存性ができそうで嫌だった感じです。
せっかくなので、極力軽いものを選びます。

$ docker pull jrottenberg/ffmpeg:3.3-alpine

25MBでした。

ディレクトリを作ってテストをする

入力ファイルと出力ファイルが格納されるディレクトリを作って、テスト用のファイルを投入します。

$ mkdir input output
$ cp ~/Music/something/test.m4a ./input/

テストデータが入ったところで、動かしてみましょう

$ docker run --rm -v `pwd`/input:/input -v `pwd`/output:/output jrottenberg/ffmpeg:3.3-alpine \
-i /input/test.m4a /output/test.wav

これでデータが作成されました。
サイズが4倍くらいになりますが、ちゃんと変換されていて、音も聞けます。

ついでにスクリプトにする

これで終わってもいいのですが、コマンドが面倒くさいのでシェルスクリプトに落としちゃいましょう。

convert.sh
INPUT=`pwd`/input
OUTPUT=`pwd`/output
FFMPEG=jrottenberg/ffmpeg:3.3-alpine
COMMAND="docker run --rm -v ${INPUT}:/input -v ${OUTPUT}:/output ${FFMPEG}"

NAME=$1

`${COMMAND} -i /input/${NAME}.m4a /output/${NAME}.wav`

convert.shの引数にファイル名の拡張子を除いたものを入れると、自動的にinputディレクトリのファイルを基にoutputディレクトリにwavを吐き出します。

$ sh convert.sh test2

こんな感じです

まとめ

音声や動画変換するときに、専用ツールを使うのもいいのですが、ffmpegの事も思い出してあげてください。
そして、docker便利です。

参考

3
8
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
3
8