很简单
想把一些mp3文件放到gae上,不过不想被下载,虽然不是什么歌之类的
于是选了个html5的播放器
jplayer
demo代码 <!DOCTYPE html>
<html lang="en"> <head> <!-- Example code to create a simple player using jPlayer 2.1.0 --> <!-- Skins are defined in CSS. Uncomment the following CSS reference and comment out the one below it to switch skins --> <!--<link href="http://jplayer.org/latest/skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />--> <link href="http://jplayer.org/latest/skin/pink.flag/jplayer.pink.flag.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript" src="http://jplayer.org/2.1.0/js/jquery.jplayer.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#jquery_jplayer_1").jPlayer({ ready: function(event) { $(this).jPlayer("setMedia", { <!--mp3: "12.mp3" --> mp3: "http://www.jplayer.org/audio/mp3/TSP-01-Cro_magnon_man.mp3" }); }, swfPath: "http://www.jplayer.org/2.1.0/js", supplied: "mp3" }); }); </script> </head> <body> <div id="jquery_jplayer_1" class="jp-jplayer"></div> <div id="jp_container_1" class="jp-audio"> <div class="jp-type-single"> <div class="jp-gui jp-interface"> <ul class="jp-controls"> <!-- comment out any of the following <li>s to remove these buttons --> <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li> <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li> <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li> <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li> <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li> <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li> </ul> <!-- you can comment out any of the following <div>s too --> <div class="jp-progress"> <div class="jp-seek-bar"> <div class="jp-play-bar"></div> </div> </div> <div class="jp-volume-bar"> <div class="jp-volume-bar-value"></div> </div> <div class="jp-current-time"></div> <div class="jp-duration"></div> </div> <div class="jp-title"> <ul> <li>Cro Magnon Man</li> </ul> </div> <div class="jp-no-solution"> <span>Update Required</span> To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>. </div> </div> </div> </body>
结果,无论是上述例子中用demo的mp3url,还是用本地的mp3文件,都表现正常
一旦用gae
就会报上篇文章的错误,chrome的快进功能失效,ff和maxthon3正常(废话,他们是同一个核心)
当然 yaml文件里要做类似如下修改
- url: /audio/(.*\.(mid|midi|mp3|wav))
static_files: audio/\1
upload: audio/(.*\.(mid|midi|mp3|wav))
到此为止,我已经失败了,因为即使我把mp3的地址暴露出来都不行的话,还继续研究个啥呢
不过还是坚持了一小把,算是为将来留个念头
思路
在test.html中的mp3地址设置中
设置为如下形式
mp3: "12.mp3"
当进入html的时候,js会去请求127.0.0.1:8085/12.mp3的url
在code.py中设置
'/(.*\.mp3)' , 'audio',
在audipclass中设置
def GET(self,name): client = '' client = web.ctx.env.get('HTTP_REFERER') if (not client == None ) and client.endswith('test'): newurl = 'http://127.0.0.1:8085/audio/' + name logging.info("newurl ::::::" + newurl) raise web.redirect(newurl) else : return 'stop download '
当然,在yaml中,要把audio的文件夹设为static
换句话说,这个过程是
表面上test.html发出的请求是127.0.0.1:8085/1.mp3
接受这个请求的是audioc这个class,如果HTTP_REFERER的结尾时test,
则redirect到127.0.0.1:8085/audio/1.mp3上
否则,返回字符 'stop download '
这个过程倒是用chrome验证成功了,除了不能快进快退
但是ff和maxthon却失败了,用firebug查看的结果,发出127.0.0.1:8085/1.mp3后没有得到相应
哎,莫非ff只能一次性响应不成?
算了,这个周末到此为止
下一步,换个html5播放器试试。
》》》第二天,成功了,见下一篇,虽然不完美