导入和导出视频

Wolfram 语言支持从大量多媒体容器和编解码器导入和导出,结合其用于图像和音频处理的完整堆栈,使视频处理从简单处理到高度复杂分析成为可能.
导入视频
视频文件可以作为 Video 对象导入 Wolfram 语言,以进行进一步的处理和分析. 通过导入元素,可以直接访问存储在视频文件中的数据或元数据的不同部分.
Import["file"]
将视频文件导入为 Video 对象
Import["file",elem]
从视频文件导入视频帧、音频等
Import["http://"]
将远程视频导入为 Video 对象
导入视频文件.
将视频文件导入为 Video 对象:
从视频文件导入音频:
导入两个视频帧:
导入视频文件的时长:
支持的视频格式包括 "AVI""Matroska""MP4""Ogg""QuickTime". Import 还会尝试使用通用格式 "VideoFormat" 导入其他视频文件.
每个媒体容器可以使用几种不同的编码来存储数据. 对编解码器的支持因平台而异.
$VideoDecoders
支持的视频解码器
$AudioDecoders
支持的音频解码器
$SubtitleDecoders
支持的字幕解码器
可用的视频、音频和字幕解码器.
提取支持的 MP4 解码器列表:
导出视频
Video 对象、动画或图像帧列表可以导出为带有或不带音频数据的视频文件.
Export["file.ext",video]
Video 对象导出到视频文件
Export["file.ext",images]
将图像列表导出到视频文件
Export["file.ext",rules,"Rules"]
将带音频的视频导出到视频文件
导出到视频文件.
将图像列表导出到视频文件:
创建动画:
将动画导出到视频文件:
导出到视频文件时,动画和帧列表可以与 Audio 对象组合.
将带有音频的动画导出到视频文件:
支持的视频格式为 "AVI""Matroska""MP4""Ogg""QuickTime". 每个媒体容器可以使用几种不同的编码来存储数据. 对编解码器的支持因平台而异.
Export 中支持的视频容器:
每个媒体容器可以使用几种不同的编码来存储数据.
$VideoEncoders
支持的视频编码器
$AudioEncoders
支持的音频编码器
$SubtitleEncoders
支持的字幕编码器
可用的视频、音频和字幕编码器.
获取支持的编码器的数据集:
编解码器支持
默认情况下,Wolfram 语言使用操作系统以及 FFmpeg 的受限版本来对视频文件进行解码和编码.
安装 FFmpeg 版本 4.0.0 或更高版本以获得更完整的编解码器支持. 有关特定于平台的说明,请参见以下内容.
安装 FFmpeg 后,Wolfram 语言会在默认情况下使用它.
检查系统选项以进行视频处理:
支持的视频解码器:
退出并明确禁用已安装的 FFmpeg:
注意每个容器支持的解码器数量减少了:
对于某些图形卡,还可以使用硬件加速的解码器和编码器:
使用硬件加速编码器时,编码时间可能会缩短:

安装 FFmpeg

Windows、macOS 和 Linux 仅支持 FFmpeg 4.0.0 或更高版本的 64 位共享(非静态)版本.
在 Windows 上,从 http://ffmpeg.org 下载共享二进制文件,安装并将包含 ffmpeg.exe 和动态库(例如,av*.dll 文件)的目录添加到 PATH 环境变量中.
在 macOS 上,在以下位置:/usr/local/lib、/opt/homebrew/lib 或 /opt/local/lib 安装 Homebrew 或 MacPorts .
在 Linux 上,不支持从 Snapcraft、Flatpack 等安装的通用程序包.
或者,从 http://ffmpeg.org 下载 FFmpeg 源,并用共享链接构建;启用 GPL 部分和所有必须的编解码器.