こんにちはみなさん
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倍くらいになりますが、ちゃんと変換されていて、音も聞けます。
ついでにスクリプトにする
これで終わってもいいのですが、コマンドが面倒くさいのでシェルスクリプトに落としちゃいましょう。
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便利です。
参考