エンコード

動画などをエンコードするツールでは ffmpeg が定番である。例えば

ffmpeg -i hoge.mov hoge.mp4

とか,あるいはさらにいろいろオプションを付けて

ffmpeg -i hoge.ts -ss 4 -f mp4 -aspect 16:9 -s 960x540 hoge.mp4

などとする。動画だけでなく音声にも使える。

さて,かみさんの車のオーディオプレーヤーにUSBメモリを差し込んで聴いている曲で,再生できるものとできないものがあるという。見てみると,再生できないというものはだいたい1曲10MB以上の *.m4a のようだ。ファイルサイズというか,おそらくビットレートが問題なのであろう。そこで,10MB以上の曲をffmpegで128kbpsに再エンコードすることにした。大量にあるので手動でやるのはたいへんだ。そこで,おおよそ次のようなシェルスクリプトを使うことにした:

#! /bin/bash

for x in *.m4a; do
    s=`stat -f%z "$x"`   # これはMacの場合。Linuxでは-f%zを-c%sにする
    if [[ $s -gt 10000000 ]]; then
        ffmpeg -i "$x" -b 128k x.m4a
        mv x.m4a "$x"
    fi
done