Tag: avasset

AVAssetWriter可以使用透明度编写文件吗?

我用AVAssetWriter编写的每个文件都有一个黑色背景,如果我包含的图像不填充整个渲染区域。 有没有办法用透明度来书写? 这里是我用来获取像素缓冲区的方法: – (CVPixelBufferRef)pixelBufferFromCGImage:(CGImageRef)image { CGSize size = self.renderSize; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey, [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey, nil]; CVPixelBufferRef pxbuffer = NULL; CVPixelBufferPoolCreatePixelBuffer(NULL, self.adaptor.pixelBufferPool, &pxbuffer); CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, size.width, size.height, kCVPixelFormatType_32ARGB, (__bridge CFDictionaryRef) options, &pxbuffer); if (status != kCVReturnSuccess){ NSLog(@"Failed to create pixel buffer"); } CVPixelBufferLockBaseAddress(pxbuffer, 0); void *pxdata = […]

将PHAsset(video)同步转换为AVAsset

我需要使用AVAsset对象,才能使用AVPlayer和AVPlayerLayer进行播放。 由于AssetsLibrary已被弃用,我开始使用Photos框架。 现在我已经到了我有一个PHAsset对象的数组,我需要将它们转换为AVAsset。 我尝试通过PHFetchResult枚举并使用PHAsset的本地化描述来分配一个新的AVAsset,但是当我播放它时似乎没有显示任何video。 PHAssetCollection *assetColl = [self scaryVideosAlbum]; PHFetchResult *getVideos = [PHAsset fetchAssetsInAssetCollection:assetColl options:nil]; [getVideos enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) { NSURL *videoUrl = [NSURL URLWithString:asset.localizedDescription]; AVAsset *avasset = [AVAsset assetWithURL:videoUrl]; [tempArr addObject:avasset]; }]; 我假设本地化的描述不是video的绝对url。 我也偶然发现了PHImageManager和requestAVAssetForVideo,但是,当涉及video的选项参数没有isSynchrounous属性时,图像选项参数就是这种情况。 PHVideoRequestOptions *option = [PHVideoRequestOptions new]; [[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:option resultHandler:^(AVAsset * _Nullable avasset, AVAudioMix * _Nullable audioMix, […]

每次从Swift iOS的Url获取相同的video缩略图

我正在Swift3中开发基于video的应用程序。 根据video持续时间,我有一个videourl和一个范围滑块,用户可以从滑块中select任何最小值和最大值。 如果假设用户select了最小值3秒和最大值7秒,那么在这段时间内,我需要生成一个video缩略图。 为此,我正在使用AVAssetImageGenerator来生成这个,我尝试了下面的代码来实现这一点: func createThumbnailOfVideoFromFileURL(_ strVideoURL: URL) -> UIImage?{ let asset = AVAsset(url: strVideoURL) let assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset) assetImgGenerate.appliesPreferredTrackTransform = true let time = CMTimeMake(1, 30) let img = try? assetImgGenerate.copyCGImage(at: time, actualTime: nil) guard let cgImage = img else { return nil } let frameImg = UIImage(cgImage: cgImage) return frameImg […]

如何解决iOS中的video定位问题

我正在使用一个应用程序,用户从照片中挑选video并将其上传到服务器。 由于我的服务器是.Net服务器,video被旋转。 我知道问题的原因可能是相同的情况下的形象(你可以参考我以前的回答https://stackoverflow.com/a/10601175/1030951 ),所以我GOOGLE了,并得到了一个代码来解决video方向 ,我从RayWenderlich.com获得了一个代码,并按照以下方式修改。 现在我的输出video工作正常,但video静音。 它播放,但不播放audio。 请帮助我,如果我失去了一些东西。 我传递信息字典-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info方法 – (void)fix:(NSDictionary*)pobjInfoDirectory withFileName:(NSString*)pstrOutputFileName { firstAsset = [AVAsset assetWithURL:[pobjInfoDirectory objectForKey:UIImagePickerControllerMediaURL]]; if(firstAsset !=nil) { //Create AVMutableComposition Object.This object will hold our multiple AVMutableCompositionTrack. AVMutableComposition* mixComposition = [[AVMutableComposition alloc] init]; //VIDEO TRACK AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; [firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) ofTrack:[[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil]; […]

如何在iOS上捕获的video中添加水印

我想知道是否有人可以告诉我如何能做到这一点。 如果一直在考虑一些解决scheme: 从捕获的video中创build单个图像,然后将其合并到每个图像,然后创build一个新的AVAsset …听起来有点复杂,你不觉得吗? 合并2个video,其中一个是透明的(持有水印的那个),另一个是用相机捕获的资产。