長いタイトルを付けてしまったが、つまりはそういうことである。ここはできなかったことばかりをつづるコーナーになってしまいそうだが、現在はまっているのである。
無料試聴サイトを作る依頼があって、3キャリア対応しなければならないのだが、docomoとauは規格がちゃんとしていて、制限をかけるのはとても簡単なのだ。なので速攻でクリア。問題はsoftbank。まったく、どうしたものか。
- Content-type: audio/3gppを出力すると、レスポンスが不正です(WJ46098E)のエラー
- Content-type: video/3gppを出力すると、DLはできるが、再生ができない。保存しても非サポートファイルと判定されて、再生できない。
いろいろみて回って、softbankの技術資料もあたって、x-jphone-copyright: no-storeまたはCache-Control: no-storeを出力すれば、DLと再生のみができて、保存ができないようにできるはずなのだが、もう試行錯誤するのに疲れてしまった。
昨日、foward lockという方式があるというのを見つけて、先ほどやってみた。
#!/usr/bin/perl use strict; { my $id = "111111"; open(my $fh, "<", "./3gp/softbank/$id.3gp") or die "3gpファイルが開けませんでした。: $!"; my $stream = join("", <$fh>); my $fsize = length($stream); close($fh); $stream = "--boundary-1\r\n" . "Content-Type: audio/3gpp\r\n" . qq|Cache-Control: no-store\r\n| . qq|x-jphone-copyright: "no-store, no-transfer, no-peripheral"\r\n| . "Content-Transfer-Encoding: binary\r\n" . "\r\n" . $stream . "\r\n" . "--boundary-1--\r\n"; print "Content-Type: application/vnd.oma.drm.message; boundary=boundary-1\r\n"; print "Content-Length: ", length($stream), "\r\n"; print "\r\n"; print $stream; exit; }
というようなものである。これなら、audio/3gppを指定してもWJ46098Eは出ず、しかも再生できた。もう、再生できただけでうれしいというレベルになってしまった。しかし、この方法では、不可なのは転送のみで、ダウンロードができてしまう。
勝手サイトで実際にダウンロードができないサイトがあるので、なにか方法があるのだと思うが、携帯はソースが見えないし、そのサイトはPCからの接続ができないので、どんなヘッダを吐いているかわからない。それさえ見れば一発なのに、惜しい。