我想下载本地主机上视频的后半部分,我编写了一些 python 代码来下载从后半部分到结尾的文件(通过 http 的 Range header )
但是当我用 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())
编辑:我的目的是更快地下载视频的一部分,而不是下载整个视频然后剪切
最佳答案
您需要下载完整的moov
。从那里您可以获得中间帧的偏移量,然后您可以下载该帧以结束(假设帧按顺序排列,可能,但 mp4 不需要)。接下来仅使用您希望保留的条目重写 moov
,并确保所有偏移量都已调整以匹配新的 block 偏移量。
关于python - 使用 http 的 Range header 下载视频的后半部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470133/