MP4 (.mp4, .m4a, ...)

背景

    • MIME 类型:video/mp4
    • MPEG-4 第 14 部分的视频格式.
    • 多媒体容器格式.
    • 可包含多个视频、音频和字幕轨道.
    • 从 QuickTime 文件格式和 MPEG-4 第 12 部分扩展.
    • 遵循 ISO/IEC 14496-14 标准.
    • 通常称为 MPEG-4 文件格式,版本 2.
    • 通常用于存档和交换视频内容.
    • 以适合于同步播放的格式存储音频和视频.
    • 二进制格式.
    • 支持各种视频音频编解码器.
    • 2001 年由 ISO 开发.

Import 与 Export

  • Import["file.mp4"] 导入 MP4 文件并返回一个 Video 对象.
  • Import["file.mp4",elem] 导入指定参数.
  • 导入格式可以用 Import["file","MP4"]Import["file",{"MP4",elem,}]指定.
  • $VideoDecoders 中列出了可用的视频解码器.
  • Export["file.mp4",expr]expr 导出为 MP4 格式.
  • 以下表达式可以导出到 MP4:
  • video任意 Video 对象
    AnimatedImage[]AnimatedImage 对象的帧
    Manipulate[]Manipulate 表达式生成的帧
    {expr1,expr2,}图像、图形或光栅化表达式的列表
  • 导出任意表达式列表时,每个表达式都被光栅化,并具有与其显示形式相同的光栅大小.
  • MP4 视频的长度由帧数和指定的帧率决定.
  • 如果在 Manipulate 对象中设置书签,Export 将通过在书签中插值创建一个 MP4 文件,其将保持 Manipulate 的速度和长度.
  • Export["file.mp4",{elem1expr1,elem2expr2,},"Rules"] 使用规则指定要导出的参数.
  • $VideoDecoders 中列出了所支持的视频编码器.
  • 请到以下参考页面了解完整的基本信息:
  • Import, Export从文件导入或导出到文件
    CloudImport, CloudExport从云对象导入或导出到云对象
    ImportString, ExportString从字符串导入或导出到字符串
    ImportByteArray, ExportByteArray从字节数组导入或导出到字节数组

Import 的参数

  • 通用 Import 参数:
  • "Elements" 该文件可用的参数和选项列表
    "Summary"文件摘要
    "Rules"所有可用参数的规则列表
  • 视频表示参数:
  • "ImageList"表示为图像列表的帧
    "Video"表示为 Video 对象的视频文件
    "VideoData"每帧的原始位图数据数组
    "VideoStream"视频文件作为 VideoStream 对象处理
  • 音频表示参数:
  • "Audio"核内 Audio 对象
    "AudioData"音频样本数组
    "AudioFile"核外 Audio 对象
  • 如果文件具有视频轨道,则默认情况下 Import 使用 "Video" 参数,否则使用 "Audio" 参数.
  • 一个视频文件可能包含多个视频、音频或字幕轨道。返回轨道数的元素:
  • "AudioTrackCount"音轨数
    "SubtitleTrackCount"字幕轨道数
    "VideoTrackCount"视频轨道数
  • 视频元数据参数:
  • "BitDepth"用于表示文件中每个颜色通道的位数
    "ColorSpace"文件中使用的颜色编码
    "FrameCount"文件中的帧数
    "FrameDurations"每帧显示时间的列表
    "FrameRate"每秒显示的帧数
    "RasterSize"栅格尺寸
    "VideoEncoding"文件中使用的视频编解码器
  • 音频元数据参数:
  • "AudioChannels"音频通道数
    "AudioBitDepth"用于表示每个音频样本的数位
    "AudioEncoding"文件中使用的音频编解码器
    "AudioLength"音频样本数
    "BitRate"每秒位数
    "SampleRate"每秒音频样本数
  • 字幕相关的参数:
  • "RawSubtitle"字幕数据作为原始字符串导入
    "SubtitleRules"{int1text1,int2text2,} 形式的样式化文本列表返回
    "SubtitleString"以串联字幕文本组成的单个字符串形式返回
    "SubtitleStringRules"{int1string1,int2string2,} 形式的纯文本列表返回
    "SubtitleEncoding"文件中使用的字幕编解码器
  • 附加元数据参数:
  • "ExactDurations"所有视频、音频和字幕轨道的确切时长的关联
    "ExactTimeBoundaries"所有视频、音频和字幕轨道的确切开始和结束时间的关联
    "Duration"视频的大概时长,以秒为单位
    "MetaInformation"元数据解释为数量、位置、日期、数字等
    "RawMetaInformation"未解释的元数据为字符串和数字
    "Summary"文件摘要
    "TrackStartTimes"每个曲目的开始时间的关联
  • $VideoDecoders$AudioDecoders 给出计算机系统上可用的解码器列表.

Export 的参数

  • Export["file.mp4",{elem1->expr1,},"Rules"] 使用规则来指定要导出的元素.
  • 可用 Export 参数:
  • "Audio"音轨
    "Frames"以列表、ManipulateAnimatedImage 对象形式提供的视频帧

选项

范例

打开所有单元关闭所有单元

基本范例  (4)

将一个 MP4 文件导入为 Video 对象:

导入视频的属性,例如时长:

导入视频文件摘要:

导入仅有音频的 MP4 文件:

Video 对象导出为 MP4:

范围  (6)

Import  (2)

导入视频帧列表:

导入音频数据的前10秒:

Export  (4)

将图像列表导出到 MP4:

从视频获取三张帧:

Manipulate 导出为 MP4:

从视频中获取部分帧:

导出一个 AnimatedImage 对象:

导出视频的 Manipulate

导出文件的摘要:

导入参数  (33)

可用参数  (1)

可用参数列表:

视频参数  (3)

"Video"  (1)

导入为 Video对象:

这是默认的导入元素:

"VideoData"  (1)

导入与指定帧对应的视频数据:

将存储在 NumericArray 对象中的视频数据转换为图像:

"VideoStream"  (1)

导入为 VideoStream 对象:

播放视频流:

从流中获取当前帧:

轨道数量  (3)

"AudioTrackCount"  (1)

导入音轨数量:

"SubtitleTrackCount"  (1)

导入字幕轨道的数量:

"VideoTrackCount"  (1)

导入视频轨道的数量:

元数据参数  (7)

"Duration"  (2)

导入视频的大致时长:

要导入确切的轨道持续时间,请使用 "ExactDurations" 参数:

"ExactDurations"  (2)

导入准确的轨道持续时间:

导入视频的大致时长:

计算近似持续时间通常比精确持续时间快很多:

"MetaInformation"  (1)

从视频文件导入元数据:

"RawMetaInformation"  (1)

从视频文件导入未处理的元数据:

"Summary"  (1)

导入视频文件摘要:

视频轨道  (7)

"BitDepth"  (1)

导入位数深度:

"ColorSpace"  (1)

导入色彩空间:

"FrameCount"  (1)

导入视频帧数:

"FrameDurations"  (1)

导入所选视频帧的时长:

"FrameRate"  (1)

导入视频帧率:

"RasterSize"  (1)

导入视频帧的栅格大小:

"VideoEncoding"  (1)

导入视频编解码器:

可以使用 $VideoDecoders 提取每个平台上受支持的解码器:

音频轨道  (7)

"Audio"  (1)

从 MP4 文件导入 Audio

"AudioChannels"  (1)

导入音频通道数:

"AudioData"  (1)

从 MP4 文件将音频数据导入为 NumericArray

将存储的音频数据转换为 Audio 对象:

"AudioEncoding"  (1)

导入音频编码:

可以从 $AudioDecoders 中提取可用的音频解码器:

"AudioFile"  (1)

导入核外 Audio 对象:

请注意,核外 Audio 不会在内存中保存数据. 与核内 Audio 进行比较:

"BitRate"  (1)

获取音轨的位速率:

"SampleRate"  (1)

获取音轨的采样率:

字幕轨道  (5)

"RawSubtitle"  (1)

从 MP4 文件获取原始字幕:

如果字幕不存在,则返回 None

"SubtitleEncoding"  (1)

导入字幕编码:

可通过 $SubtitleDecoders 提取可用的字幕编码:

"SubtitleRules"  (1)

以样式化文本列表的形式获取字幕:

如果没有字幕,则返回 None

"SubtitleString"  (1)

以单个字符串的形式获取字幕:

如果字幕不存在,则返回 None

"SubtitleStringRules"  (1)

以纯文本列表的形式获取字幕:

如果没有字幕,则返回 None

导入的选项  (11)

生成多轨 MP4 文件 (1)

生成多轨 MP4 文件:

"AudioChannels"  (1)

默认情况下,所有音频通道均已导入:

仅导入第二个通道:

AudioTrackSelection  (1)

默认情况下,Import 仅从第一个音轨中提取数据:

AudioTracks 选项从指定的音轨中提取数据:

"ImageTopOrientation"  (1)

默认情况下,导入视频帧时将其原始方向存储在文件中:

指定应该在顶部的一面:

IncludeMetaInformation  (3)

默认情况下,导入所有有可用元数据:

避免导入任何元数据:

仅导入指定元素类:

RasterSize  (1)

默认情况下,视频帧以其原始大小导入:

指定每个视频帧的栅格大小:

SampleRate  (1)

默认情况下,视频帧以其原始大小导入:

指定导入声音的采样率:

SubtitleTrackSelection  (1)

默认情况下,Import 仅从第一个字幕轨道中提取数据:

使用 SubtitleTracks 选项从指定的字幕轨道中提取数据:

VideoTrackSelection  (1)

默认情况下,Import 仅从第一个视频轨道中提取数据:

使用 VideoTrackSelection 选项从指定的视频轨道中提取数据:

导出的选项  (23)

"AnimationDuration"  (1)

指定导出的 Manipulate 表达式的持续时间:

AudioEncoding  (1)

指定导出音频的编码:

AudioTrackSelection  (1)

默认情况下,所有音轨都将导出:

指定要导出的音轨:

不导出音轨:

Background  (1)

默认情况下,白色背景用于透明图形和图像,以及在导出之前填充不同尺寸的图像时:

指定其他填充:

BitRate  (4)

默认情况下,导出视频文件时使用自动比特率:

查看总体近似比特率:

推荐一个近似比特率:

检查可能与推荐比特率略有不同的近似比特率:

分别指定大概的视频和音频比特率:

检查总体近似比特率:

较小的比特率会导致较小的文件,但也会降低生成的视频的质量:

CompresionLevel  (2)

使用 CompressionLevel 选项控制文件大小和生成的视频的质量:

如果同时为视频和音频指定了 BitRate 则忽略 CompressionLevel 值:

"ControlAppearance"  (1)

设置为 "ControlAppearance"Automatic 时,如果创建动画的计算机系统不同,导出的动画看起来也会有所不同:

"ControlAppearance"None,导出的视频中不包含任何用户控件:

FrameRate  (1)

默认情况下,导出 VideoVideoStream 对象时会保留帧速率:

指定不同的帧速率:

IncludeMetaInformation (3)

默认情况下,将导出 Audio 对象中所有现有的元信息:

指定要包括的元数据:

导入元数据:

不导出类似 "Language""Title"等的元数据:

MetaInformation (1)

默认情况下,从导入视频文件中的导出所有元数据:

对比源文件中的元数据:

导出指定元数据,仅选择支持 "MP4" 的标签:

RasterSize  (1)

默认情况下,导出 VideoVideoStream 对象时,将保留栅格大小:

指定不同的栅格大小:

SampleRate  (1)

默认情况下,导出 VideoVideoStreamAudio 对象时将保留采样率:

指定不同的采样率:

SubtitleEncoding  (1)

指定导出字幕的编码:

SubtitleTrackSelection  (1)

默认情况下,所有字幕轨道均已导出:

指定要导出的字幕轨道:

不导出字幕轨道:

VideoEncoding  (1)

指定导出视频的编码:

VideoTrackSelection  (1)

默认情况下,所有视频轨道均已导出:

指定要导出的视频轨道:

不导出视频轨道:

VideoTransparency  (1)

创建一个有 alpha 通道的视频:

默认情况下,Export 移除透明度:

导出一个带 alpha 通道的视频: