最近做了一個項目,我把其中的核心功能拿出來和大家分享一下,重點還是自己梳理一下。

這里關于視頻轉碼存儲我整理了兩個方法,這兩個方法都是針對相冊內視頻進行處理的。
1、該方法沒有對視頻進行壓縮,只是將視頻原封不動地從相冊拿出來放到沙盒路徑下,目的是拿到視頻的NSData以便上傳
這里我傳了一個URL,這個URL有點特別,是相冊文件URL,所以我說過只針對相冊視頻進行處理
//將原始視頻的URL轉化為NSData數據,寫入沙盒
+ (void)videoWithUrl:(NSString *)url withFileName:(NSString *)fileName
{
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
if (url) {
[assetLibrary assetForURL:[NSURL URLWithString:url] resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imagePath = [NSString stringWithFormat:@"%@/Image", pathDocuments];
NSString *dbFilePath = [imagePath stringByAppendingPathComponent:fileName];
char const *cvideoPath = [dbFilePath UTF8String];
FILE *file = fopen(cvideoPath, "a+");
if (file) {
const int bufferSize = 11024 * 1024;
// 初始化一個1M的buffer
Byte *buffer = (Byte*)malloc(bufferSize);
NSUInteger read = 0, offset = 0, written = 0;
NSError* err = nil;
if (rep.size != 0)
{
do {
read = [rep getBytes:buffer fromOffset:offset length:bufferSize error:&err];
written = fwrite(buffer, sizeof(char), read, file);
offset += read;
} while (read != 0 && !err);//沒到結尾,沒出錯,ok繼續
}
// 釋放緩沖區,關閉文件
free(buffer);
buffer = NULL;
fclose(file);
file = NULL;
}
} failureBlock:nil];
}
});
}
另外有需要云服務器可以了解下創新互聯建站www.yijiale78.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:iOS視頻壓縮存儲至本地并上傳至服務器實例代碼-創新互聯
本文網址:http://www.yijiale78.com/article18/dpcggp.html
成都網站建設公司_創新互聯,為您提供Google、用戶體驗、軟件開發、網站制作、網站維護、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯