AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器? [英] AVFoundation (AVPlayer) supported formats? No .vob or .mpg containers?

查看:29
本文介绍了AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此处的 Mac 应用程序中使用 AVPlayer 以全屏方式播放文件夹中的随机视频,但是当我尝试播放 .vob 文件或 .mpg 文件时,我只会得到一个黑屏,只要视频持续存在.

AVFoundation 不支持从这些容器播放吗?我想,因为它们可以用 QuickTime Player 播放,所以它们也可以用 AVPlayer 播放.

解决方案

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

+ (NSArray *)audiovisualTypes

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

  • public.mpeg
  • public.mpeg-2-video
  • public.avi
  • public.aifc-audio
  • public.aac-audio
  • public.mpeg-4
  • public.au-audio
  • public.aiff-audio
  • public.mp2
  • public.3gpp2
  • public.ac3-audio
  • public.mp3
  • public.mpeg-2-transport-stream
  • public.3gpp
  • public.mpeg-4-audio

这是系统UTI的说明.所以看起来至少应该支持.mpg容器.

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

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

+ requiresModernization:error:

Using AVPlayer in a Mac app here to play random videos in fullscreen from a folder, but when I try to play .vob files or .mpg files I just get a black screen that lasts as long as the video lasts.

Does AVFoundation not support playback from these containers? I figured that since they were playable with stock QuickTime Player they would also work with AVPlayer.

解决方案

The AVURLAsset class has a static methods that you can query for supported video UTIs:

+ (NSArray *)audiovisualTypes

On 10.9.1 it returns these system defined UTIs:

  • public.mpeg
  • public.mpeg-2-video
  • public.avi
  • public.aifc-audio
  • public.aac-audio
  • public.mpeg-4
  • public.au-audio
  • public.aiff-audio
  • public.mp2
  • public.3gpp2
  • public.ac3-audio
  • public.mp3
  • public.mpeg-2-transport-stream
  • public.3gpp
  • public.mpeg-4-audio

Here is an explanation of system UTIs. So it seems that at least the .mpg container should be supported.

According to wiki, .mpg files can contain MPEG-1 or MPEG-2 video, but only MPEG-2 video is supported. So maybe that's why the file loads but nothing is displayed.

QuickTime internally uses QTMovieModernizer in order to play videos in legacy formats (as mentioned in this WWDC session), so maybe you can look into that. It even has a method for determining if a file needs to be modernized:

+ requiresModernization:error:

这篇关于AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆