0

我想读取 HEVC 压缩视频并提取压缩(编码)视频文件中的帧,以从帧中提取一些信息,如运动矢量等。

谁能帮助我如何读取压缩的 HEVC 视频文件,以及如何在 Windows 操作系统中使用 matlab 提取帧。

matlab 中的 VideoReader 最多可以读取 H.264 编码的视频,但不能读取 H.265/HEVC 编码的视频。

我从http://www.elecard.com/en/download/videos.html下载了一些 HEVC 压缩视频,并从这个网站下载了编解码器工具包,我可以播放这些视频。

4

2 回答 2

1

MATLAB 中没有 HEVC/H.265 编解码器的官方版本,因为 HEVC 不是免版税软件,这也是科技巨头制作替代视频编码而无需任何许可费的原因。因此,HEVC 目前主要用于当今的科学文献中。但是,您可以使用此链接中提供的 HM 参考软件在 HEVC 中编码/解码 YUV 格式的视频数据。要进行编码,您需要在 Windows 计算机上安装 Visual Studio。首先,打开命令提示符并输入:

msbuild /p:Configuration=Release HM_vc2015.sln

构建项目后,您可以在 /bin 文件夹中找到一些文件。然后,您应该使用 cd 命令将当前目录更改为 /bin 文件夹并键入:

TAppEncoderStatic.exe -c your_config_file.cfg -i your_video_data.yuv

因此,str.bin 文件将在 /bin 文件夹中创建,可以使用 your_config_file.cfg 或命令行选项重命名,这在软件手册中有详细说明。此外,您可以在 /cfg 文件夹中找到好的配置文件。要解码 str.bin,只需键入:

TAppDecoderStatic.exe -b str.bin -o dec.yuv

注意dec.yuv是解码器中解码后的输出视频数据。此外,您可以使用YUV 查看器查看解码后的原始视频序列。此外,您可以在这里找到一个很好的数据集。

于 2020-07-01T15:12:47.067 回答
0

AFAIK 没有可以直接从 MATLAB 读取 HEVC 数据流的公共代码或库。

当遇到同样的问题时,我修改了参考 HEVC 解码器,在解码 HEVC 视频时编写了一个单独的 CSV 文件。然后 MATLAB 可以读取 CSV 文件。

我从GitlHEVCAnalyzer借用了这种方法。请参阅TSysuAnalyzerOutput.cpp,作者在 HEVC 解码期间编写了许多不同的文本文件。然后分析器读取文本文件。

于 2014-12-31T15:25:55.710 回答