2014-02-19 53 views

回答

11

AVURLAsset class有可以支持的视频尿路感染查询静态方法:

+ (NSArray *)audiovisualTypes 

在10.9.1返回这些系统中定义的尿路感染:

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

下面是一个explanation of system UTIs。所以似乎至少应该支持.mpg容器。

According to wiki .mpg文件可以包含MPEG-1或MPEG-2视频,但只支持MPEG-2视频。所以也许这就是为什么文件加载但没有显示。

QuickTime内部使用QTMovieModernizer以播放传统格式的视频(如this WWDC session中所述),因此您可以查看该视频。它甚至有一个方法来确定文件是否需要现代化:

+ requiresModernization:error: 
+0

我只是做了一个requireModernization:error:在这里的文件,并且我没有回来。 –

+1

查看mpg文件,视频为MPEG-1。那么,自QTMovieModernizer拒绝之后,我该如何转换?对于mpg和vob都不会返回该类的方法,并且当我尝试仍然使用状态QTMovieModernizerStatusNotRequired完成文件的现代化时。 –

+0

不确定,在这种情况下。我认为它一定是一些传统格式的错误。 也许你可以使用类似FFmpeg的东西来检查视频中的错误或获取更多关于它的信息(例如,查看'ffmpeg -i myfile.avi'输出的内容)。 然后,如果它报告错误,或者如果它报告文件处于某种意外的视频格式,则可以使用FFmpeg库将这些检查和/或转码整合到您的应用程序中。 –