Quantcast
Channel: FFmpeg | ニコラボ
Viewing all articles
Browse latest Browse all 310

詳細な分割設定ができる Segment

$
0
0

segment muxer とは時間やフレーム数指定でストリームを分割する。出力ファイル名には image2 muxer と同じように連番出力や、strftime オプションを使って日時設定もできる。正確にストリームを分割するにはキーフレームを分割毎の先頭に挿入しなければならない。キーフレームが先頭に来ないとキーフレームが来るまで映像が乱れる原因になる。hls muxer のオプションと併用することで詳細に分割設定ができる

ffmpeg で Apple HTTP Live Streaming(HLS)を扱う
ffmpeg で指定秒ごとに分割する方法

基本コマンド

60秒ごとに .mp4 で分割して out.csv で分割データを記載したファイルも出力する
ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_time 60 -segment_list out.csv out%03d.mp4

時間でキーフレームを指定しセグメントを分割して、キーフレーム時間を丸める
ffmpeg -i input.mp4 -force_key_frames 1,2,3,5,8,13,21 -map 0 -c:v libx264 -c:a aac -f segment -segment_time 60 -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 -segment_list out.csv out%03d.mp4

公式ドキュメント:FFmpeg Formats Documentation :: segment, stream_segment, ssegment

オプション

  • increment_tc 1|0
    各セグメント間のタイムコードを増やす
    規定値:0[boolean]
  • reference_stream specifier
    どのストリームを参照するか
    規定値:auto[string]
  • segment_format format
    セグメントのコンテナフォーマット指定
    規定値:出力コンテナフォーマットと同じ
  • segment_format_options options_list
  • segment_list name
    出力されるセグメントリストのファイル名の指定
    規定値:出力しない[string]
  • segment_list_flags flags
    • cache
      キャッシュを許可。M3U8 リストだけに反映(規定値)
    • live
      HLS 配信に有効
  • segment_list_size size
    リストに記載されるセグメント数。0 はすべて
    範囲:0 – INT_MAX[int]
  • segment_list_entry_prefix prefix
    リストの各セグメントに URL を付与する。各セグメントに絶対パスを指定するときに使う
    規定値:なし[string]
  • segment_list_type type
    セグメントリストのファイル形式の指定
    • flat
      普通のテキスト形式
    • csv
    • ext
    • ffconcat
    • m3u8
    • hls
  • segment_time time
    各セグメントの秒指定。キーフレームでないと指定した時間通りに分割されない
    規定値:2[string]
  • segment_atclocktime 1|0
    1 で 00:00 開始の時計の時間通りに分割する。segment_time で分割時間を指定する
    規定値:0[boolean]
  • segment_clocktime_offset duration
    segment_atclocktime を使ったときに分割時間を遅延させる。例えば -segment_time 900 -segment_clocktime_offset 300 を併用すると 600秒、1500秒、2400秒と900秒毎に分割される
    規定値:0[duration]
  • segment_clocktime_wrap_duration duration
    規定値:INT64_MAX[int]
  • segment_time_delta delta
    各セグメントの開始時間を決める時間(PTS)を特定する
    規定値:0[duration]
  • segment_times times
    , で区切って分割時間を指定する。3分より長いストリームを用いて 60,120,180 を指定すると、60, 60, 60, 残り時間全部で分割される
    規定値:0[string]
  • segment_frames frames
    , で区切って分割フレーム数を指定する。segment_times と同様に分割タイミングが来たときにキーフレームが来ていなければ次のキーフレームで分割する
    規定値:0[string]
  • segment_wrap limit
    セグメント数の上限を指定する。上限に達すると最初のセグメントから上書きするので容量の削減になる
    範囲:0 – INT_MAX[int]
    規定値:0
  • segment_start_number number
    セグメントの開始番号。開始番号を変更するのであり、映像の開始をずらすのではない
    範囲:0 – I64_MAX[int64]
    規定値:0
  • strftime 1|0
    各セグメント名に strftime を使う。1 にしたときは必ずセグメント名に strftime の書式を用いなければならない
    規定値:0[boolean]
  • break_non_keyframes 1|0
    1 にしたときにセグメントの開始にキーフレーム以外も含める。特定のプレイヤーで挙動がよくなるかもしれないが一般的にはよくならない
    規定値:0[boolean]
  • reset_timestamps 1|0
    タイムスタンプをリセットして各セグメントのタイムスタンプが 0 になる。hls など分割を前提に読み込む以外はリセットした方が分割後のファイルが扱いやすい
    規定値:0[boolean]
  • initial_offset offset
    タイムスタンプのオフセット秒指定
    規定値:0[duration]
  • write_empty_segments 1|0
    各セグメントで空データが出力された場合にそのまま出力するか
    規定値:0[boolean]

Viewing all articles
Browse latest Browse all 310

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>