在这种情况下,xcode会挂在视频剪辑上很少且随机,并且奇怪的是iPhone屏幕记录也会挂起

问题描述

iOS应用程序启用了在大多数情况下都可以完美工作的视频修剪(本地录制的视频,相机胶卷访问视频以及本地录制的应用程序屏幕录制的视频-都出现相同的问题)。偶尔且随机地,在较长的延迟与修剪的导出部分上永远出现的旋转器之间找到某个位置-永远不要保存它。

令人惊讶的是-当我们遇到此问题时,iphone屏幕录像机也会在很长一段时间内挂起,甚至可能永远挂起(只能等待这么长时间...)。意思是停止,而不是立即说出保存内容并转到相机胶卷,这不会发生很长时间到永远。

其他信息:

  • 在这种“状态”下,使用相机胶卷视频构建的独立应用程序也会挂在那里。
  • 我不确定我们的应用会引起问题。关闭应用程序并重新启动时-无法清除。似乎不得不重新启动设备或有时等待很长时间。
  • 无法复制
  • 大多数时候在一台设备上看到过,但确实在另一台设备上出现过。
  • 尝试过的第三部分应用程序也可以修剪-有效。另外-iPhone原生相机仍然可以使用。
  • 短片和屏幕记录
  • 如果清除此状态-屏幕记录和修剪完成同时进行。

问题:

  1. 任何建议的替代设置以修剪视频。第三方在这种状态下工作,因此有解决方案。或其他方法-ffmpeg只是我想到的一种,但是太慢了。
  2. 我们的应用是否可能导致此问题?搞砸iPhone屏幕录像机对我们来说似乎很难...
  3. 任何可能导致iphone屏幕记录保存延迟的吸烟枪。

感谢任何想法-在任何地方都找不到真正的东西。

这是几乎始终有效的代码-卡在“正在导出...”上-如果离开应用然后返回-说“导出失败”

    if (self.phasset == nil) {
            [self trimOriginal];
            self.isExportInProgress = NO;
            return;
        }
        
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
        alertController.popoverPresentationController.sourceView = self.view;
        alertController.popoverPresentationController.sourceRect = CGRectMake(self.view.bounds.size.width / 2.0,self.view.bounds.size.height / 2.0,1.0,1.0);
        UIAlertAction *saveAction = [UIAlertAction actionWithTitle:@"Save as New Clip" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
            [self showSpinnerWithMessage:@"Exporting ..."];
            
            __weak TrimViewController *weakSelf = self;
            Nsstring *path = self.tempVideoPath;
            
            [self exportAsset:self.asset preset:AVAssetExportPresetPassthrough completion:^(BOOL success,NSURL * _Nullable url) {
                
                __strong TrimViewController *strongSelf = weakSelf;
                
                if (!strongSelf) { return; }
                
                if (!strongSelf) {
                    [strongSelf hideSpinner];

                    [Utils showAlert:strongSelf title:@"Error" message:@"Export Failed"];
                    strongSelf.isExportInProgress = NO;
                    return;
                }
                
                strongSelf.spinnerLabel.text = @"Saving ...";
                
                NSURL *movieUrl = [NSURL fileURLWithPath:path];
                AVAsset *trimmed_asset = [AVAsset assetWithURL:movieUrl];
                                        
                [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                    [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:movieUrl];
                } completionHandler:^(BOOL saved,NSError * _Nullable error) {
                    
                    dispatch_async(dispatch_get_main_queue(),^{
                        
                        strongSelf.isExportInProgress = NO;
                        
                        [strongSelf hideSpinner];
                        
                        if (error) {
                            [Utils showAlert:strongSelf title:@"Error" message:@"Video Saving Failed"];
                        } else {
                            strongSelf.saveAsNewClip = FALSE;
                            [strongSelf.delegate trimedVideoAsset:strongSelf asset:trimmed_asset];
                        }
                    });
                }];
            }];

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)