HTTP Live Streaming(Encrypt)

HTTP Live Streaming(encrypt)のやり方を以下にメモしときます。

・用意したもの
 ■Linuxマシン(x86)Cent4.5
 もりぞー実験マシン1号機なので色々ミドル入ってるけど
 何入れたか記憶にないので足りなかったら自分で入れてくれ。

 ■iPhone3G
 お金がないから3Gです。4G予約したのにまだこないです。

・資料
 ■AppleLiveStreamingOverview
 ■HTTP Live Streaming(draft-pantos-http-live-streaming-01)
 ■How to create On-Demand HTTP Stream for iPhone

・手順(適当なので適当にやろう)
 まずffmpegがいるそうなのでlinuxにぶち込む。
 mp3が使えるようにlame入れる。
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz/download
tar zxf lame-3.98.4.tar.gz
cd lame-3.98.4
configure
make
install

x264を入れようとしたらyasmがないと怒られる。
 yasmを入れる。yumで入れようとしたらそんなものはないと言われた。何故!?
 
wget 'http://www.tortall.net/projects/yasm/releases/yasm-0.6.2.tar.gz'
tar zxf yasm-0.6.2.tar.gz
cd yasm-0.6.2
LDFLAGS="-L/usr/local/lib64 -L/usr/lib64 -L/lib64" ./configure --prefix=/usr/local/stow/yasm-0.6.2 --libdir=/usr/local/stow/yasm-0.6.2/lib64
make
make install

再度x264トライするがyasmがないと怒られる。
 ( ̄д ̄)
 which yasm ない!
/usr/local/stow/yasm-0.6.2/bin/yasm を /usr/bin /usr/local/bin あたりに
 シンボリックしてみる。
 あ、configure通った。
wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20100621-2245.tar.bz2
tar xjvf x264-snapshot-20100621-2245.tar.bz2
cd x264-snapshot-20100621-2245
./configure --disable-asm
make
make install

ffmpegインスコ。
tar zxf ffmpeg-0.5.2.tar.gz
cd ffmpeg-0.5.2
./configure --prefix=/usr/local --enable-libmp3lame --enable-encoder=swf --enable-shared --disable-demuxer=v4l --disable-demuxer=v4l2 --enable-libx264 --enable-gpl
make
install

vi /etc/ld.so.conf.d/ffmpeg.conf
~~
/etc/ld.so.conf.d
~~
ldconfig

iPhone用の動画ffmpegでtsファイルへ変換
ffmpeg -i testdouga.mp4 -re -f mpegts -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -s 320X180 -vcodec libx264 -b 300k -flags +loop -cmp +chroma -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 300k -maxrate 500k -bufsize 500k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -g 30 -async 2 movie-ts0000.ts

Segmenter というソフトを入れる。
http://svn.assembla.com/svn/legend/segmenter/
 ソースしかないので自分でコンパイル。
 
 Segmenter で分解。
segmenter [input MPEG-TS file] [segment duration in seconds] [output MPEG-TS file prefix] [output m3u8 index file] [http prefix]
Ex:./segmenter movie-ts0000.ts 9 test test.m3u8 http://www.dimage.co.jp/ipon/

 この時点で
 test.m3u8
 movie-ts0000.ts
 movie-ts0001.ts
 movie-ts0002.ts
  ・・・・
 ができる。

 Apache設定
  Apacheのmime.types に追加
   application/x-mpegURL m3u8
   video/MP2T ts
  confに追加
   AddType application/x-mpegURL .m3u8
   AddType video/MP2T .ts
test.m3u8で指定されたurlへ適切にアップすれば非暗号化された
 HTTP Streamingができてる。はず。いやできた。

 んで暗号化してみる。
 まずキー作成する。以下key.txtというキーファイルを作るシェル。
#/bin/sh
keyFile="key.txt"
openssl rand 16 > $keyFile

 movieを暗号化するシェル。
#/bin/sh
hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')
hexIV='0'
openssl aes-128-cbc -e -in $1 -out $2 -p -nosalt -iv ${hexIV} -K ${hexKey}

test.m3u8にキーのURLを埋め込む。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-KEY:METHOD=AES-128,URI="https://www.dimage.co.jp/iphどっか/key.txt"

#EXTINF:10,
http://www.dimage.co.jp/iphoなんか
~~省略
#EXT-X-ENDLIST

 
 でiPhoneで再生する。で暗号化された状態で再生される。(されてると思う)
 10秒分割だとうまくいくんだが9秒分割だと調子悪い。
 謎。まぁフリーでやるにも色々限界が(言い訳)ということにしておこう。

 一応iOS3、4で再生できますた。

 DRM?的な使い方できるのかしらねぇ・・・。
 ある会社はやってるみたいですが。

 (行間多い説明ですがそこは気合で)
もりぞー 15:46 | コメント(0) | トラックバック(0) | iPhone
トラックバック

こちらの記事へのトラックバックは下のURLをコピーして行ってください。

コメント
この記事へのコメントはありません。
名前:
メールアドレス:
URL:
コメント:
最近の記事
Admageという名…
02/13 14:36
(続)2月から広告が…
02/13 12:15
(続)2月から広告が…
02/10 17:29
2月から広告が表示さ…
02/07 18:46
(続)Cent5.x…
01/31 14:59
(続)Cent5.x…
01/29 18:01
Cent5.xでGl…
01/29 17:19
勉強会
08/13 18:44
Class A
07/29 20:50
8.8.8.8
06/25 15:19
マイナーな技術
06/25 14:36
工数見積
06/20 14:06
次世代機のCPU
06/19 13:04
Surface Pr…
06/17 09:44
Nexus10(続き…
06/17 09:33
最近のコメント
最近のトラックバック
Yahoo!ボットチェッカー
Googleボットチェッカー
MSNボットチェッカー

ディマージシェア技術ブログ