2017-09-26 107 views
1

我正在使用flask服務器從FTP服務器提取數據併爲其提供服務(視頻)。 相機在向遠程FTP服務器發送新視頻時向服務器發送「確定」。 Flask服務器從FTP中獲取新視頻。 我需要的是當燒瓶運行get_video函數時,也刷新html的內容,以便用戶將看到新的視頻。在Flask服務器中自動重新加載FTP內容

請注意,相機和用戶是不同的客戶端,它們都連接到同一個Flask服務器。

from flask import Flask, Response, request, render_template, g, redirect 
import ftplib 
app = Flask(__name__) 

def get_video(): 
    session = ftplib.FTP("****", "*****", "****") 
    session.retrbinary("RETR try.mp4", open("static/sc.mp4", "wb+").write) 

@app.route('/') 
def hello(): 
    get_video() 
    return ''' 
    <!doctype html> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <title>Files</title> 
    <h1>VIDEO</h1> 
    <video width="320" height="240" id="VideoWindow" controls> 
     <source src="static/sc.mp4" type="video/mp4"> 
     Your browser does not support the video tag. 
    </video> 
    </form> 
    <form action="/shoot_request"> 
    <input type="submit" name="shoot" value="GetNew"/> 
    </form> 
    <script type='text/javascript'> 
    $(document).ready(function() { 
    setInterval(function() { 
     $('#VideoWindow').load(window.location.href + '#VideoWindow'); 
    }, 5000); 
    }); 
    </script> 
    ''' 
@app.after_request # This did not work 
    def add_header(response): 
     response.cache_control.max_age = 10 
    return response 

回答

0

我創建了一個標誌文件。相機和html腳本定期向服務器請求文件的值。如果這是一個特殊值的攝像頭開始記錄並通過FTP發送,則服務器將標誌的值更改爲另一個值。如果html腳本獲取該值,它將自身重新加載並將服務器更改標記的值重置爲默認值。

我也加入隨機時間戳視頻鏈接 的結尾,例如:

"<video src="dynamic/sc.mp4?t=%d" type="video/mp4" controls> </video>" % random_value 

因爲瀏覽器沒有要重新加載視頻,因爲它的路徑沒有改變。

無論如何,如果有人需要這樣的東西,可以使用這種方法。不是100%的效率,但它的工作原理。

問候

SUAT

相關問題