我想播放视频,格式为 video.h264
我尝试过使用AVPlayer
和MPMoviePlayerViewController
但是,我没玩。 有没有办法做到这一点。 任何其他可用于实现相同的库
答案 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设备时通常会像这样包装,如果它正在流式传输:
如果您的视频很短,您可能只需要将其打包到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直播。 (渐进式下载可用于较小的剪辑。)