FFmpeg: 動画ファイルを生成しながら継続的にストリーミング配信する

事前に全てのファイルを準備できていなくても、動的に生成される動画ファイルを連続的に配信する方法。

概要

概要

concat demuxer を使い動画ファイルの一覧を記述したテキストファイルを指定することで、複数のファイルを結合することができる。 ファイルリストには動画ファイルのほか、別のテキストファイルを指定することもできる。テキストファイルは FFmpeg 実行時ではなく評価時に読み込まれるため、順次生成していけば良い。

ファイルリスト

参考) FFmpeg - Concatenate

手順例

  1. 以下のようなテキストファイル(例: 1.txt)を用意する。

    ffconcat version 1.0
    file '1.mp4'
    file '2.txt'
    
  2. ffmpeg でストリーミング開始する。

    例)

    ffmpeg \
        -re -f concat -safe 0 -stream_loop 0 -i ./1.txt \
        -codec:v copy -f flv (ストリーミング先URL)
    
  3. 再生が完了するまでに次の動画ファイルとテキストファイルを用意する。

    例) 2.txt

    ffconcat version 1.0
    file '2.mp4'
    file '3.txt'