ストリーミング配信のために動画を分割してみる

通常の動画ファイル、mov や mp4 をそのまま配置しても、ダウンロード配信しかできないので、

ストリーミング配信はできないかと考えました。

「hls.js」を使うと配信できるようです。

でも、そのためには、動画ファイルを hls対応 しなければいけません。


ffmpegを使ってファイルを分割します(10秒毎)。


ffmpeg -y -i test_in.mp4 -vf scale=320:-1 test_out.mp4
ffmpeg -y -i test_out.mp4 -vcodec libx264 -f hls -hls_time 10 -hls_playlist_type vod -hls_segment_filename "video%3d.ts" video.m3u8

#ffmpeg -y -i test_in.mp4 -c:v copy -c:a copy -vf scale=320:-1 -vcodec libx264 -movflags faststart -vprofile baseline -level 3.0 -flags +loop-global_header -map 0 -f segment -vbsf h264_mp4toannexb -segment_format mpegts -segment_time 10 -segment_list video.m3u8 "video%3d.ts"

すると、↓こんな感じでファイルが作られます。

video.m3u8
video000.ts
video001.ts
video002.ts
video003.ts
video004.ts
video005.ts
video006.ts
video007.ts
video008.ts
video009.ts
video010.ts
video011.ts

video.m3u8 の中身


#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:9
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:8.550000,
video/video000.ts
#EXTINF:9.000000,
video/video001.ts
#EXTINF:9.000000,
video/video002.ts
#EXTINF:9.000000,
video/video003.ts
#EXTINF:9.000000,
video/video004.ts
#EXTINF:9.000000,
video/video005.ts
#EXTINF:9.000000,
video/video006.ts
#EXTINF:9.000000,
video/video007.ts
#EXTINF:9.000000,
video/video008.ts
#EXTINF:9.000000,
video/video009.ts
#EXTINF:9.000000,
video/video010.ts
#EXTINF:5.116667,
video/video011.ts
#EXT-X-ENDLIST