jjzjj

avassetwriterinput

全部标签

ios - 将视频写入文件在 iPad 3 上正常工作约 5 秒,然后失败

我正在创建这个应用程序,它是一个相机。因为它是为iOS9创建的,所以我必须在旧设备上对其进行测试。在那种情况下是iPad3。该应用程序在新的iPadPro9.7上完美运行,但在iPad3上一段时间后无法写入视频。发生的情况是,应用程序开始正常写入帧但突然失败。我正在使用这种方法来存储每一帧:-(void)writeToFileFrame:(CIImage*)finalImagewithSampleTime:(CMSampleTimingInfo)sampleTimeandSize:(CGSize)size{if(!_assetWriter){if(![selfinitializeAss

ios - 使用 AVAssetWriter 录制视频时获取视频时长

我有一个类可以将视频和音频录制到.mp4文件中。我使用AVAssetWriter,AVAssetWriterInput来完成这样的任务如何在使用这种方法(AVAssetWriter)录制视频时获取视频的时长? 最佳答案 你可以在开始startSession时保存开始时间letstartTimeStamp=CMSampleBufferGetPresentationTimeStamp(sample)fileWriter.startSession(atSourceTime:startTimeStamp)startTime=Double(s

ios - 录音时静音音频 AVAssetWriterInput

我正在使用AVAssetWriter分别从AVCaptureVideoDataOutput和AVCaptureAudioDataOutput附加CMSampleBuffer来录制视频和音频。我想做的是在录制过程中由用户自行决定是否静音。我假设最好的方法是创建一个空的CMSampleBuffer就像CMSampleBufferRefsb;CMSampleBufferCreate(kCFAllocatorDefault,NULL,YES,NULL,NULL,NULL,0,1,&sti,0,NULL,&sb);[_audioInputWriterappendSampleBuffer:sb];

ios - 苹果 iOS : [AVAssetWriterInput appendSampleBuffer:] Cannot call method when status is 0

我正在尝试将CMSampleBufferRefs附加到AVAssetWriterInput,但我一直遇到错误崩溃:[AVAssetWriterInputappendSampleBuffer:]Cannotcallmethodwhenstatusis0代码:在viewDidLoad中NSArray*cachePaths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);NSString*cacheDirectory=[cachePathsfirstObject];NSString*fil

objective-c - [AVAssetWriterInput requestMediaDataWhenReadyOnQueue :usingBlock:] 的内存问题

我正在编写一个库以使用AVFoundation将Assets导出到文件。我创建了一个读取器和一个写入器,将输入和输出连接到这些,然后对输入调用requestMediaDataWhenReadyOnQueue方法以开始提取数据。提供给此方法的block回调看起来有点像这样:[inputrequestMediaDataWhenReadyOnQueue:queueusingBlock:^{while([inputisReadyForMoreMediaData]){CMSampleBufferRefbuffer;//Thetrackhassomemoredataforusif([readers

iphone - 如何在 iOS 上播放从套接字手动加载的视频?

这个比较棘手......我正在尝试在iOS上通过网络流式传输视频(H264)。但是,我通过远程服务器的开放套接字(使用CocoaAsyncSocket)将视频数据放入缓冲区,因此我没有可用于创建AVAsset或MPMoviePlayer的视频URL。该视频是实时流,因此如果有任何不同,数据将不断出现(即没有设置持续时间)。我必须这样做,因为服务器是RTSP服务器。我已经编写了自己的RTSP客户端来发送命令和接收响应,现在我正在尝试对来自连接的视频数据做一些有用的事情。关于如何播放此视频有什么想法吗?我目前唯一能想到的就是以某种方式保存到文件并加载它(但我不知道它是如何工作的,因为我将不

ios - AVAssetWriter 编解码器类型 hevc

我尝试使用AVAssetWriter将H264视频转码为HEVC,但在iPhone6s上失败了。据推测,iPhone6s支持HEVC进行转码,而不是实时视频编码。相同的代码适用于iPhone7及更高版本。如果iPhone6s不支持HEVC编解码器,我们如何在运行时以编程方式确定支持的编解码器?letbitrate=trackBitrate/5lettrackDimensions=trackSizeletcompressionSettings:[String:Any]=[AVVideoAverageBitRateKey:bitrate,AVVideoMaxKeyFrameInterval

ios - 如何在 iOS 上将 h.264 文件包装为 mp4

我有一个h.264文件(来自树莓派相机),我想将其打包为mp4。我不需要播放它、编辑它、添加或删除任何内容或访问像素。很多人都问过有关为iOS编译ffmpeg或流式传输实时数据的问题。但鉴于ffmpeg命令行与其iOS构建之间缺乏简单的转换,我很难弄清楚如何实现这个简单的命令:ffmpeg-iinput.h264-vcodeccopyout.mp4我并不特别关心这是否通过ffmpeg、avconv或AVFoundation(或其他东西)发生。看起来在设备上应该不难做到这一点。 最佳答案 这并不难,但需要一些工作和对细节的关注。这是我

ios - 制作一个真正的慢动作视频,都是慢动作

我正在创建我的这个应用程序并以120和240fps的速度拍摄视频。当我在Mac上观看这些视频时,我会在时间线下方看到这些标记。这些标记是可编辑的,代表慢动作区域。因此,视频以正常帧速率开始,以慢动作进入并在结束时返回到正常帧速率。我没有把那些标记放在那里,iOS做到了。在那种情况下,我想知道是否有办法删除它们并使视频完全慢动作。我只是正常初始化AVAssetWriter,就像我对非慢动作视频所做的那样。另外,我注意到这些“慢动作”视频并不是真正的慢动作,而是慢动作的“配方”,只能在使用QuickTimeX的iOS设备和Mac上正确播放。甚至QuickTime7也不能正确播放它们。无论如

ios - 以任意角度旋转 CMSampleBuffer 并在 swift 3 中附加到 AVAssetWriterInput

我将示例缓冲区转换为CGContext。然后我将转换应用到上下文并从中创建一个CIImage,然后显示在UIImageView中。同时我想将其附加到AVAssetWriterInput以创建这些转换的电影。到目前为止,我对上下文应用的转换没有任何效果。当我在ImageView中显示所谓的转换图像时。它看起来完全一样。更新:我设法将示例缓冲区记录到视频文件中(尽管由于方向错误,它仍然被拉伸(stretch))。我以这段代码为基础http://geek-is-stupid.github.io/blog/2017/04/13/how-to-record-detect-face-overlay