HTTP Live StreamingによるiPhone5への動画配信

April 23, 2013 – 2:42 pm

HTTP Live StreamingによるiPhone5への動画の配信を試してみた。サーバー上の動画ファイルを、試しに、Streaming配信し、それなりの性能が出ることを確認した。

Video Cameraから、直接、映像データを送るといったいわゆるLive映像の配信には道遠しという感じはあるが、なんとか録画済みの動画ファイルの配信は成功した。

今回の作業で知ったこと経験などメモしておいた。

RTMPによる動画配信との比較: 以前、AdobeのRTMPによる動画の配信を行ったことがある。Red5をサーバーとする動画配信をしたわけだが、現在もこの方式を用いて、動画配信を行っている。

このRTMPを用いた動画配信の方式はiPhoneをクライアントとしては使うことができない。iPhoneではAdobeのFlashがサポートされないからだ。Flashの消費電力が大きいためとの話を聞いたことがある。

ということで、iPhone用の動画配信を可能にするものはないかとさがしてたどり着いたのがHTTP Live Streamingなる方式だ。この方式、RTMPの時のように動画配信のために特別なサーバーを準備する必要はない。通常のWebサーバー(Apache)のもとで動作するという。早速、サンプル動画をiPhone向けに流してみることにした。

サンプル動画を配信してみた: HTTP Live Streaming(HLS) の紹介をする前に、ともかくiPhone(Safari) 上で、我がサーバー上に置いたサンプル動画を受信できるようにしてみた。URLは以下:

http://mobile.yamasnet.com/HLS_Test/

このURLにiPhoneからアクセスすることによりサンプル動画を見ることができる。このサンプル動画、約3分程度の長さのもので、Red5の配布パッケージに含まれていたもの(内容は、Avataの予告編)。

動画の再生は電波の受信環境により異なるだろうが、3Gの環境で問題なく動画を再生することができた。因みに、動画再生時の3Gのネットワークのスピードは、587kb/sだった(通信速度測定アプリCheckTubesでの測定値)。

HTTP Live Streaming: HTTP Live Streamingについては、Web上で数多く解説されている。ここでは説明を詳細な説明は割愛するが、実際に動画の配信をテストするうえで知っておいたほうがよさそうな点についてのみ、以下に、記述する。

HLSの動画フォーマットは、MPEG-2 TS(.ts)(映像コーディックH.264)、AAC(音声)を基本とする。これを配信するにあたっては、約10秒ごとの細切れのファイル(セグメントファイル)に分割し、これらのファイルのつなぎを表すプレイリストファイル(.m3u8)を準備する。クライアント側における動画の再生はこのプレイリストファイルに基づいて行う。

録画済みの動画ファイルの配信にあたっては、まずffmpegなどにより上記のTSに変換したのち、分割用のツール segmenter を用いて、細切れのtsファイルとプレイリストファイルを作成することができる。

この動画は、通常のHTTP用サーバーを通じて配信することができるが、動画の指定はHTML5の video タグを介して行うことができる。上述のサンプル動画の配信に際して用いたHTML文書を以下に示す:

<!DOCTYPE html>
<html lang="ja" >
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
    <title>Test for HTTP Live Streaming</title>
  </head>
  <body style="background-color:#FFFFFFF;">
     <P>HLS_Test: Video Bit Rate = 96k</p>
     <center>
        <video src="/HLS_Test/movie/avatar_96k.m3u8" controls autplay></video>
     </center>
  </body>
</html>

mimeファイル設定用ファイル(/etc/mime.types) 並びにHTTPサーバーの設定ファイル(/etc/httpd/conf/httpd.conf)に、夫々、以下を追加し、httpd をrestartしておく。

/etc/meme.types:

	application/x-mpegURL     m3u8
	video/MP2T     ts

/etc/httpd/conf/httpd.conf:

	AddType application/x-mpegURL .m3u8
	AddType video/MP2T .ts

今後の課題: 今回の動画配信実験では、録画済みの動画ファイルをクライアント側で再生する場合について試してみた。HTTP Live Streamingでは、ライブ映像の配信も可能となっているが、こうした映像配信は今後の課題としている。


Post a Comment