如何在iOS中播放.h264

时间:2017-02-21 05:12:57

标签: ios objective-c video h.264

我想播放视频,格式为 video.h264

我尝试过使用AVPlayerMPMoviePlayerViewController

但是,我没玩。 有没有办法做到这一点。 任何其他可用于实现相同的库

3 个答案:

答案 0 :(得分:0)

首先,阅读这篇文章。 Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

.h264文件采用附件b格式。接下来阅读:

https://developer.apple.com/reference/videotoolbox/vtdecompressionsession

从附件b转换为avcc,在打开解压缩会话时设置extradata。解码帧 - >显示帧。

答案 1 :(得分:-2)

以下是一些代码:

- (void)viewDidLoad {
  [super viewDidLoad];
  UIView *view = self.view;
  NSString *resourceName = @"SunSpot_1080p_main.m4v";
  NSString* movieFilePath = [[NSBundle mainBundle]
    pathForResource:resourceName ofType:nil];
  NSAssert(movieFilePath, @"movieFilePath is nil");
  NSURL *fileURL = [NSURL fileURLWithPath:movieFilePath];

  AVPlayerViewController *playerViewController =
    [[AVPlayerViewController alloc] init];
  playerViewController.player =
    [AVPlayer playerWithURL:fileURL];
  self.avPlayerViewcontroller = playerViewController;
  [self resizePlayerToViewSize];
  [view addSubview:playerViewController.view];
  view.autoresizesSubviews = TRUE;
}

完整的源代码和github链接可以在我的blog post主题上找到。与以前的API相比,这个新的播放器视图控制器非常简单,实际上没有任何内容。

答案 2 :(得分:-2)

除非最近发生了一些变化(在视频领域总是有可能......)iOS不支持' raw' h264视频播放 - 例如MyVideoFile.h264。

值得一提的是,视频在到达iOS设备时通常会像这样包装,如果它正在流式传输:

  • 原始像素位图
  • 原始像素编码(例如h.264编码)
  • 编码的视频流打包到带有音频流,字幕等的容器中(例如mp4容器)
  • 容器被分成大块'或流式传输段(使用HLS流格式的iOS)

如果您的视频很短,您可能只需要将其打包到mp4容器中然后播放它 - 即从原始文件创建MyVideoFile.mp4。

如果它更长,并且您正在流式传输,那么您通常还必须使用HLS流格式,因为这是Appel的规则之一(请参阅https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW5):

  

如果您的应用通过蜂窝网络传送视频,并且视频在五分钟内超过10分钟或5 MB数据,则需要使用HTTP直播。 (渐进式下载可用于较小的剪辑。)