- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 OpenGL iOS 应用程序,我正在使用 AVAssetReader 从视频中读取帧并使用视频内容为一个简单模型制作纹理。
一切都按预期工作,除了我在辅助线程上使用 AVAssetReader 并在主线程上绑定(bind)纹理。问题是视频逐帧运行非常慢。
有什么方法可以使视频位置与当前时间同步,从而不会出现慢动作?
这是我阅读视频的方式(在辅助线程上):
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* fullPath = [[documentsDirectory stringByAppendingPathComponent:@"sample_video.mp4"] retain];
NSString *urlAddress = fullPath;
NSURL *url = [NSURL fileURLWithPath:urlAddress];
AVURLAsset *urlAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *tracks = [urlAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *track = [tracks objectAtIndex:0];
NSDictionary* trackDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA]
forKey:(id)kCVPixelBufferPixelFormatTypeKey];
AVAssetReaderTrackOutput *asset_reader_output = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSettings:trackDictionary];
AVAssetReader *asset_reader = [[AVAssetReader alloc] initWithAsset:urlAsset error:nil];
[asset_reader addOutput:asset_reader_output];
[asset_reader startReading];
while (asset_reader.status == AVAssetReaderStatusReading){
CMSampleBufferRef sampleBufferRef = [asset_reader_output copyNextSampleBuffer];
if (sampleBufferRef){
[self performSelectorOnMainThread:@selector(bindNewFrame) withObject:nil waitUntilDone:YES];
}
CMSampleBufferInvalidate(sampleBufferRef);
CFRelease(sampleBufferRef);
}
[pool release];
最佳答案
我通过在另一个函数中移动 while 循环的内容然后使用 NSTimer 以 1.0/track.nominalFrameRate 的速率调用该函数来解决这个问题
关于iphone - 如何在辅助线程上以与在主线程上相同的速率运行 AVAssetReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363728/
我在使用 AVAssetReader 时遇到问题,无法从 iPod 库获取样本并通过音频队列进行流式传输。我无法找到任何这样的示例,因此我尝试实现自己的示例,但似乎 AssetReader 在音频队列
AVAssetReader 很棒,但我只能看到如何将它与本地 Assets 、文件或我猜的组合一起使用, 所以, assetReader = try AVAssetReader(asset: self
我有一个 OpenGL iOS 应用程序,我正在使用 AVAssetReader 从视频中读取帧并使用视频内容为一个简单模型制作纹理。 一切都按预期工作,除了我在辅助线程上使用 AVAssetRead
我正在尝试将示例从 objective-c 转换为 Monotouch,但遇到了一些困难。 基本上我想读取视频文件,并将帧一帧一帧地解码为 opengl 纹理。 这样做的关键是使用 AVAssetRe
我想通过 AVAssetReader 阅读视频样本,但遇到了各种障碍。一些帖子代码可以从应用程序包中名为“Movie.m4v”的视频设置 AVAsset 并使用 AVAssetReader 循环播放视
我正在编写一个 iPad 应用程序,我需要在其中加入不同分辨率的 mp4 文件。为此,我结合使用 AVAssetReader 来读取 mp4 源文件,并使用 AVAssetWriter 将这些源文件写
如何计算使用 AVAssetReader 从 iPod 库获取的歌曲的采样率。我想我可以很容易地获得样本的数量(无论如何我已经成功地读取了样本..),但我不知道在哪里可以获得歌曲的长度(以秒为单位)。
您好,我一直在尝试弄清楚如何在 GPUImage2 中实现电影循环,但到目前为止还没有成功。 GPUImage2 中的 MovieInput 类使用 AVAssetReader 播放电影文件,所以我研
我需要从 AVAsset 中读取音频和视频的原始样本。做这个的最好方式是什么?我可以将多个 AVAssetReaderTrackOutput 对象附加到一个 AVAssetReader。但是 [AVA
我正在使用 AVAssetReader 从视频文件中获取各个帧。我想知道如何播放 Mp4 文件中的音频。 方法[player play]的返回值为false,所以没有声音播放,但是为什么 谢谢。 创建
我正在尝试从 MP3 中获取 PCM 数据。我正在使用 AVAssetReaderOutput,它似乎可以很好地读取数据。 while(true) { nextBuffer = [assetR
我正在使用 AVAssetReader 和 AVAssetReaderTrackOutput 从 iOS 上的 iPod 库中读取音频 Assets 。但是,当我读取数据并将 block 放回原处时,
我已经按照此处讨论的方式实现了搜索(AVAssetReader Seeking),但是在拆除 AVAssetReader 并构建新的 AVAssetReader 时当然会有明显的延迟(因为一旦开始读取
在结合了几个 SO 问题(如 this one)的答案后,我已经设法使用 AVAssetReader 从 MPMediaItem 获取原始数据。和 this one和一个不错的blog post .我
根据我的研究.. 人们一直说它是基于不匹配/错误的格式.. 但我对输入和输出都使用 lPCM 格式.. 你怎么会出错呢?我得到的结果只是噪音..(像白噪音) 我决定只粘贴我的整个代码..也许这会有所帮
如何通过 AVAssetReader 读取音频样本?我找到了使用 AVAssetReader 进行复制或混合的示例,但这些循环始终由 AVAssetWriter 循环控制。是否可以只创建一个 AVAs
我使用assetUrl 从iPod 库中读取歌曲(代码名为audioUrl)我可以以多种方式播放它,我可以剪切它,我可以用它进行一些进动,但是......我真的不明白我要用这个 CMSampleBuf
情况: 我正在尝试使用一些参数导出视频,例如视频比特率、音频比特率、帧速率、更改视频分辨率等。请注意,我让用户以分数设置视频帧速率;喜欢用户可以设置视频帧速率,比如 23.98。 我用 AVAsset
我在我的程序中使用以下代码从录音中提取样本。我以为我理解了这个过程,但是当我阅读 Apples 开发者指南时,我并不完全理解 AVAssetReader 和 AVAssetReaderTrackOut
使用 AVAssetReader 读取文件时出现 Exc_bad_Access 异常。 该文件位于文档目录中,格式为 m4a。这是我正在使用的代码。无法弄清楚我在哪里弄错了: NSArray *pa
我是一名优秀的程序员,十分优秀!