Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

ffmpegでraw画像を扱う方法など調べたまとめ

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

ffmpegを仕事で使ったので調べたことなど。

www.ffmpeg.org

オプション

muxer

-f image2 // 画像ファイル全般の指定
-f image2pipe // 画像ファイルをpipeにストリームするときの指定。

image2pipeに関する情報が少なくて参った。

上書き

-y // Main optionに記述がある。
update 1 // image2のoptionに記述がある。

www.ffmpeg.org

www.ffmpeg.org

scale filter

-vf scale=1920:1080

幅か高さに-1を指定すると縦横比を維持できる、とある。

trac.ffmpeg.org

raw画像

-vcodec rawvideo

image2 / image2pipeを使ってraw画像を取り出す時でも、コーデックの指定はrawvideoでいい模様。拡張子.rawにすれば指定しなくていいかもしれない。

固定長データで切り出す

rawvideo形式は完全にピクセル数×カラーチャンネルのデータで成立しているので、pipeに出てくるデータをwidth * height * channelで切り出すことができれば、raw画像として使用できる。もちろんffmpegにraw画像保存させた方がラクなんだけど、まぁ要件によってはそうもいかず。

フレーム数

今回、動画のフレーム数を取得する方法を調べた。

%d.raw // ファイル名にフレーム数を含めるためのパラメータ。
%05d.raw // フレーム数5桁をベースにしたパラメータ。5桁であふれると勝手に桁が増える模様。

ファイル名にフレーム数を載せるのはこれで行ける。ただ、pipeのようにファイル名を使わない場合に、フレーム数を取得するスマートな方法はあまりない。

力業で解決するしかないみたい。

stackoverflow.com

ffmpegのログファイルにフレーム数があるらしく、そちらをなんとかする方法があるのかも……という提案がこちらにはある。ちょっと大変だけど。

www.ffmpeg-archive.org

参考URL