标签: avassetexportsession

AVAssetExportSession:无法完成操作

我用UIImagePickerController一个视频从MOV到MP4进行转码,结果是:

转码失败:操作无法完成

这是代码:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    NSLog(@"UIImagePickerController mediaType: %@", mediaType);
    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
        AVAsset *asset = [AVAsset assetWithURL:videoURL];
        NSLog(@"Video Link:%@", [videoURL absoluteString]);
        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
        if (nil == exportSession) {
            @throw [NSException exceptionWithName:@"Unknown Error" reason:@"Couldn't create AVAssetExportSession" userInfo:nil];
        }
        NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
        NSString *destinationPath = [documentsDirectory stringByAppendingString:@"/output123.mp4"];

        NSLog(@"Dest: %@", destinationPath);

        NSLog(@"Supported File Types: %@", [exportSession supportedFileTypes]);
        exportSession.outputURL …
Run Code Online (Sandbox Code Playgroud)

iphone avassetexportsession

2
推荐指数
1
解决办法
1887
查看次数

带有和没有断点的AVAssetExportSession

我在低质量转换中使用简单的视频压缩代码.我正在使用IOS-4.2.1在iphone 4中测试我的代码.问题是当我在没有断点的设备上测试我的代码时代码无法创建视频(它只是零创建kb文件或空文件)但是当我逐行使用断点检查这段代码时,它会生成一个完美的压缩视频,也可以在mac中的quicktime播放器上运行.压缩后我制作了这个视频文件的zip.

NSURL *videoURL=[[self.videourlarray objectAtIndex:i] valueForKey:UIImagePickerControllerReferenceURL];
        NSURL *outputURL = [NSURL fileURLWithPath:videoFile];

        [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
        exportSession.outputURL = outputURL;
        exportSession.shouldOptimizeForNetworkUse = YES;
        exportSession.outputFileType = AVFileTypeQuickTimeMovie;
        [exportSession exportAsynchronouslyWithCompletionHandler:^(void) 
         {
             NSLog(@"Export Complete %d %@", exportSession.status, exportSession.error);
             [exportSession release];
         }];
Run Code Online (Sandbox Code Playgroud)

thanx任何帮助......

iphone objective-c avfoundation ios4 avassetexportsession

1
推荐指数
1
解决办法
2332
查看次数

AVAssetExportSession无法在ios5中运行

在我的应用程序中,我使用AVAssetExportSession组合两个音频文件,它在早期的ios版本中工作正常.但在ios5设备中它无法正常工作.我得到的是一个错误

AVAssetExportSessionStatusFailed: Error Domain=AVFoundationErrorDomain Code=-11820 "Cannot Complete Export" UserInfo=0x1df1c0 {NSLocalizedRecoverySuggestion=Try exporting again., NSLocalizedDescription=Cannot Complete Export}
Run Code Online (Sandbox Code Playgroud)

我用于导出的代码如下所示

有没有人遇到过同样的问题?请提供宝贵的建议.我迫切需要解决这个问题..

//Export function to export the combined audios as one.
-(void)exportAudioFile:(AVComposition*)combinedComposition
{
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:combinedComposition
                                                                           presetName:AVAssetExportPresetPassthrough];
    NSArray *presets =[AVAssetExportSession exportPresetsCompatibleWithAsset:combinedComposition];
    NSLog(@"presets======%@",presets);
    NSLog (@"can export: %@", exportSession.supportedFileTypes);
    NSArray *dirs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectoryPath = [dirs objectAtIndex:0];
    exportPath = [documentsDirectoryPath stringByAppendingPathComponent:@"CombinedNew.m4a"];
    [[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil];
    exportURL = [NSURL fileURLWithPath:exportPath];
    exportSession.outputURL = exportURL;
    exportSession.outputFileType = @"com.apple.m4a-audio";
    exportSession.shouldOptimizeForNetworkUse = YES;
    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        NSLog …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c avfoundation ios5 avassetexportsession

1
推荐指数
1
解决办法
5770
查看次数

AVAssetExportSession发送取消导出

我正在制作一个视频应用程序,在其中使用AVAssetExportSession创建新视频。在创建视频时,我希望使用户能够取消视频创建。我遇到的问题是我不知道如何将取消请求发送到AVAssetExportSession,因为我假设它正在主线程上运行。一旦启动,我不知道如何发送停止请求?

我试过了但是没用

- (IBAction) startBtn
{

....

// Export
    exportSession = [[AVAssetExportSession alloc] initWithAsset:[composition copy] presetName:AVAssetExportPresetHighestQuality];
    [exportSession setOutputFileType:@"com.apple.quicktime-movie"];
    exportSession.outputURL = outputMovieURL;
    exportSession.videoComposition = mainComposition;


    //NSLog(@"Went Here 7 ...");

    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        switch ([exportSession status])
        {
            case AVAssetExportSessionStatusCancelled:
                NSLog(@"Canceled ...");
                break;
            case AVAssetExportSessionStatusCompleted:
            {
                NSLog(@"Complete ... %@",outputURL); // moview url
                break;
            }
            case AVAssetExportSessionStatusFailed:
            {
                NSLog(@"Faild=%@ ...",exportSession.error);
                break;
            }
            case AVAssetExportSessionStatusExporting:
                NSLog(@"Exporting.....");
                break;
        }
    }];
}

- (IBAction) cancelBtn
{
    exportSession = nil;
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ios avassetexportsession

1
推荐指数
1
解决办法
1506
查看次数

如何从录制的视频文件中提取音频

  • 你好,我是唯一的工作提上audiovideo文件。
  • 这在< iOS 8.0版本中有效,但在版本中无效>= iOS 8.0
  • 如何提取>= iOS 8.0版本中的音频?

objective-c avassetexportsession avmetadataitem ios8

1
推荐指数
1
解决办法
1586
查看次数

AVAssetExportSession videoComposition 未显示视频中的所有帧

我正在从 UIImage 数组制作视频。我成功地做到了并且所有图像都显示在视频中。我正在使用 AVAssetExportSession 导出视频,该视频也可以正常工作,除非我使用 AVAssetExportSession videoComposition 属性时,视频仅显示第一张图像。这是我的代码:

func mergeAudioVideoFiles(videoUrl:NSURL, audioUrl:NSURL)->NSURL
{
    let mixComposition : AVMutableComposition = AVMutableComposition()
    var mutableCompositionVideoTrack : [AVMutableCompositionTrack] = []
    var mutableCompositionAudioTrack : [AVMutableCompositionTrack] = []
    let totalVideoCompositionInstruction : AVMutableVideoCompositionInstruction = AVMutableVideoCompositionInstruction()


    //start merge

    let aVideoAsset : AVAsset = AVAsset(URL: videoUrl)
    let aAudioAsset : AVAsset = AVAsset(URL: audioUrl)

    mutableCompositionVideoTrack.append(mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: kCMPersistentTrackID_Invalid))
    mutableCompositionAudioTrack.append( mixComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid))

    let aVideoAssetTrack : AVAssetTrack = aVideoAsset.tracksWithMediaType(AVMediaTypeVideo)[0]
    let aAudioAssetTrack : AVAssetTrack = aAudioAsset.tracksWithMediaType(AVMediaTypeAudio)[0]
    do{
        try mutableCompositionVideoTrack[0].insertTimeRange(CMTimeRangeMake(kCMTimeZero, aVideoAssetTrack.timeRange.duration), ofTrack: aVideoAssetTrack, atTime: kCMTimeZero)

        try …
Run Code Online (Sandbox Code Playgroud)

ios avmutablecomposition avassetexportsession avasset swift

1
推荐指数
1
解决办法
1306
查看次数

减少使用AVAssetExportSession导出的视频的大小-iOS Swift

我目前以以下方式导出视频:

   let exporter = AVAssetExportSession.init(asset: mixComposition, presetName: AVAssetExportPreset1280x720)
   exporter?.outputURL = outputPath
   exporter?.outputFileType = AVFileType.mp4
   exporter?.shouldOptimizeForNetworkUse = true
   exporter?.videoComposition = mainCompositionInst
Run Code Online (Sandbox Code Playgroud)

15秒的视频消耗约20MB的数据。与Snapchat的2MB视频相比,这个数字似乎是完全不能接受的。

我已经降低了导出和捕获会话的质量(1280x720)。

该视频在自定义相机上拍摄。UIImagePickerController未使用。

AVAssetExportSession与默认设置一起使用。

有什么办法可以减小视频尺寸?非常感谢!

编辑1: 我尝试使用此库:https : //cocoapods.org/pods/NextLevelSessionExporter

不幸的是,这会造成尺寸问题,并删除了我的音频:

// Creating exporter
    let exporter = NextLevelSessionExporter(withAsset: mixComposition)
    exporter.outputURL = outputPath
    exporter.outputFileType = AVFileType.mp4
    exporter.videoComposition = mainCompositionInst

    let compressionDict: [String: Any] = [
        AVVideoAverageBitRateKey: NSNumber(integerLiteral: 2500000),
        AVVideoProfileLevelKey: AVVideoProfileLevelH264BaselineAutoLevel as String,
        ]

        exporter.videoOutputConfiguration = [
            AVVideoCodecKey: AVVideoCodecType.h264,
            AVVideoWidthKey: NSNumber(integerLiteral: 1280),
            AVVideoHeightKey: NSNumber(integerLiteral: 720),
            AVVideoScalingModeKey: AVVideoScalingModeResizeAspectFill,
            AVVideoCompressionPropertiesKey: compressionDict
        ] …
Run Code Online (Sandbox Code Playgroud)

avfoundation avassetexportsession swift avkit ios11

0
推荐指数
2
解决办法
1645
查看次数