QuickTime (.mov, .qt)
背景
-
- 注册的 MIME 类型:video/quicktime
- 苹果(Apple) QuickTime 文件格式.
- 多媒体容器格式.
- 可包含多个视频、音频和字幕轨道.
- 常用于归档和交换视频内容.
- 以适合于同步播放的格式存储音频和视频.
- 二进制格式.
- 支持各种视频音频编解码器.
- 1991 年由苹果引入.
Import 与 Export
- Import["file.mov"] 导入 QuickTime 文件并返回一个 Video 对象.
- Import["file.mov",elem] 导入指定参数.
- 导入格式可以用 Import["file","QuickTime"] 或 Import["file",{"QuickTime",elem,…}] 指定.
- 当使用某第三方 QuickTime 附加程序时,"QuickTime"格式必须明确指定.
- Export["file.mov",expr1,expr2,…}] 将 expr 导入到 QuickTime 格式.
- 以下表达式可以导出到 QuickTime:
-
video 任意 Video 对象 AnimatedImage[…] AnimatedImage 对象的帧 Manipulate[…] 从 Manipulate 表达式生成的帧 {expr1,expr2,…} 图像、图形或光栅化表达式的列表 - 导出任意表达式列表时,每个表达式都被光栅化,并具有与其显示形式相同的光栅大小.
- QuickTime 视频的长度由帧数和指定的帧率决定.
- 如果在 Manipulate 对象中设置书签,Export 将通过在书签中插值创建一个 QuickTime 文件,其将保持 Manipulate 的速度和长度.
- Export["file.mov",{elem1->expr1,elem2->expr2,…},"Rules"] 使用规则指定要导出的参数.
- $VideoEncoders 中列出了所支持的视频编码.
- 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
参数
- 通用 Import 参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 视频表示参数:
-
"ImageList" 表示为图像列表的帧 "Video" 表示为 Video 对象的视频文件 "VideoData" 每帧的原始位图数据数组 "VideoStream" 视频文件作为 VideoStream 对象处理 - 对于 QuickTime 格式,Import 默认使用 "Video" 参数.
- 一个视频文件可能包含多个视频、音频或字幕轨道。返回轨道数的元素:
-
"AudioTrackCount" 音轨数 "SubtitleTrackCount" 字幕轨道数 "VideoTrackCount" 视频轨道数 - 视频元数据参数:
-
"BitDepth" 用于表示文件中每个颜色通道的位数 "ColorSpace" 文件中使用的颜色编码 "FrameCount" 文件中的帧数 "FrameDurations" 每帧显示时间的列表 "FrameRate" 每秒显示的帧数 "RasterSize" 栅格尺寸 "VideoEncoding" 文件中使用的视频编解码器 - 音频相关参数:
-
"Audio" 核内 Audio 对象 "AudioChannels" 音频通道数 "AudioData" 音频样本数组 "AudioEncoding" 音频样本数组 "AudioFile" 核外 Audio 对象 "BitRate" 每秒位数 "SampleRate" 每秒音频样本数 - 字幕相关的参数:
-
"RawSubtitle" 字幕数据作为原始字符串导入 "SubtitleRules" 以 {int1text1,int2text2,…} 形式的样式化文本列表返回 "SubtitleString" 以串联字幕文本组成的单个字符串形式返回 "SubtitleStringRules" 以 {int1string1,int2string2,…} 形式的纯文本列表返回 "SubtitleEncoding" 文件中使用的字幕编解码器 - 附加元数据参数:
-
"Duration" 视频的大概时长,以秒为单位 "ExactDurations" 所有视频、音频和字幕轨道的确切时长的关联 "ExactTimeBoundaries" 所有视频、音频和字幕轨道的确切开始和关闭的关联 "MetaInformation" 元数据解释为数量、位置、日期、数字等 "RawMetaInformation" 未解释的元数据为字符串和数字 "Summary" 文件摘要 "TrackStartTimes" 每个曲目的开始时间的关联 - $VideoDecoders 和 $AudioDecoders 给出计算机系统上可用的解码器列表.
参数
- Export["file.mov",{elem1->expr1,…},"Rules"] 通过规则指定导出的参数.
- 可用 Export 参数:
-
"Audio" 音频文件 "Frames" 作为列表、Manipulate 或 AnimatedImage 对象提供的视频帧
选项
- 通用 Import 选项:
-
AudioTrackSelection 1 感兴趣的音轨 "ImageTopOrientation" Automatic 存储在文件中的视频方向 RasterSize Automatic 栅格尺寸 SubtitleTrackSelection 1 感兴趣的字幕轨道 VideoTrackSelection 1 感兴趣的视频轨道 - "Audio" 参数的 Import 选项:
-
"AudioChannels" Automatic 音频通道数 SampleRate Automatic 每个通道每秒采样 - Import 和 Export 选项:
-
IncludeMetaInformation All 导入和导出的元数据类型 - 支持的 IncludeMetaInformation 设定为:"M4A"、"RawM4A"、 All 和 None.
- 通用 Export 选项:
-
AudioEncoding Automatic 文件的音频编码 Background Automatic 背景颜色 BitRate Automatic 使用的近似比特率 CompressionLevel Automatic 使用的压缩级别 FrameRate Automatic 每秒显示的帧数 MetaInformation Automatic 要导出的元数据 RasterSize Automatic 像素尺寸 SampleRate Automatic 每个通道每秒采样 VideoEncoding Automatic 文件的视频编码 VideoTransparency False 是否导出透明通道 - "Video" 和 "VideoStream" 参数的 Export 选项:
-
AudioTrackSelection All 感兴趣的音轨 SubtitleTrackSelection All 感兴趣的字幕轨道 VideoTrackSelection All 感兴趣的视频轨道 "Streamable" Automatic 制作适合流式播放的视频 - 导出 Manipulate 表达式时的 Export 选项:
-
"AnimationDuration" Automatic 动画总时长 "ControlAppearance" Automatic 如何在导出的文件中渲染 Manipulate 的控制参数 - 可以为 "ControlAppearance" 指定以下设置:
-
Automatic 使用本地计算机系统的样式参数来完全捕获笔记本界面中所见的用户控件 "Generic" 以通用样式呈现图形控件 None 导出动画时排除控制元素 - $VideoEncoders 和 $AudioEncoders 给出计算机系统上可用的编码器列表.
范例
打开所有单元 关闭所有单元基本范例 (3)
范围 (7)
导入 (2)
导出 (5)
t = Table[ImageTransformation[[image], n Floor[# / n] + 1&, DataRange -> Full], {n, 1, 30}];Export["mosaic.mov", t, FrameRate -> 15]VideoFrameList[Video["mosaic.mov"], 3]将 Manipulate 导出为 QuickTime:
m = Manipulate[Graphics[{Red, Disk[{0, 0}, r]}, PlotRange -> {{-1, 1}, {-1, 1}}, Background -> Black, ImageSize -> 100], {r, 1, 0}];Export["file.mov", m]Import["file.mov", "Summary"]导出一个 AnimatedImage 对象:
Export["file.mov", AnimatedImage["ExampleData/pearls.png"]]Import["file.mov", "Summary"]导出视频的 Manipulate:
m = Manipulate[Graphics[{Red, Disk[{0, 0}, r]}, PlotRange -> {{-1, 1}, {-1, 1}}, Background -> Black, ImageSize -> 100], {r, 1, 0}];a = ExampleData[{"Audio", "Drums"}];Export["file.mov", {"Frames" -> m, "Audio" -> a}, "Rules", {...}]Import["file.mov", "Summary"]当导出 Graphics,帧被光栅化为首帧的大小:
{Graphics[Disk[], ImageSize -> 80], Graphics[{Blue, Rectangle[]}, ImageSize -> 60], Graphics[{Red, Disk[]}, ImageSize -> 50]}Export["shapes.mov", %, Background -> Gray]Import[%, "ImageList"]导入的参数 (34)
生成多轨 QuickTime 文件 (1)
视频参数 (3)
"Video" (1)
导入为 Video对象:
Import["bullfinch.mov", "Video"]Import["bullfinch.mov"]"VideoData" (1)
data = Import["bullfinch.mov", {"VideoData", {1, 9}}]将存储在 NumericArray 对象中的视频数据转换为图像:
Image /@ data"VideoStream" (1)
导入为 VideoStream 对象:
str = Import["bullfinch.mov", "VideoStream"]VideoPlay[str]str["CurrentFrame"]轨道数量 (3)
元数据参数 (7)
"Duration" (2)
"ExactDurations" (2)
"MetaInformation" (1)
"RawMetaInformation" (1)
视频轨 (7)
"FrameDurations" (1)
"VideoEncoding" (1)
Import["ExampleData/clip.mov", "VideoEncoding"]可以使用 $VideoDecoders 提取每个平台上受支持的解码器:
$VideoDecoders["QuickTime"][[All, 1]]音轨 (7)
"Audio" (1)
"AudioData" (1)
从 QuickTime 文件将音频数据导入为 NumericArray:
data = Import["bullfinch.mov", "AudioData"]将存储的音频数据转换为 Audio 对象:
Audio[data, SampleRate -> 48000]"AudioEncoding" (1)
Import["bullfinch.mov", "AudioEncoding"]可以从 $AudioDecoders 中提取可用的音频解码器:
$AudioDecoders["QuickTime"][[All, 1]]"AudioFile" (1)
字幕轨 (5)
"RawSubtitle" (1)
Import["bullfinch.mov", "RawSubtitle"]//Dataset如果字幕不存在,则返回 None:
Import["ExampleData/clip.mov", "RawSubtitle"]"SubtitleEncoding" (1)
Import["bullfinch.mov", "SubtitleEncoding"]可通过 $SubtitleDecoders 提取可用的字幕编码:
$SubtitleDecoders["QuickTime"][[All, 1]]"SubtitleRules" (1)
Import["bullfinch.mov", "SubtitleRules"]//Column如果字幕不存在,则返回 None:
Import["ExampleData/clip.mov", "SubtitleRules"]"SubtitleString" (1)
Import["bullfinch.mov", "SubtitleString"]//Short如果字幕不存在,则返回 None:
Import["ExampleData/clip.mov", "SubtitleString"]"SubtitleStringRules" (1)
Import["bullfinch.mov", "SubtitleStringRules"]//Column如果字幕不存在,则返回 None:
Import["ExampleData/clip.mov", "SubtitleStringRules"]导入的选项 (11)
生成多轨 QuickTime 文件 (1)
"AudioChannels" (1)
AudioTrackSelection (1)
默认情况下,Import 仅从第一个音轨中提取数据:
Import["bullfinch.mov", {{"SampleRate", "AudioChannels"}}]使用 AudioTracks 选项从指定的音轨中提取数据:
Import["bullfinch.mov", {{"SampleRate", "AudioChannels"}}, AudioTrackSelection -> {1, 2}]"ImageTopOrientation" (1)
IncludeMetaInformation (3)
Export["audio.mov", Import["ExampleData/dialing.m4a", "Audio"]]Options[Import["audio.mov", "Audio"], MetaInformation]Options[Import["audio.mov", "Audio", IncludeMetaInformation -> None], MetaInformation]Options[Import["audio.mov", "Audio", IncludeMetaInformation -> {"RawM4A"}], MetaInformation]RasterSize (1)
SampleRate (1)
SubtitleTrackSelection (1)
默认情况下,Import 仅从第一个字幕轨道中提取数据:
Import["bullfinch.mov", "RawSubtitle"]//Dataset使用 SubtitleTracks 选项从指定的字幕轨道中提取数据:
Import["bullfinch.mov", "RawSubtitle", SubtitleTrackSelection -> {1, 2}]//DatasetVideoTrackSelection (1)
默认情况下,Import 仅从第一个视频轨道中提取数据:
Import["bullfinch.mov", {{"FrameRate", "RasterSize"}}]使用 VideoTracks 选项从指定的视频轨道中提取数据:
Import["bullfinch.mov", {{"FrameRate", "RasterSize"}}, VideoTrackSelection -> {1}]导出的选项 (23)
"AnimationDuration" (1)
指定导出的 Manipulate 表达式的持续时间:
animation = Manipulate[Plot3D[Sin[x y + a], {x, 0, 3}, {y, 0, 3}, Mesh -> False, Boxed -> False, Axes -> None, ColorFunction -> "IslandColors"], {a, 0, 2 Pi}];Export["test.mov", animation, "AnimationDuration" -> 7]Import[%, "ExactDurations"]AudioEncoding (1)
AudioTrackSelection (1)
Export["test.mov", Video["ExampleData/bullfinch.mkv"]]Import[%, "AudioTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], AudioTrackSelection -> {1, 2}]Import[%, "AudioTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], AudioTrackSelection -> None]Import[%, "AudioTrackCount"]Background (1)
默认情况下,白色背景用于透明图形和图像,以及在导出之前填充不同尺寸的图像时:
list = {[image], [image], [image]};Export["test.mov", list]Import[%, "ImageList"]Export["test.mov", list, Background -> Blue]Import[%, "ImageList"]BitRate (4)
Export["test.mov", Video["ExampleData/bullfinch.mkv"]];Import["test.mov", "BitRate"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], BitRate -> Quantity[500, "Kilobits"/"Seconds"]];Import["test.mov", "BitRate"]vrate = Quantity[500, "Kilobits"/"Seconds"];
arate = Quantity[50, "Kilobits"/"Seconds"];
Export["test.mov", Video["ExampleData/bullfinch.mkv"], BitRate -> {vrate, arate}];Import["test.mov", "BitRate"]FileSize[Export["test.mov", Video["ExampleData/bullfinch.mkv"], BitRate -> #]]& /@ {Quantity[500, "Kilobits"/"Seconds"], Quantity[300, "Kilobits"/"Seconds"], Quantity[100, "Kilobits"/"Seconds"]}CompresionLevel (2)
使用 CompressionLevel 选项控制文件大小和生成的视频的质量:
FileSize[Export["test.mov", Video["ExampleData/bullfinch.mkv"], CompressionLevel -> #]]& /@ {0.2, 0.5, 0.8}当指定了视频和音频的 BitRate 时,将忽略 CompressionLevel 的值:
FileSize[Export["test.mov", Video["ExampleData/bullfinch.mkv"], BitRate -> {500000, 50000}, CompressionLevel -> 1]]FileSize[Export["test.mov", Video["ExampleData/bullfinch.mkv"], BitRate -> {500000, 50000}, CompressionLevel -> 0]]"ControlAppearance" (1)
设置为 "ControlAppearance"Automatic 时,如果创建动画的计算机系统不同,导出的动画看起来也会有所不同:
animation = Manipulate[Plot3D[Sin[x y + a], {x, 0, 3}, {y, 0, 3}, Mesh -> False, Boxed -> False, Axes -> None, ColorFunction -> "IslandColors"], {a, 0, 2 Pi}];Export["test.mov", animation]Import[%, {"ImageList", {1, 2}}]用 "ControlAppearance"None,导出的视频中不包含任何用户控件:
Export["test.mov", animation, "ControlAppearance" -> None]Import[%, {"ImageList", {1, 2}}]FrameRate (1)
默认情况下,导出 Video 或 VideoStream 对象时会保留帧速率:
video = Video["ExampleData/caminandes.mp4"];Export["test.mov", video]{Information[video]["VideoTracks"][1]["FrameRate"], Import[%, "FrameRate"]}Export["test.mov", video, FrameRate -> 25]Import[%, "FrameRate"]IncludeMetaInformation (3)
默认情况下,所有来自 Audio 对象的现有元信息都会被导出:
a = \!\(\*AudioBox[""]\);Options[a, MetaInformation]Export["test.mov", a]Options[Import[%], MetaInformation]Export["test.mov", \!\(\*AudioBox[""]\), IncludeMetaInformation -> None]Options[Import[%], MetaInformation]v = Video["ExampleData/bullfinch.mkv"];Import[Information[v, "ResourcePath"], "MetaInformation"]不导出元数据,例如 "Language" 或 "Title":
Import[Export["test.mov", v, IncludeMetaInformation -> None], "MetaInformation"]MetaInformation (1)
v = Video["ExampleData/bullfinch.mkv"];Import[Export["test.mov", v], "MetaInformation"]Import[Information[v, "ResourcePath"], "MetaInformation"]导出指定的元数据;"QuickTime" 仅支持选定的标签:
metadata = <|"Comments" -> "my comments", "Title" -> "my title", "VideoTracks" -> <|1 -> <|"Language" -> "eng"|>|>|>;Lookup[Import[Export["test.mov", v, MetaInformation -> metadata], "MetaInformation"], {"Comments", "Title", "VideoTracks"}]RasterSize (1)
默认情况下,导出 Video 或 VideoStream 对象时,将保留栅格大小:
video = Video["ExampleData/bullfinch.mkv"];Export["test.mov", video]{Information[video]["VideoTracks"][1]["OriginalRasterSize"]//Normal, Import[%, "RasterSize"]}Export["test.mov", video, RasterSize -> 320]Import[%, "RasterSize"]SampleRate (1)
默认情况下,导出 Video、VideoStream 或 Audio 对象时将保留采样率:
video = Video["ExampleData/bullfinch.mkv"];Export["test.mov", video]{Information[video]["AudioTracks"][1]["SampleRate"], Import[%, "SampleRate"]}Export["test.mov", video, SampleRate -> 44100]Import[%, "SampleRate"]SubtitleEncoding (1)
SubtitleTrackSelection (1)
Export["test.mov", Video["ExampleData/bullfinch.mkv"]]Import[%, "SubtitleTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], SubtitleTrackSelection -> 1]Import[%, "SubtitleTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], SubtitleTrackSelection -> None]Import[%, "SubtitleTrackCount"]VideoEncoding (1)
VideoTrackSelection (1)
Export["test.mov", Video["ExampleData/bullfinch.mkv"]]Import[%, "VideoTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], VideoTrackSelection -> 1]Import[%, "VideoTrackCount"]Export["test.mov", Video["ExampleData/bullfinch.mkv"], VideoTrackSelection -> None]Import[%, {"QuickTime", "VideoTrackCount"}]VideoTransparency (1)
v = SlideShowVideo[[image], VideoTransparency -> True];Information[v, "Transparency"]默认情况下,Export 移除透明度:
Export["test.mov", v]Information[Import["test.mov"], "Transparency"]Export["test.mov", v, VideoTransparency -> True]Information[Import["test.mov"], "Transparency"]历史
2003年引入 (5.0) | 在以下年份被更新:2017 (11.2) ▪ 2020 (12.1) ▪ 2020 (12.2) ▪ 2021 (12.3) ▪ 2021 (13.0) ▪ 2022 (13.1) ▪ 2024 (14.0) ▪ 2024 (14.1)