読者です 読者をやめる 読者になる 読者になる

kopug memo

名古屋で働くとあるWebエンジニアの覚書。

FFmpegを使ってFLV形式にエンコードする際に気をつけること

Linux

http://ffmpeg.mplayerhq.hu/linux環境にインストールして、
色々な形式の動画ファイルをFLVにエンコードしているんだけど、
いくつか気をつけるべき点が見えてきた。

-ss や -t でDurationをいじっている分けでもないのに、Durationが増えたり減ったりする事がしょっちゅうある。
殆どは微々たる値なのだが、(+0.1secとか) FlowPlayerとかでこれを再生するときに困った現象が発生した。

たとえば元動画ファイルのDurationが00:00:12.9とし、このファイルをFLVにエンコード後+0.1secになったとすると、Duration値は00:00:13.0になる。
この値がメタ情報に記録され、FlowPlayer(Flash側)は存在しない13秒目のデータを取得しようとし、不具合が発生した。

で結局変換する際に元動画ファイルのDuration値を取得し、コンマ秒以下は0にしてエンコードする事にした。

$ ffmpeg -i <from.avi> -ss 0 -t 00:00:12.0 -ar 44100 -r 12 -s 640x480 <output.flv>

※ -s でサイズを指定する場合、2の倍数にしないとエラーでます。orz