AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?

问题描述 投票:0回答:3

在此处的 Mac 应用程序中使用 AVPlayer 从文件夹全屏播放随机视频,但是当我尝试播放 .vob 文件或 .mpg 文件时,我只会看到黑屏,黑屏的持续时间与视频播放的时间一样长。

AVFoundation 不支持从这些容器播放吗?我认为,由于它们可以与普通的 QuickTime Player 一起播放,因此它们也可以与 AVPlayer 一起使用。

macos video avfoundation avplayer
3个回答
28
投票

AVURLAsset 类 有一个静态方法,您可以查询支持的视频 UTI:

+ (NSArray *)audiovisualTypes

在 10.9.1 上,它返回这些系统定义的 UTI:

  • 公共.mpeg
  • public.mpeg-2-video
  • public.avi
  • public.aifc-audio
  • public.aac 音频
  • public.mpeg-4
  • public.au-audio
  • public.aiff-audio
  • public.mp2
  • public.3gpp2
  • public.ac3-音频
  • public.mp3
  • public.mpeg-2-传输流
  • public.3gpp
  • public.mpeg-4-audio

这里是系统UTI的解释。所以看起来至少应该支持 .mpg 容器。

根据 wiki,.mpg 文件可以包含 MPEG-1 或 MPEG-2 视频,但仅支持 MPEG-2 视频。所以也许这就是文件加载但未显示任何内容的原因。

QuickTime 在内部使用 QTMovieModernizer 来播放传统格式的视频(如 本次 WWDC 会议 中所述),所以也许您可以研究一下。它甚至有一种方法来确定文件是否需要现代化:

+ requiresModernization:error:

3
投票

要获取支持的扩展列表,您可以使用以下功能:

import AVKit
import MobileCoreServices

func getAllowedAVPlayerFileExtensions() -> [String] {
    let avTypes = AVURLAsset.audiovisualTypes()
    var avExtensions = avTypes.map({ UTTypeCopyPreferredTagWithClass($0 as CFString, kUTTagClassFilenameExtension)?.takeRetainedValue() as String? ?? "" })
    avExtensions = avExtensions.filter { !$0.isEmpty }
    return avExtensions
}

这将返回如下列表:

["caf", "ttml", "au", "ts", "mqv", "pls", "flac", "dv", "amr", "mp1", "mp3", "ac3", "loas", "3gp", "aifc", "m2v", "m2t", "m4b", "m2a", "m4r", "aa", "webvtt", "aiff", "m4a", "scc", "mp4", "m4p", "mp2", "eac3", "mpa", "vob", "scc", "aax", "mpg", "wav", "mov", "itt", "xhe", "m3u", "mts", "mod", "vtt", "m4v", "3g2", "sc2", "aac", "mp4", "vtt", "m1a", "mp2", "avi"]

0
投票

斯威夫特,iOS 15+

import AVFoundation

func getAllowedAVPlayerFileExtensions() -> [String] {
    let avTypes: [AVFileType] = AVURLAsset.audiovisualTypes()
    
    let avExtensions: [String] =
        avTypes
            .compactMap({ UTType($0.rawValue)?.preferredFilenameExtension })
            .sorted()

    return avExtensions
}

返回排序的文件扩展名列表:

["3g2", "3gp", "aa", "aac", "aax", "ac3", "aifc", "aiff", "amr", "au", "avi", "caf", "eac3", "flac", "itt", "loas", "m1a", "m2a", "m3u", "m4a", "m4b", "m4p", "m4r", "m4v", "mov", "mp1", "mp2", "mp3", "mp4", "mp4", "mpa", "mqv", "pls", "ttml", "vtt", "vtt", "w64", "wav", "webvtt", "xhe"]
© www.soinside.com 2019 - 2024. All rights reserved.