我有一个应用程序,允许用户录制视频,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上分享"时,会自动处理视频文件,因此它的小到可以上传.我想在我的应用程序中做同样的事情.
我怎么能做到这一点?
我来自iOS背景并开始学习Cocoa.在iOS上,除非我们有多个目标iPad
,iPhone
我们通常有一个窗口并使用管理屏幕UIViewControllers
.每个新屏幕大部分时间都会映射到一个UIViewController
.
然而,对于可可,这似乎是一个新的屏幕/窗口管理的地方NSWindow
,它的子组件由管理NSViewController
.因此,如果我有多个窗口应用程序,我应该NSWindowController
为每个窗口分开.
这种方法是正确的还是我有误解?
cocoa cocoa-touch objective-c nswindowcontroller cocoa-design-patterns
我想要一些类似于Flipboard的东西,在应用程序启动时轻微翻动动画.启动时Flipboard上下轻微翻转,以显示用户不熟悉它可翻转的界面.
我有一个UIScrollView我想动画一下,向用户显示它是可滚动的.所以我想向后滚动一点点.UIScrollView有一条setContentOffset:animated:
没有完成子句的消息.我发现调用它两次导致看似没有动画.如果我想在动画之后连续播放动画怎么办?
编辑:谢谢Levi的答案.并记录在案,有UIViewAnimationOptionAutoreverse
和UIViewAnimationOptionRepeat
我可以使用.所以这就是我最终得到的结果.
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) 我对Objective-C协议和类别的一些概念感到困惑.
协议和类别可以由Objective-C中的子类继承吗?
在创建使用时,使用该NSBundle
方法搜索图像的路径有多必要?我看到教程代码只是直接指定图像的名称,然后代码更加努力地找到路径.pathForResource
UIImage
imageNamed
根据我的经验,我一直只是直接使用这个名字而且它总是很好用.我以为它会自动知道如何找到图像.有多重要或在什么情况下需要做更多的事情?
我有一个UIButton
和a UITextField
,当按下按钮时,textfield的内容字符串将等于:This is a test string
,在这种情况下,如何检测到此文本字段已更改其内容?
ps UITextField's
委托方法在这种情况下不起作用
更新:我希望此行为适用于iOS 6+设备.
我只能将pagebeforechange绑定到整个jquery移动文档,而不是单个页面.任何人都可以解释为什么这不起作用?
简而言之:如何散列免费的多米诺骨牌?
这可以推广到:如何有效地散列2D整数坐标的任意集合,其中集合包含唯一的非负整数对,并且当且仅当没有平移,旋转或翻转可以映射它时,集合被认为是唯一的与另一套相同?
对于不耐烦的读者,请注意我完全了解蛮力方法.我正在寻找一种更好的方式 - 或者是一种非常有说服力的证据,证明没有其他方法可以存在.
我正在研究一些不同的算法来生成随机多项式.我想测试它们的输出以确定它们的随机性 - 即给定订单的某些实例比其他订单更频繁地生成.在视觉上,很容易识别自由多边形的不同方向,例如下面的维基百科插图显示了"F"pentomino的所有8个方向(来源):
如何在这个多米诺骨牌上放一个数字 - 也就是说,哈希一个免费的多米诺骨牌?我不想依赖预先列出的"命名"多项式列表.无论如何,仅对订单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轴对齐并且仅具有正坐标.形式上,每套:
我真的在寻找新的算法,以避免一般强力方法所需的整数运算数量增加,如下所述.
蛮力
这里和 …
在标记为复制或重复问题之前,请先阅读整个问题.
我能够在现有的情况下做到如下:
tesseract
和处理图像leptonica
.例如,如果输入是这张照片:
照片开始
照片结束
我想要的是能够为这张照片获得相同的准确度
没有生成块.
我用来初始化从图像中提取和提取文本的代码如下:
对于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) 该应用程序在 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) ios ×5
objective-c ×5
iphone ×3
cocoa-touch ×2
algorithm ×1
animation ×1
avfoundation ×1
cocoa ×1
coordinates ×1
file-upload ×1
hash ×1
ios15 ×1
ios6 ×1
jquery ×1
leptonica ×1
mobile ×1
nsbundle ×1
ocr ×1
protocols ×1
tesseract ×1
uiimage ×1
uiscrollview ×1
video ×1
xcode4.5 ×1