如何压缩保存在hdf5中的数据?

时间:2017-09-18 11:59:04

标签: python python-2.7 hdf5 h5py

我使用python 2.7来读取视频并存储在hdf5中。这是我的代码

import h5py
import skvideo.datasets
import skvideo.io
videodata = skvideo.io.vread('./v_ApplyEyeMakeup_g01_c01.avi')
with h5py.File('./video.hdf5','w') as f:
    f['data'] = videodata
    f['label'] = 1

问题是输出hdf5太大了。它比原始的avi文件大128倍。我该怎么做才能压缩/缩小尺寸?您可以在https://drive.google.com/open?id=0B1MrjZsURl2yNFM0ZTJfZ3pOZVU

下载该文件

我认为我们可以使用

压缩它
f.create_dataset('data',data=videodata,compression='gzip',compression_opts=9)
f.create_dataset('label', data=1)

现在,它仍然比原始文件大37倍。提前致谢。

2 个答案:

答案 0 :(得分:1)

通过添加分块,我能够将输出设为7.2M,相比之下,输出为10M。所以它肯定有所改进,但仍远离专用视频格式。您可以使用https://support.hdfgroup.org/services/filters.html中的其他过滤器,但我怀疑它们会将压缩程度提高一个数量级。因此,如果您想继续使用h5py,则可能需要接受更大的文件大小。如果这是不可接受的,只需尝试其他文件格式。

Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
Integrated Security=no;

答案 1 :(得分:0)

您的问题应该使用适合您的视频文件的编码来解决。根据您的业务,有各种编码算法,例如x265将压缩视频但需要高资源才能做到这一点。看看here

最近我听说过另一个有趣的编码,它对于称为Daala的在线流媒体有用,你可以获得更多信息here

一般来说,这取决于您对编码的期望,但选择一个好的编码器是您应该去的方式,尝试搜索。