我正在尝试使用h5py将mp4视频的帧存储到hdf5中。起初我试图不压缩数据。当存储在hdf5中时,这导致5000 MB视频大约为500 GB。我正在尝试使用gzip压缩来使数据集更易于管理,但使用压缩需要大约一分钟来存储视频的单帧。这是一个最小的代码示例
import h5py
hdf5 = h5py.File(file, mode='a')
dset = hdf5.create_dataset(dset_name, shape=(70000, 1080, 1920, 3),
dtype=np.uint8, chunks=True, compression='gzip')
for i, frame in enumerate(video_stream):
dset[i] = frame
每个视频都有大约70e3的1080p rbg图像。 video_stream是一个在迭代时返回(1080,1920,3)数组的对象。如果您认为这很重要,可以查看它here。那么如何以合理的速度将这些数据存储到hdf5中并以合理的文件大小结束呢?是否有可能接近mp4压缩?
答案 0 :(得分:2)
MP4是一种非常先进的标准,专门用于存储视频,通常具有硬件加速功能。当它设法在仅50亿字节中打包超过4000亿个值时,您会看到它的效率。
HDF5不是视频标准,GZip也不适合视频。 Python可能并不重要,因为无论如何gzip压缩可能都在C中,但应该注意代码是单线程的。总而言之,您不会接近MP4。
说实话,你为什么要尝试?我怀疑你还没有与视频数据有很多关联。