

サンプルでraspividで取得した動画をffmpegでエンコードするスクリプトファイルがあってそれをいじってるんですが、ffmpegのオプションみたいに書かれているsegmentの使い方が全く分からないです。それの使い方を説明しているサイトがなかなか見つからなくて困っています。  
プログラムはこれです。

[code]

    #!/bin/bash                                                                                                                                                 
    
    base="/data/live"
    
    cd $base
    
    raspivid -n -w 720 -h 405 -fps 25 -vf -t 86400000 -b 1800000 -o - \
    | ffmpeg -y \
        -i - \
        -c:v copy \
        -map 0:0 \
        -f ssegment \
        -segment_time 4 \
        -segment_format mpegts \
        -segment_list "$base/stream.m3u8" \
        -segment_list_size 720 \
        -segment_list_flags live \
        -segment_list_type m3u8 \
        "segments/%08d.ts"
    
    
    trap "rm stream.m3u8 segments/*.ts" EXIT
    
    # vim:ts=2:sw=2:sts=2:et:ft=sh
    
[/code]

スクリプトファイルを見るのもこれが初めてで少しは分かるんですが、segmentだけよく分かりません。どなたか使い方など教えて欲しいです。  
よろしくお願いします。


CC BY-SA 3.0
2015-07-24T11:06:41.210
12650
2015-07-27T01:42:20.700
2015-07-24T11:10:42.737
8000
9349
question
ffmpeg
ffmpegのssegmentの使い方が分からない


掲示スクリプトのFFmpegでは、[HTTP Live
Streaming](https://developer.apple.com/streaming/)形式（通称HLS）のライブ・ストリーミング用ファイル出力を行っています。

[`segment`または`ssegment`](https://www.ffmpeg.org/ffmpeg-
formats.html#segment_002c-stream_005fsegment_002c-ssegment)オプション指定では、動画像データを"セグメント"と呼ばれる単位に時分割し、それらを複数のファイルに出力します。掲示スクリプトでは`-segment_time
4`を指定していますから、セグメント長は 4秒
で分割されます。また末尾の`"segments/%08d.ts"`により、出力セグメントファイル名を指定しています。（`segments/00000000.ts`,
`segments/00000001.ts`, `segments/00000002.ts`...が出力される。）

`segment`と`ssegment`（正式名`stream_segment`）は名前が似ていますが、前者はグローバルヘッダを要求する出力フォーマット、後者は不要な出力フォーマットという違いがあります。掲示スクリプトでは`-segment_format
mpegts`を指定しており、セグメントの出力フォーマットを[MPEG-2
TS](https://ja.wikipedia.org/wiki/MPEG-2%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)としていますから、グローバルヘッダ不要の`ssegment`を使っています。


CC BY-SA 3.0
2015-07-27T01:42:20.700
12732
2015-07-27T01:42:20.700
49
12650
answer