着うたフルのサンプル再生

着うたフルのサンプル再生を作っていて若干はまったので、備忘録的な感じで書きます。

簡単に言うと「試聴」機能です。
購入前に曲の一部を再生させて、購入するかどうか判断してもらうってやつ。
端末には保存できないし、保存ダイアログも無効になる感じのイメージ。

曲の一部を切り出すのは単純にWAVとかを編集して3gp作り直せばいいんだろうけど、今回はまったのは別で、端末に保存させない制御の部分。

DoCoMoの場合はファイル自体では制御できないようで、ダウンロードリンクのソースをいじることで実装するらしい。

DoCoMoの公開されている技術情報には「着うたフル」の情報は無いので、一番近そうな「iモーション」の情報を参照。

配信制御のページを見ると、再生回数制限は以下の様に書くと書いてあります。

<OBJECT declare id="sample" data="tyakuta.3gp" type="video/3gpp">
<PARAM name="count" value="3" valuetype="data">
</OBJECT>
<A href="#sample">着うた</A>

今回やりたいのは、保存不可でオーディオのデータなので、count を「0」にして type を「audio/3gpp」にしました。

で、動作を確認してみたところ...

ダウンロードは正常に出来ます。
それどころか普通に保存できる。

試しに、ブラウザを終了したりプレイヤーを終了してから、再度そのファイルを再生しようとしても普通に再生できる。

この状態では普通に保存されているような動きです。

おかしいと思い、他のページを見ていると以下の様な記述を発見。

"count"パラメータが0回に指定されている場合は保存不可のコンテンツとして扱われ、端末のキャッシュメモリ上にある限り再生は可能ですが、端末内に保存することはできません。

なんとなく、キャッシュが端末に残っているような動作だったので、端末を再起動してみると、ファイルは残ってますが見事に再生できなくなりました。


う~ん、ある意味で保存不可にはなっている感じではあるんですが、これって動作的に微妙ですよね。
普通、携帯電話って電源切ったり入れたり頻繁にしないですからね。

他のサイトでこんな動作してたっけ?って感じで、さらに調べてみました。

すると、着うたフルのMIME TYPEは「audio/3gpp」ではなく、「application/x-dcm-fullmusic」である事が判明。
確かに、着うたフルの仕様書にはそう書いてあるんですが、見落としてました。。。

で、試しにtypeを「application/x-dcm-fullmusic」に変更してみると見事に保存できなくなりました。
再生ボタンは有効だけど、保存ボタンは無効。

今回テストに使ったのは F の2端末なので、もしかするとメーカーによって実装が異なる可能性があるので何とも言えませんが、とりあえず着うたフルの MIME は「application/x-dcm-fullmusic」にしておかないと、意図したようなサンプル再生は出来ないようです。

と言う事で、上記の例で行くと正しいソースは以下の様な感じになります。

<OBJECT declare id="sample" data="tyakuta.3gp" type="application/x-dcm-fullmusic">
<PARAM name="count" value="0" valuetype="data">
</OBJECT>
<A href="#sample">着うた</A>

良く分からないですね、同じ 3gp なんですが、MIMEで動作が変わるんですね。。。
うーん、モバイルは難しいです。