Tag: video操作

PhoneGap iOS无法使用HTML 5播放video

我正在构buildphonegap应用程序,我需要在其中播放video。 我知道为了在Android上播放video,我需要使用可用的插件之一,但在iOS上播放video,我可以使用HTML 5video标签。 我有这些代码行: <div id="video"> <video id="video01" width="300" height="300" controls> <source src="images/test2.mp4" type="video/mp4" /> </video> </div> 我可以看到“video盒”,但由于某种原因我无法播放video。 在控制台中,我没有看到任何错误。 我使用的video来自于此页面: http : //www.quirksmode.org/html5/tests/video.html 而在iPhone Safari中,我可以从该页面加载MP4版本没有任何问题。

AVAssetWriter输出大文件(即使应用压缩设置)

我正在开发一个个人iOS项目,要求全屏video(15秒长)通过4G连接上传到后端。 虽然我可以拍摄video,但是文件的输出大小已经达到了30MB,这让我觉得我在压缩方面做了很大的错误。 以下是我用来设置AssetWriter的代码: -(void)captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections { NSLog(@"Started Recording! *******************"); self.movieWriter = [AVAssetWriter assetWriterWithURL:fileURL fileType:AVFileTypeMPEG4 error:nil]; [self.movieWriter setShouldOptimizeForNetworkUse:YES]; NSDictionary *videoCleanApertureSettings = @{ AVVideoCleanApertureWidthKey: [NSNumber numberWithFloat:self.view.frame.size.width], AVVideoCleanApertureHeightKey: [NSNumber numberWithFloat:self.view.frame.size.height], AVVideoCleanApertureHorizontalOffsetKey: [NSNumber numberWithInt:10], AVVideoCleanApertureVerticalOffsetKey: [NSNumber numberWithInt:10], }; NSDictionary *videoCompressionSettings = @{ AVVideoAverageBitRateKey: [NSNumber numberWithFloat:5000000.0], AVVideoMaxKeyFrameIntervalKey: [NSNumber numberWithInteger:1], AVVideoProfileLevelKey: AVVideoProfileLevelH264Baseline30, AVVideoCleanApertureKey: videoCleanApertureSettings, }; NSDictionary *videoSettings […]

在IOS中同时播放audio和video

嗨,我想同时播放两个不同的文件。 我尝试使用AVFoundation和MediaPlayer创build多个播放器,但效果不佳。 什么是同时播放audio文件和video的最佳方式? 我采取单独的文件的原因是为了节省空间,因为应用程序将本地化,每个语言只有26个audio文件,而不是有26个video节省空间。 这很重要,因为苹果不允许下载超过100 MB的应用程序大小。

iOS AVFoundationvideo捕捉方向选项

我有一个应用程序,我想只有前置摄像头的video捕捉。 那没问题。 但是我希望video捕捉始终处于风景中,即使手机是以肖像方式进行拍摄的。 我有一个基于Apple发布的AVCamDemo代码的工作实现。 从这个技术说明中的信息借用,我可以指定方向。 只有一个窍门:当video框架正确定向时,内容仍然显示为以纵向拍摄: 我想知道如果我只是硬件的物理约束:是图像传感器只是这样定向? 上面引用的技术说明提出了这个问题: 重要提示:在静止图像输出和animation文件输出上设置方向不会物理旋转缓冲区。 对于电影文件输出,它将轨道变换(matrix)应用于video轨道,以便在回放时旋转电影,​​并为静止图像输出插入exif元数据,以供观看者在稍后观看时用于正确旋转图像。 但是,我的播放video则表明否则。 任何见解或build议,将不胜感激! 谢谢,亚伦。

在iOS上,CALayer位图(CGImage对象)如何显示在graphics卡上?

在iOS上,我能够创build3个CGImage对象,并以60fps的CADisplayLink使用CADisplayLink self.view.layer.contents = (__bridge id) imageArray[counter++ % 3]; 在ViewController ,每一次,一个图像被设置为视图的CALayer contents ,这是一个位图。 而这一切都可以改变屏幕显示。 屏幕将以60fps循环播放这3张图片。 没有UIView的drawRect ,没有CALayer的display , drawInContext或者CALayer的委托drawLayerInContext 。 它所做的只是更改CALayer的contents 。 我也尝试添加一个较小的子层self.view.layer ,并设置该子层的contents 。 这个子图层将循环通过这3个图像。 所以这与以前甚至在苹果公司(甚至在King's Quest III时代,这是DOSvideo游戏,其中有一个位图,屏幕只是不断显示位图是什么)非常相似。 除了这个时候,它不是一个位图,而是一个树或一个链接的位图列表,并且显卡不断使用画家模型将这些位图(位置和不透明度)绘制到主屏幕上。 所以看来, drawRect ,CALayer,一切都是为了达到最终目的而devise的。 这是如何工作的? 显卡是否采用位图或位图树的有序列表? (然后不断地显示它们,为了简化,我们不考虑CA框架中的隐式animation)在graphics卡处理层中究竟发生了什么? (实际上,这种方法在iOS,Mac OS X和PC上几乎相同?) (这个问题旨在了解我们的graphics编程实际上是如何在现代graphics卡中呈现的,例如,如果我们需要了解UIView和CALayer的工作方式,或者直接使用CALayer的位图,我们需要了解graphics架构。

PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo不返回video

从标题编辑删除的版本,但这开始于iOS 8.1 我有一个应用程序,我已经build立,将播放来自用户Photos.app的video。 当我在8.0.2设备上安装应用程序时,我从[PHAsset fetchAssetsWithMediaType:options:]调用中找回video列表没问题,但是当我在8.1设备上安装完全相同的代码时,我得到0个video返回。 有没有人遇到过这个? 8.1是否改变了我们应该从Photos.app再次访问照片/video的方式? PHFetchOptions *options = [[PHFetchOptions alloc] init]; PHFetchResult *videos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options]; 任何帮助,将不胜感激。 更新 修改我的代码来使用PHAssetCollection调用尝试和获取相册,我得到了一些成功,现在在这两个版本我得到我的6个video中的3(不幸的是每次不一样3)。 PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options]; PHFetchResult *videos = [PHAsset fetchKeyAssetsInAssetCollection:collection[0] options:nil]; 编辑#2 好吧,我刚刚在上面的代码中看到了我的错误,我将它留给了那些做了同样愚蠢的事情的人。 我的video抓取线正在呼吁“关键”资产,这就是为什么我只得到3。 PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options]; PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

以1.5倍,2倍速播放video文件

我是一个iOS开发者,他应该让应用程序以各种速度播放video。 我认为没有API来改变MPMoviePlayerController播放速度。 而我找不到任何解决scheme。 你能告诉我如何实现它吗? 或者你能告诉我任何支持上述iOSfunction的框架/库(SDK)吗?

使用OpenGL ES纹理caching而不是glReadPixels来获取纹理数据

在iOS 5中,引入了OpenGL ES纹理caching,以提供从摄像机video数据到OpenGL的直接方式,而无需复制缓冲区。 在会话414 – WWDC 2011的OpenGL ES for iOS 5中进行了纹理caching的简要介绍。 我发现了一篇有趣的文章 ,最后进一步滥用了这个概念,并且通过简单地locking纹理,然后直接访问缓冲区来绕过对glReadPixels的调用。 由于iPad 2中使用的基于图块的渲染器(即使只使用1×1纹理), glReadPixels的速度非常慢。 但是,所描述的方法似乎处理比glReadPixels更快。 文章中提出的方法是否有效,是否可以用来提升依赖glReadPixels应用程序? 由于OpenGL处理​​与CPU并行的graphics数据, CVPixelBufferLockBaseAddress调用如何知道什么时候渲染完成而不与OpenGL交谈?

全屏YouTubevideo,旋转和状态栏(iOS)

我在当前的项目中遇到了一个问题,所以我创build了一个简单的应用程序,以查看是否可以隔离问题。 在我的应用程序委托我隐藏状态栏。 [application setStatusBarHidden:YES animated:NO]; 在我单一的视图控制器我有这样的代码: – (void)loadVideo { // HTML to embed YouTube video NSString *youTubeVideoHTML = @"<html><head>\ <body style=\"margin:0\">\ <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ width=\"%0.0f\" height=\"%0.0f\"></embed>\ </body></html>"; // Populate HTML with the URL and requested frame size NSString *html = [NSString stringWithFormat:youTubeVideoHTML, @"http://www.youtube.com/watch?v=VDRoBnL1gRg", 500, 500]; // Load the html into the webview [self.webview […]

YTPlayerView youtube-ios-player-helper暂停不工作

我遇到了Youtube youtube-ios-player-helper库的问题。 我可以将video加载到播放器中播放,但如果我点击暂停video停止几秒钟,然后再次开始播放。 令人难以置信的简单UIViewController代码来启动video是: – (void)viewDidLoad { [super viewDidLoad]; self.player = [[YTPlayerView alloc] initWithFrame:CGRectMake(X, Y, WIDTH, HEIGHT)]; self.player.delegate = self; [self.view addSubview:self.player]; [self.player loadWithVideoId:@"bQCjOm4p5jM"]; } 我使用NSLog检测了didChangeToState委托方法,如下所示: – (void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state { switch (state) { case kYTPlayerStatePlaying: NSLog(@"Started playback"); break; case kYTPlayerStatePaused: NSLog(@"Paused playback"); break; default: NSLog(@"didChangeToState %d", state); break; } } 在Xcode日志中,当我点击“播放”开始播放video时,我看到: didChangeToState 4 值4似乎没有在YTPlayerView.m定义。 […]