[PHP] mp3の再生ログを取得したい時についての考察

2020年4月20日

テクノロジー

日本よりもアメリカの方が、ずっとラジオ文化が根付いていることに気がついた、ユゲタです。 「mp3」とかけまして、 「ジョギング用シューズ」と、ときます。 そのココロは・・・ 通常よりも軽いサイズが魅力です。

mp3をwebページで公開する時のお作法

自前でやっているPODCASTが、週イチの更新頻度でようやく10回を超えました。 ナンチャッテ・ラジオ「聞くだけでプログラムが学べるラジオ」 GoogleAnalyticsは入れていますが、実際にPODCASTでラジオを聞いてもらっても、GAではカウントされません・・・ てことを、当たり前の事なのに、今頃気が付きました。 そして、PODCASTでなくて、WEBサイトでも聞けるのに、誰が何回聞いてくれたかを知る術がありませんでした。 PODCASTも、同じサイトのmp3にアクセスしてきているので、このアクセスに対してログを取得できれば、mp3の再生(ダウンロード)数を計測することができると考えました。 フリー音楽配布サイトなどでは、mp3ファイルをそのままブラウザで表示させているサイトなどありますが、やはりここはロギングシステムにつなげるようにしたいので、直リンクではなく、プログラムリンクで対応したいと考えました。 要するに、phpファイルにアクセスして、そこでヘッダをコントロールして再生できるデータを出力できればいいんですね。

ダウンロード方法色々

実際に、簡易に行うには下記のようにするだけです。 <?php header('Content-Type: audio/mp3'); echo file_get_contents(%mp3のファイルパス); ブラウザでこのphpファイルにアクセスすると、mp3データが再生されますが、リアルタイム再生ではないけど、再生巻き戻しや、ダウンロード機能ができないため、少し使いづらいと判断しました。 header('Content-Description: File Transfer'); header('Content-Type: audio/mp3'); header('X-Content-Type-Options: nosniff'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Expires: Tue, 1 Jan 2019 00:00:00 GMT'); header('Last-Modified:' . gmdate( 'D, d M Y H:i:s' ) . 'GMT'); header('Cache-Control:no-cache,no-store,must-revalidate,max-age=0'); header('Cache-Control:pre-check=0,post-check=0',false); header('Pragma: no-cache'); header('Content-Length: ' . filesize(%MP3ファイルパス)); while (ob_get_level()) { ob_end_clean(); } readfile(%MP3ファイルパス); ヘッダを整えてやると、ダウンロード機能が復活しました。 でも、巻き戻して再生したり、先送りをすることができません。

ストリーミングのやり方がわからん・・・

しかし、ここから先に進むことができず、とりあえず、ダウンロードできれば、なんとかなるだろうと思って、今の時点ではここで止めていますが、 ヘッダに、ブラウザキャッシュを防止したり、ストリーミングにするという機能もあることを知り、非常に勉強になった作業でした。 もっと便利な書き方が必ずあるはず!!!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。