python - 使用 http 的 Range header 下载视频的后半部分

标签 python video download mp4

我想下载本地主机上视频的后半部分,我编写了一些 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/

相关文章:

php - 是否有任何现有服务可通过浏览器上传巨大的视频文件 (~5gb)?

C++ QtNetworkRequest 下载图像但得到 HTML

r - Shiny R,使用 downloadButton 功能

python - 查找所有包含字符串的列名并转换列的内容

python - 将上下文管理器与协程一起使用

python - 交换 CSV 文件中的列

python - Opencv网络摄像头脚本不断地打开和关闭网络摄像头

python - 如何从两个字典的列表中收集具有相同键的值

video - 调整 FFmpeg H.264 解码器

c# - ASP.NET MVC 下载图像而不是在浏览器中显示