FFmpeg をコマンドを使うのでは無くライブラリーを使って処理しよう
AVFormat
AVcodec
mux: multiplexer
入力と出力用の AVFormat を作る
AVFormat からstream を取り出す demux の処理
stream を AVCodec でデコードする
デコードした後のデータが raw data
オーディオはおそらく PCM Little Endian でより大きな形式
ビデオはよく見ていない
字幕データも stream で codec 処理扱い。ただし、何かする codec は無い?
rawデータに関して filter, sws, swr 処理を行う
audio の場合は 更に channel に分解出来るので注意 定義上 22ch
立体音響とか使うのでfilter は stream単位で掛けるか channel 毎に掛けるか異なる
字幕を変更するのもこのfilter処理だろうな。文字コード変えるのは filter かな?
字幕の別言語追加はstream
raw データを AVCodec でエンコードする出力用に stream にする
stream を複数集めてを mux する
束ねたものを AVFormat として出力する
メタデータ id3tag などは stream じゃなくて format で扱う。
stream でもデコード前、エンコード後のものは packet として扱われる
raw data は frame として扱われる
よって decoder に packet を送って frame を取り出すという処理になる。これは形式に変換が無くても同じ。
音声の処理に関してはlibswr とかでは更に sample という単位で処理される。
ストリーミング用に FIFO などの処理をするAPI関数が utils に含まれる
Formatに関して
format はかなりカプセル化される
TLS|HLS|データ
TLS|HTTP| ファイル
BlackMagicデバイス| データ
UNIX Socket |データ|
ファイル|サブファイル|
RPC|データ|
ディレクトリ|ファイル
など多種多様
APIの呼び出し順、データフロー
これがまとまった文書が無くて Example しかないから library として使うのはとても不便。
最終更新:2025年02月02日 13:19