我正在寻找一个与Python 3.7兼容的简单库,该库可以提取视频文件的元数据,尤其是捕获/记录日期时间;拍摄视频的日期和时间。我主要希望在.mov文件上执行此操作。据我所知,hachoir-metadata
没有Python库; enzyme
仅适用于.mkv文件,尽管在说明中没有明确说明。我想以字符串形式检索记录/捕获数据时间的原因是我想将其放入文件名中。
在将此问题标记为重复之前:类似的问题未回答或已过时。坦白地说,为什么在Python脚本中没有正确的方法来检索视频元数据,我感到困惑。
答案 0 :(得分:3)
FFMPEG是适合此的库。
安装:pip3安装ffmpeg-python
使用方法:
import ffmpeg
vid = ffmpeg.probe(your_video_address)
print(vid['streams'])
答案 1 :(得分:0)
我还没有找到一个不错的Python库,但是将hachoir
与subprocess
一起使用是一种肮脏的解决方法。您可以从pip上获取库本身,有关Python 3的说明在这里:https://hachoir.readthedocs.io/en/latest/install.html
def get_media_properties(filename):
result = subprocess.Popen(['hachoir-metadata', filename, '--raw', '--level=3'],
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
results = result.stdout.read().decode('utf-8').split('\r\n')
properties = {}
for item in results:
if item.startswith('- duration: '):
duration = item.lstrip('- duration: ')
if '.' in duration:
t = datetime.datetime.strptime(item.lstrip('- duration: '), '%H:%M:%S.%f')
else:
t = datetime.datetime.strptime(item.lstrip('- duration: '), '%H:%M:%S')
seconds = (t.microsecond / 1e6) + t.second + (t.minute * 60) + (t.hour * 3600)
properties['duration'] = round(seconds)
if item.startswith('- width: '):
properties['width'] = int(item.lstrip('- width: '))
if item.startswith('- height: '):
properties['height'] = int(item.lstrip('- height: '))
return properties
hachoir
也支持其他属性,但我只在寻找这三个属性。对于我测试过的mov
文件,它似乎还会打印出创建日期和修改日期。我使用的优先级为3,因此您可以尝试使用它来查看更多内容。