小编The*_*Dev的帖子

如何减少使用UIImagePickerController创建的视频的文件大小?

我有一个应用程序,允许用户录制视频,UIImagePickerController然后将其上传到YouTube.问题是UIImagePickerController创建的视频文件是巨大的,即使视频只有5秒长.例如,5秒长的视频是16-20兆字节.我想保持540或720质量的视频,但我想减少文件大小.

我一直在尝试AVFoundation并AVAssetExportSession试图获得更小的文件大小.我试过以下代码:

AVAsset *video = [AVAsset assetWithURL:videoURL];
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:video presetName:AVAssetExportPresetPassthrough];
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeMPEG4;
exportSession.outputURL = [pathToSavedVideosDirectory URLByAppendingPathComponent:@"vid1.mp4"];
[exportSession exportAsynchronouslyWithCompletionHandler:^{
    NSLog(@"done processing video!");
}];
Run Code Online (Sandbox Code Playgroud)

但这并没有减少文件大小.我知道我正在做的事情是可能的,因为在Apple的照片应用程序中,当您选择"在YouTube上分享"时,会自动处理视频文件,因此它的小到可以上传.我想在我的应用程序中做同样的事情.

我怎么能做到这一点?

video file-upload objective-c avfoundation ios

56
推荐指数
7
解决办法
6万
查看次数

NSWindowController与NSViewController之间的区别

我来自iOS背景并开始学习Cocoa.在iOS上,除非我们有多个目标iPad,iPhone我们通常有一个窗口并使用管理屏幕UIViewControllers.每个新屏幕大部分时间都会映射到一个UIViewController.

然而,对于可可,这似乎是一个新的屏幕/窗口管理的地方NSWindow,它的子组件由管理NSViewController.因此,如果我有多个窗口应用程序,我应该NSWindowController为每个窗口分开.

这种方法是正确的还是我有误解?

cocoa cocoa-touch objective-c nswindowcontroller cocoa-design-patterns

27
推荐指数
2
解决办法
9668
查看次数

动画后的iOS UIScrollView动画

我想要一些类似于Flipboard的东西,在应用程序启动时轻微翻动动画.启动时Flipboard上下轻微翻转,以显示用户不熟悉它可翻转的界面.

我有一个UIScrollView我想动画一下,向用户显示它是可滚动的.所以我想向后滚动一点点.UIScrollView有一条setContentOffset:animated:没有完成子句的消息.我发现调用它两次导致看似没有动画.如果我想在动画之后连续播放动画怎么办?

编辑:谢谢Levi的答案.并记录在案,有UIViewAnimationOptionAutoreverseUIViewAnimationOptionRepeat我可以使用.所以这就是我最终得到的结果.

CGPoint offset = self.scrollView.contentOffset;
CGPoint newOffset = CGPointMake(offset.x+100, offset.y);

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAutoreverse |UIViewAnimationOptionRepeat animations:^{
    [UIView setAnimationRepeatCount: 2];
    [self.scrollView setContentOffset:newOffset animated: NO];
} completion:^(BOOL finished) {
    [self.scrollView setContentOffset:offset animated:NO];
}];
Run Code Online (Sandbox Code Playgroud)

animation uiscrollview ios

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

Objective-C协议和类别可以继承吗?

我对Objective-C协议和类别的一些概念感到困惑.

协议和类别可以由Objective-C中的子类继承吗?

iphone protocols objective-c ios objective-c-category

17
推荐指数
2
解决办法
9278
查看次数

UIImage imageNamed需要pathForResource吗?

在创建使用时,使用该NSBundle方法搜索图像的路径有多必要?我看到教程代码只是直接指定图像的名称,然后代码更加努力地找到路径.pathForResourceUIImageimageNamed

根据我的经验,我一直只是直接使用这个名字而且它总是很好用.我以为它会自动知道如何找到图像.有多重要或在什么情况下需要做更多的事情?

iphone objective-c uiimage nsbundle

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

当键盘没有进行更改时,检测UITextField内容的变化

我有一个UIButton和a UITextField,当按下按钮时,textfield的内容字符串将等于:This is a test string,在这种情况下,如何检测到此文本字段已更改其内容?

ps UITextField's委托方法在这种情况下不起作用

更新:我希望此行为适用于iOS 6+设备.

iphone cocoa-touch objective-c ios ios6

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

jQuery Mobile - 无法将pagebeforechange绑定到页面ID?

我只能将pagebeforechange绑定到整个jquery移动文档,而不是单个页面.任何人都可以解释为什么不起作用?

mobile jquery jquery-mobile

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

识别唯一自由多边形(或多边形散列)的算法

简而言之:如何散列免费的多米诺骨牌?

这可以推广到:如何有效地散列2D整数坐标的任意集合,其中集合包含唯一的非负整数对,并且当且仅当没有平移,旋转或翻转可以映射它时,集合被认为是唯一的与另一套相同?

对于不耐烦的读者,请注意我完全了解蛮力方法.我正在寻找一种更好的方式 - 或者是一种非常有说服力的证据,证明没有其他方法可以存在.

我正在研究一些不同的算法来生成随机多项式.我想测试它们的输出以确定它们的随机性 - 即给定订单的某些实例比其他订单更频繁地生成.在视觉上,很容易识别自由多边形的不同方向,例如下面的维基百科插图显示了"F"pentomino的所有8个方向(来源):

F pentimino

如何在这个多米诺骨牌上放一个数字 - 也就是说,哈希一个免费的多米诺骨牌?我不想依赖预先列出的"命名"多项式列表.无论如何,仅对订单4和5存在广泛认可的名称.

这不一定等于枚举给定订单的所有自由(或单侧或固定)多边形.我只想计算给定配置出现的次数.如果生成算法永远不会产生某个多边形,那么就不会计算它.

计数的基本逻辑是:

testcount = 10000 // Arbitrary
order = 6         // Create hexominos in this test
hashcounts = new hashtable
for i = 1 to testcount
    poly = GenerateRandomPolyomino(order)
    hash = PolyHash(poly)
    if hashcounts.contains(hash) then  
        hashcounts[hash]++
    else
        hashcounts[hash] = 1 
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种有效的PolyHash算法.输入多边形简单地定义为一组坐标.T tetronimo的一个方向可能是,例如:

[[1,0], [0,1], [1,1], [2,1]]:

 |012
-+---
0| X
1|XXX
Run Code Online (Sandbox Code Playgroud)

您可以假设输入多边形将已经标准化以与X和Y轴对齐并且仅具有正坐标.形式上,每套:

  • 将具有至少1个坐标,其中x值为0
  • 在y值为0时将至少有一个坐标
  • x <0或y <0时不会有任何坐标

我真的在寻找新的算法,以避免一般强力方法所需的整数运算数量增加,如下所述.

蛮力

这里和 …

algorithm hash coordinates

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

OCR:图像到文字?

在标记为复制或重复问题之前,请先阅读整个问题.

我能够在现有的情况下做到如下:

  1. 获取图像并裁剪OCR所需的部分.
  2. 使用tesseract和处理图像leptonica.
  3. 当应用文档以块的形式裁剪时,即每个图像1个字符,它提供96%的准确度.
  4. 如果我不这样做,文档背景为白色,文本为黑色,则精度几乎相同.

例如,如果输入是这张照片:

照片开始

在此输入图像描述

照片结束

我想要的是能够为这张照片获得相同的准确度在此输入图像描述
没有生成块.

我用来初始化从图像中提取和提取文本的代码如下:

对于tesseract的初始化

在.h文件中

tesseract::TessBaseAPI *tesseract;
uint32_t *pixels;
Run Code Online (Sandbox Code Playgroud)

在.m文件中

tesseract = new tesseract::TessBaseAPI();
tesseract->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], "eng");
tesseract->SetPageSegMode(tesseract::PSM_SINGLE_LINE);
tesseract->SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
tesseract->SetVariable("language_model_penalty_non_freq_dict_word", "1");
tesseract->SetVariable("language_model_penalty_non_dict_word ", "1");
tesseract->SetVariable("tessedit_flip_0O", "1");
tesseract->SetVariable("tessedit_single_match", "0");
tesseract->SetVariable("textord_noise_normratio", "5");
tesseract->SetVariable("matcher_avg_noise_size", "22");
tesseract->SetVariable("image_default_resolution", "450");
tesseract->SetVariable("editor_image_text_color", "40");
tesseract->SetVariable("textord_projection_scale", "0.25");
tesseract->SetVariable("tessedit_minimal_rejection", "1");
tesseract->SetVariable("tessedit_zero_kelvin_rejection", "1");
Run Code Online (Sandbox Code Playgroud)

从图像中获取文本

- (void)processOcrAt:(UIImage *)image
{
    [self setTesseractImage:image];

    tesseract->Recognize(NULL);
    char* utf8Text = tesseract->GetUTF8Text();
    int conf = tesseract->MeanTextConf();

    NSArray *arr = [[NSArray alloc]initWithObjects:[NSString stringWithUTF8String:utf8Text],[NSString stringWithFormat:@"%d%@",conf,@"%"], nil]; …
Run Code Online (Sandbox Code Playgroud)

ocr tesseract ios xcode4.5 leptonica

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

iOS 15 UICollectionView 的 UICollectionViewRecursion 问题

该应用程序在 Xcode 12 和 iOS 14 之前工作正常,但一旦我升级到 Xcode 13 / iOS 15,我的应用程序就停止工作,并显示以下错误日志

2021-11-26 12:49:38.844428+0530 Mitaja[6170:102791] [UICollectionViewRecursion] cv == 0x7feb458e0000 Enabling recursion trigger logging
2021-11-26 12:49:39.040798+0530 Mitaja[6170:102791] [UICollectionViewRecursion] UICollectionView 0x7feb458e0000 Visible cells update scheduled with call stack:
 (
    0   UIKitCore                           0x00007fff24644a06 -[UICollectionView _setNeedsVisibleCellsUpdate:withLayoutAttributes:] + 107
    1   UIKitCore                           0x00007fff24675708 -[UICollectionView _invalidateLayoutWithContext:] + 1310
    2   UIKitCore                           0x00007fff246a660c -[UICollectionViewLayout invalidateLayoutWithContext:] + 200
    3   UIKitCore                           0x00007fff2469a329 -[UICollectionViewFlowLayout invalidateLayoutWithContext:] + 667
    4   UIKitCore                           0x00007fff246a3b5f -[UICollectionViewFlowLayout _didPerformUpdateVisibleCellsPassWithLayoutOffset:] + 430
    5   UIKitCore                           0x00007fff24653a33 -[UICollectionView _updateVisibleCellsNow:] + 10438
    6 …
Run Code Online (Sandbox Code Playgroud)

uicollectionview uicollectionviewlayout ios15

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