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:
コメント:
最近の記事
世界で悩んでるのか?
09/06 22:03
YahooがGoog…
07/27 19:35
iPhone4来まし…
07/12 01:01
m4vが再生できない…
07/05 16:42
HTTP Live …
06/30 15:46
カメラロールから写真…
06/29 20:50
iPhone4予約し…
06/25 20:01
最近のコメント
なべ さま大…
もりぞー 05/19 09:27
もりぞーさん、ご無沙…
なべ 05/17 19:54
そもそもそんなに大量…
dou 02/24 20:12
これを皮切りに是…
もりぞー 12/17 09:54
産経新聞×iPhon…
河合です 12/16 12:07
いいこといいますね!…
富士山 11/02 19:34
すみません、、おもわ…
河合 08/13 12:36
始めまして、もりぞー…
もりぞー 07/30 12:15
はじめまして。い…
かわい 07/30 12:02
PHPをIIS上で動…
はかまー 06/01 21:08
最近のトラックバック
Yahoo!ボットチェッカー
Googleボットチェッカー
MSNボットチェッカー

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