2014-10-12 51 views
0

我一直在試圖下載與python視頻文件,並在同一時間播放與VLC。下載視頻與python不玩,而加載

我試過幾種方法。其中之一是通過連續獲取並追加數據在單個線程中下載。這種風格很慢,但視頻播放。代碼如下所示

self.fp = open(dest, "w") 
    while not self.stop_down and _continue: with urllib2 request 
     try: 
      size = 1024 * 8 
      data = page.read(size) 
      bytld+= size 
      self.fp.write(data) 

此功能需要更長的時間才能下載,但我可以在加載時播放視頻。 但是我一直在努力,同時在多個零件下載..

有了適當的線程邏輯

req= urllib2.Request(self.url) 
    req.headers['Range'] = 'bytes=%s-%s' % (self.startPos, self.end) 
    response = urllib2.urlopen(req) 
    content = response.read() 
    if os.path.exists(self.dest) : 
     out_fd = open(self.dest, "r+b") 
    else : 
     out_fd = open(self.dest, "w+b") 
    out_fd.seek(self.startPos, 0) 
    out_fd.write(content) 
    out_fd.close() 

隨着我的線程,我確保該文件的每一部分都被保存在順序。 但由於某種原因,我無法在下載時播放此文件。

有什麼我不正確的做法嗎? 「範圍」是否應該以不同的方式修改?

回答

0

線程模式下每個數據塊的結果範圍必須爲+1 BYTE。所以如果第一個塊是1024,那麼下一個塊是從1023到其他的。