我想下载一个视频文件从互联网使用请求库和保存之前,对视频的元数据。
import requests
url = 'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_5mb.mp4'
r = requests.get(url, stream=True)
with open('video.mp4', 'wb') as file:
file.write(r.content)我只想在保存文件之前将元数据更改为视频。
发布于 2020-03-25 03:37:40
我觉得这不可能。我的方法是先下载视频,然后考虑使用像tagpy或mutagen这样的库。
我推荐mutagen,因为我发现它有一个很好的文档
参见此处关于安装步骤的mutagen
使用mutagen的示例代码
>>> import mutagen
>>> mutagen.File("11. The Way It Is.ogg")
{'album': [u'Always Outnumbered, Never Outgunned'],
'title': [u'The Way It Is'], 'artist': [u'The Prodigy'],
'tracktotal': [u'12'], 'albumartist': [u'The Prodigy'],'date': [u'2004'],
'tracknumber': [u'11'],
>>> _.info.pprint()
u'Ogg Vorbis, 346.43 seconds, 499821 bps'
>>>然后,要更改标题,只需访问字典键并更改它的值。
from mutagen.flac import FLAC
audio = FLAC("example.flac")
audio["title"] = u"An example"
audio.pprint()
audio.save()发布于 2021-06-16 15:56:37
为了建立AzyCrw4282 4282的答案,在保存文件之前,可以使用诱变剂来完成您想要的操作。
mutagen.File()的API文档声明它正在寻找一个filething,它是一个“文件名或类似文件的对象”。这意味着您可以将其缓冲到内存中的位置,使用诱变剂修改元数据,然后将其保存到磁盘中。请注意,整个二进制响应将在内存中,这可能会导致问题取决于您的可用系统资源。
from io import BytesIO
import requests
import mutagen
with requests.get(url, stream=True) as r:
r.raise_for_status()
buf = BytesIO()
for chunk in r.iter_content(chunk_size=8192):
if chunk:
buf.write(chunk)
buf.seek(0)
video = mutagen.File(buf)
# ... do your modifications
with open('/your/file/path.mp4', 'wb') as f:
f.write(buf.getbuffer())https://stackoverflow.com/questions/60842606
复制相似问题