Main Content

支持的视频和音频文件格式

MATLAB® 中的视频和音频文件及其支持的文件格式和编解码器。

MATLAB 中的视频数据

什么是视频文件?

对于视频数据而言,“文件格式”通常指的是容器格式编解码器。容器格式描述文件的布局,而编解码器则描述如何对视频数据进行编码/解码。许多容器格式可以容纳使用不同编解码器编码的数据。

要读取视频文件,任何应用程序都必须:

  • 能够识别容器格式(例如 AVI)。

  • 可以访问能够对文件中所存储的视频数据进行解码的编解码器。标准 Windows®Macintosh 系统安装中包含了一些编解码器,您可以播放 Windows Media® Player 或 QuickTime® 格式的视频。在 MATLAB 中,VideoReader 可访问其中大多数(但不是全部)编解码器。

  • 正确使用编解码器对文件中的视频数据进行解码。VideoReader 不一定始终能读取与原始系统安装中未包含的编解码器相关联的文件。

VideoReader 支持的格式

在 MATLAB 中使用 VideoReader 读取视频文件。VideoReader 支持的文件格式视平台而异,对文件扩展名没有任何限制。

平台

文件格式

所有平台

AVI,包括未压缩、索引、灰度和 Motion JPEG 编码的视频 (.avi)
Motion JPEG 2000 (.mj2)

所有 Windows

MPEG-1 (.mpg)
Windows Media 视频(.wmv.asf
Microsoft® DirectShow® 支持的任何格式

Windows 7 或更高版本

MPEG-4,包括 H.264 编码视频(.mp4.m4v
Apple QuickTime 影片 (.mov)
Microsoft Media Foundation 支持的任何格式

Macintosh

QuickTime Player 支持的大多数格式,包括:
MPEG-1 (.mpg)
MPEG-4,包括 H.264 编码视频(.mp4.m4v
Apple QuickTime 影片 (.mov)
3GPP
3GPP2
AVCHD
DV

注意:对于 OS X Yosemite(10.10 版)和更高版本来说,使用 VideoWriter 编写的 MPEG-4/H.264 文件能正常播放,但显示的帧速率不精确。

Linux®

GStreamer 1.0 或更高版本的已安装插件支持的任何格式,如 https://gstreamer.freedesktop.org/documentation/plugins_doc.html 中所列,包括 Ogg Theora (.ogg)。

查看视频文件所关联的编解码器

此示例说明如何使用 mmfileinfo 函数查看视频文件所关联的编解码器。

将有关样本视频文件 shuttle.avi 的信息存储在一个名为 info 的结构体数组中。info 结构体包含以下字段:FilenamePathDurationAudioVideo

info = mmfileinfo('shuttle.avi');

通过在命令行窗口中显示 info 结构体的字段来显示属性。例如,要查看 Video 字段下的信息,请键入 info.Video

info.Video
ans = struct with fields:
    Format: 'Motion JPEG'
    Height: 288
     Width: 512

文件 shuttle.avi 使用 Motion JPEG 编解码器。

故障排除:读取视频文件时出错

如果 MATLAB 无法访问相应的编解码器,您将无法读取视频文件。64 位应用程序使用 64 位编解码器库,32 位应用程序则使用 32 位编解码器库。例如,使用 64 位 MATLAB 时,您将无法读取需要访问系统上安装的 32 位编解码器的视频文件。要读取这些文件,请尝试以下方法之一:

  • 安装支持此文件格式的 64 位编解码器。然后,尝试使用 64 位 MATLAB 读取文件。

  • 使用您的计算机上安装的 64 位编解码器将文件重新编码为其他格式。

有时,VideoReader 无法在 Windows 平台上打开视频文件进行读取。如果您安装的第三方编解码器覆盖了系统设置,就可能会出现这种情况。卸载该编解码器,然后再次尝试在 MATLAB 中打开视频文件。

MATLAB 中的音频数据

什么是音频文件?

文件中的音频信号代表一系列样本,其中包含随时间变化的声音振幅。采样率是每秒采集的离散样本数量,以赫兹为单位。样本精度按位深(采样位数)测量,具体取决于可用的音频硬件。

MATLAB 音频函数使用 m×1 列向量读取和存储单通道(单声道)音频数据,使用 m×2 矩阵读取和存储立体声数据。在这两种情况下,m 均为样本数量。对于立体声数据,第一列包含左声道,第二列包含右声道。

通常,每个样本都是介于 -1 和 1 之间的双精度值。在某些情况下,尤其当音频硬件不支持高位深时,音频文件会以 8 位或 16 位整数形式存储值。样本值的范围取决于可用的位数。例如,存储为 uint8 值的样本范围为 0 到 255 (28 – 1)。MATLAB soundsoundsc 函数仅支持介于 -1 和 1 之间的单精度或双精度值。其他音频函数支持多种数据类型,请参阅函数参考页了解详情。

audioread 支持的格式

在 MATLAB 中使用 audioread 读取音频文件。audioread 函数支持以下文件格式。

平台支持文件格式
所有平台AIFC (.aifc)
AIFF(.aiff.aif
AU (.au)
FLAC (.flac)
OGG (.ogg)
OPUS (.opus)
WAVE (.wav)
Windows 7(或更高版本)、Macintosh 和 LinuxMP3 (.mp3)
MPEG-4 AAC(.m4a.mp4

在低于 Windows 7 的 Windows 平台上,audioread 不读取包含 MP3 编码数据的 WAVE 文件。

在 Windows 7(或更高版本)平台中,audioread 可能还读取 Windows Media Foundation 支持的任何文件。

在 Linux 平台中,audioread 可能还读取 GStreamer 支持的任何文件。

audioread 可以从 Windows 7 或更高版本、Macintosh 和 Linux 上的 MPEG-4(.mp4.m4v)视频文件、从 Windows 7(或更高版本)和 Linux 平台上的 Windows Media 视频 (.wmv) 和 AVI (.avi) 文件中提取音频。

另请参阅

| | |

相关主题