Python Urllib下载视频,但无法播放



我正在尝试使用Python的urllib包从s URL下载视频。我的Python版本是3.6。

这是我尝试过的:从 views.py:

def post(self, request, *args, **kwargs):
serializer = VideoConverterSerializer(data=self.request.data)
validation = serializer.is_valid()
print(serializer.errors)
if validation is True:
url = request.POST.get('video_url')
try:
r = urllib.request.urlopen(url)
with open('my_video.mp4', 'wb') as f:
f.write(r.read())
rea_response = HttpResponse('my_video.mp4', content_type='video/mp4')
rea_response['Content-Disposition'] = 'attachment; filename=my_video.mp4'
return rea_response
except TimeoutError:
return HttpResponse(TimeoutError)
else:
return HttpResponse('Not a valid request')

这是我正在尝试使用的示例 URL:

https://expirebox.com/files/386713962c5f8b7556bc77c4a6c2a576.mp4

上面的代码将视频文件下载为my_video.mp4但视频无法播放。视频的实际大小~5.9 MB但下载视频的大小仅11 KB,因此下载的视频肯定有问题。

这里可能出了什么问题?

请帮帮我!

提前感谢!

你实际上并没有在响应中包含视频文件;你只需创建一个带有文字文本"my_video.mp4"的HttpResponse。

与其读入文件,然后尝试在响应中传递该文件,不如使用内存缓冲区:

from io import BytesIO
...
r = urllib.request.urlopen(url)
data = BytesIO(r.read())
rea_response = HttpResponse(data, content_type='video/mp4')

但是,您应该注意,您的 URL 似乎指向 HTML 页面,而不是视频文件。

最新更新