因为我没有你的bytes
缓冲区,我刚刚创建了一个 MKV 视频文件ffmpeg
像这样:
ffmpeg -i SomeVideo.avi -f matroska -vcodec libx264 video.mkv
然后我安装了imageio
with:
pip install imageio
然后我将整个 MKV 视频加载到内存中,这样我就有了一些看起来与bytes
您收到的对象存储在我的变量中content
:
import imageio
# Get bytes of MKV video
with open('video.mkv', 'rb') as file:
content = file.read()
现在我应该已经和你一样了。仅供参考,前几个字节content
看起来像这样:
b'\x1aE\xdf\xa3\x01\x00\x00\x00\x00\x00\x00#B\x86\x81\x01B\xf7\x81\x01'
那么,让我们继续吧。
# Wrap the content in a BytesIO and get an ffmpeg reader to read it
vid = imageio.get_reader(BytesIO(content), 'ffmpeg')
我现在可以像这样打印每帧的平均值:
for num, image in enumerate(vid.iter_data()):
print(image.mean())
或者获取元数据并像这样打印:
metadata = vid.get_meta_data()
print(metadata)
{'plugin': 'ffmpeg',
'nframes': 750,
'ffmpeg_version': '4.1 built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)',
'fps': 25.0,
'source_size': (1280, 720),
'size': (1280, 720),
'duration': 30.0}
Keywords:Python、视频、帧、单帧、FFmpeg、imageio、单帧、BytesIO、字节、MKV、Matroska。