[英]How to play a .h264 file in iOS (or) How to convert .h264 file in to .mp4 file programmatically
[英]how to play .h264 in iOS
我想播放视频,格式为video.h264
我已经尝试过AVPlayer
和MPMoviePlayerViewController
但是,我没玩。 有没有办法做到这一点。 任何其他可实现相同目的的库
首先,请阅读这篇文章。 H.264流的序列/图片参数集的可能位置
.h264文件为附件b格式。 接下来阅读:
https://developer.apple.com/reference/videotoolbox/vtdecompressionsession
从附件b转换为avcc,在打开解压缩会话时设置Extradata。 解码帧->显示帧。
这是一些执行此操作的代码:
- (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链接可以在我关于该主题的博客文章中找到。 与以前的API相比,这种新的播放器视图控制器非常容易,实际上没有任何东西。
除非最近有所变化(在视频世界中总是可能的……),iOS不支持“原始” 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分钟内超过5 MB数据,则您需要使用HTTP Live Streaming。 (渐进式下载可能用于较小的剪辑。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.