概要
- ffmpegのインストール
- mp4ファイルの用意
- m3u8リスト ts分割
- apacheのmime type追加
- ファイルの配置とm3u8の編集
- HTMLページを作成してアクセスしてみる
詳細
1. ffmpegのインストール
% sudo apt-get install ffmpeg
2. mp4ファイルの用意 (手持ちのデータを利用する!)
3. m3u8リスト ts分割
分割前のファイルを happy.mp4 とします。
分割後のリストファイルを stream.m3u8 分割ファイルを stream000.ts とします。(000の所は001,002,…と増えていきます)
% 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
4. apacheのmime type追加
mine typeに以下を追加します
AddType application/x-mpegURL .m3u8 AddType video/MP2T .ts
ubuntuのdefaultに追加する場合
% 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に以下を追加
types { application/x-mpegURL m3u8; video/MP2T ts; < 略>
5. ファイルの配置とm3u8の編集
DocumentRootから以下の通りファイルを配置します。
/var/www/html/ ... DocumentRoot stream.m3u8 stream/ ... ファイルが多いので1階層下げた stream000.ts stream001.ts ...
stream.m3u8リストの中身をパスに合わせて編集します。相対パスでもいけると思います。
% 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 < 略>
6. HTMLページを作成してアクセスしてみる
% 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の場合
% 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の場合
% cd work % cp DOKOKA/happy.mp4 ./ % ffmpeg -i happy.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 % vi index.html
<script src="http://cdn.dashjs.org/latest/dash.all.min.js"></script>
<style>
video {
width: 640px;
height: 360px;
}
</style>
<div>
<video data-dashjs-player="" autoplay="" src="http://URL:8999/test.mpd" controls=""></video>
</div>
% python -m SimpleHTTPServer 8999
http://URL:8999/index.html にアクセス。WindowsなChromeからもみえるようになった!・・・が、途中でとまっちゃう。URLの所は、適宜HTTPServerを起動したホストのIPや自ホストなら、localhostなどと書き換えてください。
参考
- http://nico-lab.net/hls_muxer_with_ffmpeg/
- http://akiyoko.hatenablog.jp/entry/2015/08/11/015852
- https://worklog.be/archives/3367