2016-03-06 64 views
0

我很確定,我不完全理解這裏的播放機制,但我試圖通過從Pyramid框架的GridFS流數據來顯示視頻內容,使用Pyramid框架進行存儲Mongoengine。不幸的是,我的頁面找不到內容。從Gridfs使用Python金字塔和Mongoengine流視頻

的Jinja2:

<div align="center" class="embed-responsive embed-responsive-16by9"> 
    <video class="embed-responsive-item" controls> 
    {% if board.video %}      
     <source src="{{ request.route_url('boards_video', name=board.name, videoname=board.video.filename) }}" type="video/*"> 
     Your browser does not support the video tag. And that makes me sad. 
    {% else %} 
     <source src="#" type="video/*"> 
    {% endif %} 
    </video> 
</div>    

查看代碼:

@view_config(route_name="boards_video") 
    def boards_video(request):    
    from .models import Board 
    name = request.matchdict["name"] 
    board = Board.objects("name"=name).first().get() 
    response = Response(content_type=board.video.content_type) 
    response.content_length = board.video.get().length 
    response.app_iter = FileIter(board.video) 
    return response 

路線:

config.add_route("boards_video", "/boards/{name}/videos/{videoname}") 

型號:

class Board(document.Document): 
    name = fields.StringField(required=True) 
    video = fields.FileField() 

檢查jinja2生成的源時生成的URL,但生成的頁面視頻內容顯示「未找到支持格式和MIME類型的視頻」。完成此操作的正確方法是什麼?

+0

那麼它肯定是與HTML標記,我認爲。提供給來自視頻標記的_src_屬性的網址是有效的,並以全屏播放視頻。我不確定除了使用URL之外的區別是什麼,肯定是一個請求,它會調用視圖。我原以爲在src屬性中使用URL本質上也是一個請求,但也許情況並非如此。 –

回答

0

就像我說的,這歸結爲我對缺乏對機制的理解。問題確實是HTML。

在type屬性中使用星號是無效值。相反,線應該是這樣的:

<source src="{{ request.route_url('boards_video', name=board.name, videoname=board.video.filename) }}" type="video/mp4"> 

我的具體使用情況正在嘗試播放的MP4,所以我必須要明確。看來,瀏覽器(在我最初的測試案例,火狐)是能夠通過僅僅完全移除類型屬性來確定的值:

<source src="{{ request.route_url('boards_video', name=board.name, videoname=board.video.filename) }}"> 

我想這總是最好是明確的,以保證誤差最小化。

欲瞭解更多信息:

http://www.w3schools.com/html/html5_video.asp