概要
- ffmpegのインストール
- mp4ファイルの用意
- m3u8リスト ts分割
- apacheのmime type追加
- ファイルの配置とm3u8の編集
- HTMLページを作成してアクセスしてみる
詳細
- ffmpegのインストール
- mp4ファイルの用意
- m3u8リスト ts分割
- apacheのmime type追加
- ファイルの配置とm3u8の編集
- HTMLページを作成してアクセスしてみる
1 |
sudo apt-get install ffmpeg |
手持ちのデータを利用する!
分割前のファイルを happy.mp4 とします。
分割後のリストファイルを stream.m3u8 分割ファイルを stream000.ts とします。(000の所は001,002,…と増えていきます)
1 2 |
mkdir stream ffmpeg -i happy.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_format mpegts -segment_time 30 -segment_list stream.m3u8 -segment_list_flags -cache stream/stream%03d.ts |
mine typeに以下を追加します
1 2 |
AddType application/x-mpegURL .m3u8 AddType video/MP2T .ts |
ubuntuのdefaultに追加する場合
1 2 3 4 5 6 7 |
vi /etc/apache2/sites-enabled/000-default.conf --- AddType application/x-mpegURL .m3u8 AddType video/MP2T .ts --- sudo /etc/init.d/apache reload |
nginxの場合 mime.typesに以下を追加
1 2 3 4 |
types { application/x-mpegURL m3u8; video/MP2T ts; < 略> |
DocumentRootから以下の通りファイルを配置します。
1 2 3 4 5 6 |
/var/www/html/ ... DocumentRoot stream.m3u8 stream/ ... ファイルが多いので1階層下げた stream000.ts stream001.ts ... |
stream.m3u8リストの中身をパスに合わせて編集します。相対パスでもいけると思います。
1 2 3 4 5 6 7 8 9 10 11 12 |
vi /var/www/html/stream.m3u8 --- #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:13 #EXTINF:12.053711, /stream/stream000.ts #EXTINF:7.966289, /stream/stream001.ts < 略> |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
vi /var/www/html/index.html --- <!DOCTYPE html> <html lang="ja"> <head> <title>HTTP Live Streaming Test</title> </head> <body> <h1>HTTP Live Streaming Test</h1> <video width="640" height="360" src="stream.m3u8" preload="none" onclick="this.play()" controls /> </body> </html> --- |
http://URL/index.html
再生されましたか?
H.264
1 |
ffmpeg -i orange.mp4 -map 0 -f ssegment -vcodec libx264 -acodec aac -strict experimental -segment_list stream.m3u8 -segment_time 10 stream%03d.ts |
MP4Boxを使った、MPEG-DASH
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
cd work cp DOKOKA/testSource.mp4 ./ ffmpeg -i testSource.mp4 -r 25 -g 25 -codec:v libx264 -codec:a aac -b:v 500k -strict -2 output_500k.mp4 -r 25 -g 25 -codec:v libx264 -codec:a aac -strict -2 -b:v 1000k output_1000k.mp4 -r 25 -g 25 -codec:v libx264 -codec:a aac -strict -2 -b:v 4000k output_4000k.mp4 sudo apt-get install gpac # MP4Boxが入ったパッケージ MP4Box -dash 1500 -profile live -out test.mpd output_500k.mp4#video:id=video_500k output_500k.mp4#audio:id=audio output_4000k.mp4#video:id=video_4000k output_1000k.mp4#video:id=video_1000k python -m SimpleHTTPServer 8999 wget https://raw.githubusercontent.com/Dash-Industry-Forum/dash.js/v1.2.0/dash.all.js -O dash.all-1.2.0.js vi index.html --- < !doctype html> <html> <head> <script type="text/javascript" src="dash.all-1.2.0.js"></script> </head> <body> <h1>MPEG-DASH sample</h1> <div> <video id="videoPlayer" controls="true"></video> </div> <script> (function() { var url = "http://URL:8999/test.mpd"; var context = new Dash.di.DashContext(); var player = new MediaPlayer(context); player.startup(); player.attachView(document.querySelector("#videoPlayer")); player.attachSource(url); })(); </script> </body> </html> --- python -m SimpleHTTPServer 8999 |
http://URL:8999/index.html
WindowsなChromeからもみえるようになった!・・・が、途中でとまっちゃう。