jjzjj

AVAssetReader

全部标签

ios - 将 CMSampleBufferRef 处理到数组会导致崩溃

我想更改电影帧的顺序,然后将它们写回新的视频文件。对我来说,将它们全部放在数组中会容易得多,但是将缓冲区样本复制到数组的过程会导致在真实设备上崩溃(但在模拟器中没问题)。我在Xcode中只能看到消息:在此过程中“失去与DEVICE_NAME的连接”-没有崩溃日志等。所以让我们从不会引起任何问题的事情开始:打印每一帧的时间戳CMSampleBufferRefsample;while(sample=[readerOutputcopyNextSampleBuffer]){CMTimetimestamp=CMSampleBufferGetPresentationTimeStamp((__bri

ios - 使用 AVAssetReader 读取 HLS .ts 段

为了从HLS实时流中提取原始CMSampleBufferRef(用于重新编码视频),我尝试使用AVAssetReader来读取HLS流(.m3u8文件)。由于AVAssetReader不支持直接从网络流读取,我尝试先将HLSm3u8索引文件中列出的.ts文件下载到本地驱动器,然后使用AVAssetReader将其读回。但是,当我尝试使用AVAssetReader打开.ts文件时,出现错误“不支持此媒体格式”(ErrorDomain=AVFoundationErrorDomainCode=-11828“CannotOpen”UserInfo=0x7fd3aa723570{NSLocali

ios - AVAssetReader 使 mp3 文件变大?

在执行以下代码后,我试图从用户库中获取的歌曲文件似乎已膨胀到50MB。但是,我知道这首歌有7.2MB。我想将音乐文件(无DRM)附加到电子邮件中,但50MB显然太大了。我使用的代码如下。任何帮助将不胜感激:)-(void)findSong{MPMediaQuery*query=[MPMediaQuerysongsQuery];NSArray*songsQuery=[querycollections];//createmediaitemMPMediaItemCollection*mySong=[songsQueryobjectAtIndex:1];NSLog(@"songname:%@"

ios - 使用 AVAssetReader 读取多个轨道

我需要从AVAsset中读取音频和视频的原始样本。做这个的最好方式是什么?我可以将多个AVAssetReaderTrackOutput对象附加到一个AVAssetReader。但是[AVAssetReaderOutputcopyNextSampleBuffer]是同步的。按时间顺序读取两个轨道的最佳方法是什么?为每个AVAssetReaderTrackOutput分配一个线程是否安全? 最佳答案 好问题-每个AVAssetReaderTrackOutput一个线程似乎在iOS上工作正常,但是否应该没有记录。根据AVFoundatio

ios - 如何通过 AVAssetReader 播放声音

我正在使用AVAssetReader从视频文件中获取各个帧。我想知道如何播放Mp4文件中的音频。方法[playerplay]的返回值为false,所以没有声音播放,但是为什么谢谢。创建AVAssetReaderNSURL*url=[NSURLfileURLWithPath:[[NSBundlemainBundle]pathForResource:@"zhang"ofType:@"mp4"]];AVURLAsset*avasset=[[AVURLAssetalloc]initWithURL:urloptions:nil];AVAssetTrack*track1=[[avassettrac

objective-c - AVAssetReader 到 AudioQueueBuffer

目前,我正在做一个小测试项目,看看我是否可以从AVAssetReader获取样本,以便在iOS上使用AudioQueue进行播放。我读过这个:(PlayrawuncompressedsoundwithAudioQueue,nosound)还有这个:(HowtocorrectlyreaddecodedPCMsamplesoniOSusingAVAssetReader--currentlyincorrectdecoding),这两者实际上都有帮助。在阅读之前,我根本听不到任何声音。现在,我能听到声音了,但音频播放速度超快。这是我第一次涉足音频编程,非常感谢任何帮助。我这样初始化读取器:NS

iphone - 如何使用 AVAssetReader 和 AVAssetWriter 来创建 AAC 文件?

各位!我正在处理一个应用程序。它可以录制音频文件并邮寄给其他人。音频文件保存为(.aac)文件。然后我想继续录制我已经保存为.aac文件的文件。所以我用了AVAssetReader和AVAssetWriter来实现它。但我失败了!以下是我的代码:AVMutableComposition*mixComposition=[AVMutableCompositioncomposition];NSURL*url=[NSURLfileURLWithPath:[DOCUMENTS_FOLDERstringByAppendingPathComponent:buttonTitle]];NSURL*ano

objective-c - iPod 库中的 .m4a 原始数据无法播放

所以我面临着一个非常奇怪和奇怪的问题,想知道是否有其他人遇到过这个问题。我正在从手机音乐库中获取MPMediaItem的原始数据,然后通过HTTP将其发送出去以在其他地方播放。我的问题出现的地方是当我从.m4a类型的文件中获取原始数据时,它似乎丢失了一些片段。例如,如果我从iTunes检查的原始文件是7.4mb,那么我从我的代码中得到的文件大小是7.3mb。我做了一些研究,发现.m4a文件实际上是一个封装,我认为我没有得到文件的封装只是原始音乐数据,因此它是不可识别的。这是我的代码,它为我提供了来自MPMediaItem的原始音乐数据NSError*error=nil;MPMediaQ

ios - 如何使用 AVAssetReader 和 AVAssetWriter 控制视频帧率?

我们正在尝试了解如何控制/指定我们使用AVAssetReader和AVAssetWriter编码的视频的帧速率。具体来说,我们正在使用AVAssetReader和AVAssetWriter来转码/编码/压缩我们从照片/视频库访问的视频。我们能够控制比特率、宽高比变化等,但无法弄清楚如何控制帧率。具体来说,我们希望能够将5分钟长的30FPS视频作为输入,并以15FPS的速度发出5分钟的视频。我们当前处理样本缓冲区的循环是:[writerstartWriting];[writerstartSessionAtSourceTime:kCMTimeZero];[videoReaderstartR

ios - 当应用程序在后台时,AVAssetReader 将无法正确初始化,因此无法开始阅读

在初始化AVAssetReader时,我注意到大约20%的时间它无法开始阅读。下面是代码片段,它在代码停止20%的地方结束。'startReading'调用返回NO。有人知道为什么会这样吗?我在这里错过了什么吗?我还应该注意到这段代码经常被执行。它可能是大约10个视频,一个接一个地按顺序处理。因此,大约2或3个视频将无法处理,因为“startReading”调用将返回NO。更新:通过更多测试,我发现当应用程序进入后台时它总是失败。因此,当应用程序处于后台时,AVAssetReader无法“开始阅读”。有什么方法可以让它在应用程序处于后台时运行吗??NSError*error=nil;N