视频基础知识

Wolfram 语言对视频对象有优先支持,可以程序式访问,并能对大量多媒体容器和编解码器进行处理和分析,结合其用于图像和音频处理的完整堆栈,使视频处理从简单处理到高度复杂分析成为可能.
视频创建与表示
视频对象可以通过导入或引用磁盘上的视频文件来创建.
Video[file]
表示 file 中视频的视频对象
Video[url]
表示 url 中视频的视频对象
Video[Manipulate[]]
Manipulate 对象生成的视频
VideoGenerator[model]
从模型生成的视频
Import[file,elem]
从视频 file 导入特定元素
视频创建函数.
视频对象是对本地或远程文件的引用,具有交互式视频渲染功能. 视频文件的实际数据仍在核心之外,但可以将其一部分(例如图像帧或音频块)导入内存.
这将创建一个来自 Wolfram 语言文档 "ExampleData" 目录的外部视频对象:
使用 Import 创建 Video 对象:
创建引用 URLVideo 对象:
Manipulate 生成 Video
生成一个元胞自动机演化图像的10秒钟 Video
可以使用 Import 获取视频文件中特定的数据或元数据元素,例如时长、帧列表或音频数据等.
视频文件的可用导入元素有:
导入两个视频帧作为图像:
检索视频时长:
将视频的音频内容作为 Audio 对象或原始数据导入:
视频属性
Video 对象具有多重用途. 它是视频文件参考,也是视频数据导入器和查看器. 与这些功能相应,Video 对象表现出不同的属性集合.
与视频文件及其内容有关的 Video 属性可以通过以下函数获得.
Duration[video]
给出 video 的时长
Information[video,prop]
返回 video 的属性 prop
Import[file,"Summary"]
导入 file 属性的摘要
视频数据属性.
获取视频对象的总时长:
Information 函数提供视频摘要:
使用 Information 提取视频对象的单个属性:
Import"Summary" 元素也是检索视频文件相关属性的便捷方法.
导入视频文件摘要:
Video 对象可以接受控制视频数据访问和提取的选项. 这些选项不会更改文件的内容,而是确定所提取数据的属性以进行处理和显示.
AudioTrackSelection
选择感兴趣的音频轨道
RasterSize
给出所提取的视频帧的栅格大小
SubtitleTrackSelection
选择感兴趣的字幕轨道
VideoTrackSelection
选择感兴趣的视频轨道
视频访问属性.
大多数视频格式都支持多个声音、字幕甚至视频轨道的存储.
这是具有多个音频和字幕轨道的视频文件:
从这个仅包含一个视频和一个音频轨道的多轨文件构造一个视频:
默认情况下,提取或处理帧时会使用存储在文件中的帧的原始尺寸.
导入文件中帧的尺寸:
通过指定较小的 RasterSize 降低视频分辨率:
Video 对象提取的帧的大小与指定的 RasterSize 相匹配:
视频对象可以接受更多选项来控制视频和音频的播放.
Appearance
视频播放器的整体外观
AudioOutputDevice
用于视频播放的音频输出设备
ImageSize
所显示视频的图像尺寸
SoundVolume
视频播放器的音量
视频播放属性.
创建一个宽度为 200 像素的 "Minimal" GUI:
将音量设置为50%:
内容提取
要从视频文件中提取音频数据或特定帧,可以使用以下函数.
Audio[video]
返回对应于第一个音频轨道的 Audio 对象
VideoFrameList[video,n]
返回 n 个视频帧的列表
VideoExtractFrames[video,{t1,t2,}]
提取在时刻 t1,t2, 的视频帧
视频内容提取函数.
通过提取帧来生成视频摘要.
在特定时间点从视频提取帧:
从视频中提取等距的帧,并创建缩略图网格:
视频编辑
常见的操作有:剪辑视频的一部分,删除视频的一部分,向视频添加音轨等. 这些视频编辑操作可通过以下函数获得.
VideoCombine[video,audio,]
将视频和音频对象合并为一个视频
VideoDelete[video,{t1,t2}]
删除视频片段
VideoJoin[video1,video2,]
顺序连接多个视频对象
VideoSplit[video,{t1,t2}]
将视频分成多个视频片段
VideoTranscode[video,format]
将视频转码为特定格式和编解码器
VideoTrim[video,{t1,t2}]
修剪一段视频
视频编辑函数.
修剪视频中的时间间隔:
检查结果视频的时长:
删除视频中的时间间隔:
在特定时间拆分视频:
处理与分析
视频处理或过滤是一种视频输入、视频输出操作. 函数可以对单个帧或视频帧序列进行操作,以创建输出视频的新帧. 视频分析是通过计算统计信息或从单个帧或一系列视频帧中提取特征来理解视频内容的过程.
AudioTrackApply[f,video]
f 应用于 video 的音频轨道,返回新视频
VideoFrameMap[f,video,]
f 应用于视频帧的分区,返回新视频
VideoMap[f,video,]
f 应用于视频分区,返回新视频
VideoMapList[f,video,]
f 应用于视频分区,返回列表
VideoMapTimeSeries[f,video,]
f 应用于视频分区,返回时间序列
VideoIntervals[video,crit,]
检查视频分区的 crit,返回感兴趣的间隔
视频处理和分析函数.
VideoFrameMap 将图像函数应用于单个帧或一系列视频帧,从而产生新的视频对象.
视频场景中帧的负片:
通过混合五个连续的帧在视频上创建运动模糊:
通过将函数应用于视频帧,以 TimeSeries 的形式返回任意结果,VideoTimeSeries 可以用于分析和检测视频内容.
确定每个帧的熵:
测量连续图像帧之间的差异:
视频流
VideoStream 表达式可用于以编程方式控制视频播放.
VideoStream[video]
video 创建新的 VideoStream 对象
VideoPlay[vstream]
开始播放 VideoStream 对象 vstream
VideoPause[vstream]
暂停播放 vstream
VideoStop[vstream]
停止播放 vstream
VideoStreams[]
返回所有现有的视频流
RemoveVideoStream[vstream]
删除 VideoStream 对象 vstream
视频流函数.
Video 对象创建 VideoStream 对象:
获取视频流的可用属性列表:
获取特定的流属性:
以编程方式启动、暂停和停止视频流:
显示视频流的当前帧:
检查所有可用的视频流:
删除所有视频流: