gpt4 book ai didi

ios - 将大视频从 PhotoLibrary 上传到服务器

转载 作者:行者123 更新时间:2023-11-29 04:03:10 24 4
gpt4 key购买 nike

我在将大型视频资源从 PhotoLibrary 上传到服务器时遇到问题。

我得到的 Assets 数据为 described here ,将视频导出到本地文档,然后上传。

但是当我上传一个大视频(2分钟,大约300Mb或更大)时,这种方法会导致崩溃,我没有得到任何原因或任何信息。

我使用webDAV上传文件,如下所示:

    // Set up credentials
NSURLCredential *userCredentials = [NSURLCredential credentialWithUser:username
password:password
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *space = [[NSURLProtectionSpace alloc] initWithHost:host
port:80
protocol:@"http"
realm:@" webDAV"
authenticationMethod:nil];
[[NSURLCredentialStorage sharedCredentialStorage] setCredential:userCredentials forProtectionSpace:space];
[space release];

// Create the request
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"PUT"];
[request setValue:[self mimetypeForFile:self.filepath] forHTTPHeaderField:@"Content-Type"];
NSNumber *contentLength = (NSNumber *) [[[NSFileManager defaultManager]
attributesOfItemAtPath:self.filepath error:NULL]
objectForKey:NSFileSize];
[request setValue:[contentLength description] forHTTPHeaderField:@"Content-Length"];

if (self.useStreaming)
{
if (self.currentFileStream!=nil)
{
[self.currentFileStream close], self.currentFileStream = nil;
}
self.currentFileStream = [NSInputStream inputStreamWithFileAtPath:self.filepath];

if (currentFileStream!=nil)
{
[request setHTTPBodyStream:currentFileStream];
}
else
{
[request setHTTPBody:[NSData dataWithContentsOfFile:self.filepath]];
}
}
else
{
[request setHTTPBody:[NSData dataWithContentsOfFile:self.filepath]];
}



NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

if (self.currentConnection!=nil)
{
self.currentConnection = nil;
}
self.currentConnection = conn;
[conn release];
[self.currentConnection start];

当代码到达这一行时:

self.currentFileStream = [NSInputStream inputStreamWithFileAtPath:self.filepath];
[请求setHTTPBodyStream:currentFileStream];

或者:

[request setHTTPBody:[NSData dataWithContentsOfFile:self.filepath]];

它崩溃了。

你有什么建议吗?

谢谢。

==========================

编辑:它在 setHTTPBody:setHTTPBodyStream: 处崩溃 所以我认为这与内存泄漏或其他问题有关。

================

编辑2:现在我决定压缩视频,我通过当前方法获取的视频数据太大(超过300mb),但我发现使用UIImagePickerController选择相同视频,只有30mb;所以压缩是有帮助的; 我会尝试UIVideoEditorController,并很快发布我的结果;

最佳答案

已完成。解决方案是尝试将大视频压缩为小文件;

1.和以前一样,将视频资源导出到tmp目录;

2.使用UIVideoEditorController压缩视频文件;

3.只需上传压缩文件,就像我发布的代码一样。

仅此而已。

关于ios - 将大视频从 PhotoLibrary 上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com