2017-02-26 40 views
0

我想下載我在本地主機上的視頻的後半部分,我編寫了一些python代碼以便從一半開始下載文件(通過http的Range頭)使用http的Range頭部下載視頻的第二部分

但是當我打開文件,VLC,什麼都不會發生(所以它不工作)

我如何可以下載MP4文件的一部分,仍然能看嗎?

import urllib2 

file_url = 'http://127.0.0.1:8080/vid.mp4' 

result = urllib2.urlopen(file_url) 
cont_len = result.headers['content-length'] 
req = urllib2.Request(file_url) 
req.headers['Range'] = 'bytes=%s-%s' % (str(int(int(cont_len)/2)), str(int(cont_len))) 

f = urllib2.urlopen(req) 
File = open('2ndhalf.mp4', 'w') 
File.write(f.read()) 

編輯:我的意思是下載視頻的視頻更快的一部分,而不是下載整個視頻,然後削減它

+0

@falsetru有無論如何我可以爲mp4文件製作標題? –

回答

1

你需要下載完整的moov。從那裏你可以得到中間幀的偏移量,然後你可以下載該幀結束(假設幀的順序可能,但不是mp4所要求的)。接下來只使用您想保留的條目重寫moov,並確保調整所有偏移以匹配新的塊偏移。

+0

我編輯了我的問題,我的意圖是不下載完整的vid,我正在做的一部分是儘可能快地保持內容 –

+0

這不會改變答案。如果沒有'moov','mdat'是沒用的。 – szatmary

+0

開始從頭開始下載,同時尋找'moov'。如果它不在那裏,你可以通過取消http請求並重新創建一個框來跳過框。它不可能在沒有提出多個請求的情況下做你正在詢問的內容,在文件中查找。 – szatmary