相关疑难解决方法(0)

UIImagePickerController允许编辑= YES,修剪后获得未修剪的视频

问题:

当我在UIImagePickerControllerallowEditing设置为YES的情况下录制视频,然后使用视频捕获后的trim-interface修剪视频时,我返回原始视频,而不是修剪过的视频.

建立:

我正在使用UIImagePickerController视频捕获,allowsEditing属性设置为YES.在delegate方法中didFinishPickingMediaWithInfo,我使用UIImagePickerControllerMediaURLinfo NSDictionary来获取路径URL.官方的Apple文档遗憾的是没有提到任何已修改的视频网址.

码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];

    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0)
        == kCFCompareEqualTo) {

        self.tempVideoPath = [[info objectForKey:
                                UIImagePickerControllerMediaURL] path];
    }
}
Run Code Online (Sandbox Code Playgroud)

我意识到这个问题类似于其他 的人在这里张贴在SO,但没有明确的答案,为什么它不工作或者为什么选择是即使在那里.如果它是这样的,我不明白为什么选择器有'allowsEditing'属性.

编辑:在我收到的信息词典中有以下键:

info: {
    UIImagePickerControllerMediaType = "public.movie";
    UIImagePickerControllerMediaURL = "file://localhost/private/var/mobile/Applications/F12E4608-FE5A-4EE3-B4E2-8F7D2508C4C8/tmp/capture-T0x21d810.tmp.wabFCC/capturedvideo.MOV";
    "_UIImagePickerControllerVideoEditingEnd" = "5.498333333333333";
    "_UIImagePickerControllerVideoEditingStart" = "4.273402690887451";
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着我们必须自己修剪这些数据?那么Apple文档对此并不十分清楚.如果是这样,你知道一个好的做法吗?

iphone video uiimagepickercontroller ipad ios

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

如何使用didFinishPickingMediaWithInfo从Video中查找"所选帧"的开始和结束持续时间?

我在做慢动作使用音频和视频AVFoundation(视频)和狄拉克(音频).作为其中的一部分,我将视频显示为用户将选择帧进行慢动作的帧.例如:10分钟视频的5-6分钟.

我必须通过我的应用程序本身的录像机向用户显示两种视频.2.来自画廊.

案例1:没问题 现在,我可以通过录像机录制视频,并将视频显示为框架供用户选择.一旦用户选择一些帧(例如:10分钟记录视频的5到6分钟),使用下面的代码,我能够找到所选帧或视频的开始/结束持续时间.

NSNumber *start = [info objectForKey:@"_UIImagePickerControllerVideoEditingStart"];
NSNumber *end = [info objectForKey:@"_UIImagePickerControllerVideoEditingEnd"];

int startMilliseconds = ([start doubleValue] * 1000);
int endMilliseconds = ([end doubleValue] * 1000);
Run Code Online (Sandbox Code Playgroud)

案例2: 在这种情况下,我可以从图库中选择视频,并以帧的形式显示给用户进行选择.但是,当我尝试查找视频的开始/结束持续时间时,就像我在案例1中使用相同的代码所做的那样,它不起作用.开始/结束时间我总是"0".

iphone objective-c avfoundation uiimagepickercontroller ios

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

如何使用Swift修剪视频文件并将其转换为20秒视频?

我要修剪视频文件。我只想从图库中选择视频并将其转换为15秒的视频。我正在使用Objective C的 链接。它对我来说很好用,但我是Swift语言的初学者。谁能帮助我在Swift中转换此代码?

以下是我在Objective C中的代码:

-(void)cropVideo:(NSURL*)videoToTrimURL{
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoToTrimURL options:nil];
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *outputURL = paths[0];
    NSFileManager *manager = [NSFileManager defaultManager];
    [manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil];
    outputURL = [outputURL stringByAppendingPathComponent:@"output.mp4"];
    // Remove Existing File
    [manager removeItemAtPath:outputURL error:nil];

    //
    exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
    exportSession.shouldOptimizeForNetworkUse = YES;
    exportSession.outputFileType = AVFileTypeQuickTimeMovie;
    CMTime start = CMTimeMakeWithSeconds(1.0, 600); // you will modify time range here
    CMTime duration = CMTimeMakeWithSeconds(19.0, 600); …
Run Code Online (Sandbox Code Playgroud)

crop video-processing ios swift2

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

如何在iPhone应用程序中获取录制视频的持续时间

我在iPhone录制视频我希望获得录制的录制持续时间.有没有办法获得录制的视频持续时间.

这是我获取录制视频和路径的代码.

if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie])
{
    NSURL*videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

    videoData = [[NSData dataWithContentsOfURL:videoURL] retain];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"dd-MM-yyyy_HH:mm:SS"];

    NSDate *now = [[[NSDate alloc] init] autorelease];
    NSDate* theDate = [dateFormat stringFromDate:now];

    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];

    NSString*testUser=TitleTextField.text;

    NSString *videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,testUser]] autorelease];

    BOOL success = [videoData …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c video-recording

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