當前位置:首頁 » 文件管理 » ios上傳視頻到伺服器

ios上傳視頻到伺服器

發布時間: 2023-06-04 12:28:08

A. iOS 江湖救急!!!怎樣將音頻文件上傳到伺服器

http上傳 把文件以body形式上傳到伺服器 NSFileHandle* handler = [NSFileHandle fileHandleForReadingAtPath:_fileURL];
[handler seekToFileOffset:(unsigned long long)_range.location];
NSData* body = [handler readDataOfLength:_range.length];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d",body.length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"no-cache" forHTTPHeaderField:@"Cache-Control"];
[request setHTTPBody:body];

然後伺服器接收body 二進制流

B. ios文件寫操作和文件上傳到伺服器

你所闡述的問題 就是指的是 向伺服器傳一個文件。 多用post 請求。用 自帶的NSURLConnection 或者ASI 等 都可以。你過程說的明了,不知道是具體哪個環節有問題。 寫文件?傳文件?

C. 怎樣將蘋果5S上的App傳輸到雲端

用itunes導出:
將手機連接電腦後,打開itunes,在左側選擇【音樂】 itunes會自動同步連接的iphone或ipad,同步完成後,點擊最下面的【語音備忘錄】 右側窗口中,即是語音備忘錄里的錄音文件
任意選一個錄音文件,右擊,選擇【在 windows explorer 中顯示】 這樣就打開了錄音文件在硬碟中的位置,找到你想要的錄音文件,隨便復制去哪吧 ^_^ 這種錄音文件是m4a格式的,很多播放器都支持。 如果想換成mp3格式,找個格式轉換工具就可以了,比如魔影工廠就可以 。
用郵件發送錄音文件,前提是iphone或ipad里的郵件有帳戶並且是活躍的 ,打開語音備忘錄,找到要發送的錄音。
點擊右側的藍色箭頭 在錄音文件簡介中,點擊【共享】,再點擊【用電子郵件發送】 在郵件發送頁面中,填寫好收件人、主題後,點擊發送即可
錄音文件會自動添加到附件中 到郵箱中,即可收到從iphone或ipad發送的錄音文件 itools:
將iphone或ipad連接電腦,然後打開itools。找到左下角的【文件系統】→【語音備忘錄】,然後在右側找到要導出的錄音文件,右擊導出,找個地方保存就可以啦。

1、方法一:使用QQ。
使用qq的文件傳輸功能,手機端和電腦端都有傳文件的入口,可以互傳圖片、APK軟體等等所有文件,單張傳圖也不會被壓縮

2、方法二:使用微信。
登錄微信電腦客戶端後,電腦和手機端的聯系人最上,就會出現一個文件傳輸助手,電腦端傳文件到手機端時文件格式不限,點擊文件按鈕後,可以直接在電腦中選擇任何文件。

3、方法三:使用茄子快傳。
茄子快傳可以跨平台傳輸。首先需要在電腦端和手機端都安裝茄子快傳軟體,通過掃碼連接配對,手機與電腦連接時,手機端需要先連接到電腦端提供的wifi熱點中,然後通過掃碼就可以順利的連接到電腦端,開始愉快的傳輸文件了。

4、方法四:使用網盤。
手機端安裝一個360雲盤APP,就可以跟電腦端的網頁版或電腦客戶端互傳文件了。不過需要注意的是,網路雲盤會有一些過濾機制,某些羞羞的小電影如果存上去,一準會被和諧掉的。360雲盤手機端也有備份照片和通訊錄的功能,可以後台自動同步備份。

D. iOS阿里雲OSS上傳多張圖片和視頻

1.從伺服器獲取上傳需要的 accessKeyId, accessKeySecret, securityToken;如果你們是本地直接配置,不需要從伺服器拿直接省略。

2.配置OSSTask

3.1 上傳圖片

3.2 上傳視頻

E. iOS大文件的分片上傳和斷點上傳

由於最近比較忙,所以一直沒有寫博客,現在分享一些大文件的上傳的問題!斷點續傳和分片上傳。因為文件過大(比如1G以上),必須要考慮上傳過程網路中斷的情況。http的網路請求中本身就已經具備了分片上傳功能,當傳輸的文件比較大時,http協議自動會將文件切片(分塊),但這不是我們現在說的重點,我們要做的事是保證在網路中斷後1G的文件已上傳的那部分在下次網路連接時不必再重傳。所以我們本地在上傳的時候,要將大文件進行分片,比如分成1024*1024B,即將大文件分成1M的片進行上傳,伺服器在接收後,再將這些片合並成原始文件,這就是分片的基本原理。斷點續傳要求本地要記錄每一片的上傳的狀態,我通過三個狀態進行了標記(wait loading finish),當網路中斷,再次連接後,從斷點處進行上傳。伺服器通過文件名、總片數判斷該文件是否已全部上傳完成。

下面來說細節:

1、首先獲取文件(音視頻、圖片)

分兩種情況,一種是在相冊庫里直接獲取,一種是調用相機。如果是通過UIImagePickerView來獲取(細節不詳述,網上一大堆),我們會發現當你選定一個視頻的時候,會出現圖1的壓縮頁面,最後我們的app獲取的視頻就是這個經過壓縮後的視頻(不是視頻庫里的原始視頻,這里有個注意點,操作完該壓縮視頻後記得釋放,系統不會幫你釋放的,需要你手動來操作,下面會說到),然後通過UIImagePickerView的協議方法中的- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info獲取視頻的Info

fileInfo = {

= "public.movie";

= "file:///private/var/mobile/Containers/Data/Application/2AAE9E44-0E6D-4499-9AC3-93D44D8342EA/tmp/trim.F36EC46C-4219-43C8-96A7-FA7141AB64D2.MOV";

= "assets-library://asset/asset.MOV?id=DEDA9406-3223-4F87-ABB2-98FB5F5EB9C4&ext=MOV";

}

是選取文件的類型,如KUTTypeImage,KUTTypeMovie。這里注意一下movie和video的區別,一個是有聲音的視頻文件,一個是沒有聲音的視頻文件,當然還有Audio是只有聲音沒有視頻。是視頻的URL(如果是相機拍攝的,那麼這個就是原始拍攝得到的視頻;如果是在相冊庫里選擇的,那就是壓縮之後生成的視頻),注意這個URL不指向相冊庫,通過這個URL你可以操作這個視頻如刪除,拷貝等,可以獲取壓縮後的視頻的大小。是一個指向相冊的URL,官方的解釋是an NSURL that references an asset in the AssetsLibrary framework,通過這個URL,你可以獲取視頻的所有信息,包括文件名,縮略圖,時長等(通過ALAssetsLibrary里的assetsLibraryassetForURL:referenceURLresultBlock:)。

如果是相機拍攝的,注意兩個保存方法:圖片保存到相冊:UIImageJPEGRepresentation([infovalueForKey:],(CGFloat)1.0)metadata:nilcompletionBlock: failureBlock:

高保真壓縮圖片的方法NSData * UIImageJPEGRepresentation ( UIImage *image, CGFloat compressionQuality)

視頻保存到相冊::MediaURL completionBlock:failureBlock:

到這里,我們就獲取了所有需要的文件以及文件信息。下面要做的就是將文件分片。

2、將獲取到的文件分片

首先,我將獲取到的文件保存在這這樣一個類中

@interface CNFile :NSObject

@property(nonatomic,)NSString* fileType;//image or movie

@property(nonatomic,)NSString* filePath;//文件在app中路徑

@property(nonatomic,)NSString* fileName;//文件名

@property(nonatomic,assign)NSIntegerfileSize;//文件大小

@property (nonatomic,assign)NSIntegertrunks;//總片數

@property(nonatomic,)NSString* fileInfo;

@property(nonatomic,strong)UIImage* fileImage;//文件縮略圖

@property(nonatomic,strong) NSMutableArray* fileArr;//標記每片的上傳狀態

@end

這樣我們就可以對每一個CNFile對象進行操作了。

-(void)readDataWithChunk:(NSInteger)chunk file:(CNFile*)file{

總片數的獲取方法:

intoffset =1024*1024;(每一片的大小是1M)

NSIntegerchunks = (file.fileSize%1024==0)?((int)(file.fileSize/1024*1024)):((int)(file.fileSize/(1024*1024) +1));

NSLog(@"chunks = %ld",(long)chunks);

將文件分片,讀取每一片的數據:

NSData* data;

NSFileHandle*readHandle = [:file.filePath];

[readHandleseekToFileOffset:offset * chunk];

data = [readHandlereadDataOfLength:offset];

}

這樣我們就獲取了每一片要上傳的數據,然後詢問伺服器,該片是否已經存在

(方法-(void)ifHaveData:(NSData*)data WithChunk:(NSInteger)chunk file:(CNFile*)file)

,如果存在,令chunk+1,重復上面的方法讀取下一片,直到伺服器不存在該片,那麼上傳該片數據。在這個方法中注意設置該chunk的上傳狀態(wait loading finish),這將關繫到本地判斷該文件是否已全部上傳完成。

下一步就是上傳的過程:

-(void)uploadData:(NSData*) data WithChunk:(NSInteger) chunk file:(CNFile*)file;

在伺服器返回該片上傳成功後,我們要做的事有很多:

1)先將已經成功上傳的本片的flag置finish

[file.fileArrreplaceObjectAtIndex:chunk withObject:@「finish"];

2)查看是否所有片的flag都已經置finish,如果都已經finishi,說明該文件上傳完成,那麼刪除該文件,上傳下一個文件或者結束。

for(NSIntegerj =0; j

if(j == chunks || ((j == chunks -1)&&([file.fileArr[j]isEqualToString:@"finish"])))

[medeleteFile:file.filePath];

[mereadNextFile];

}

3)如果沒有都finish,那麼看本地下一chunk對用的flag是否是wait

NSLog(@"查看第%ld片的狀態",chunk+1);

for(NSIntegeri = chunk+1;i < chunks;i++)

{

NSString* flag = [file.fileArrobjectAtIndex:i];

if([flagisEqualToString:@"wait"]) {

[mereadDataWithChunk:ifileName:fileNamefile:file];

break;

}

}

在第2、3步之間可以有一個 2.5)判斷是否暫停上傳

if(me.isPause ==YES)

{

//將目前讀到了第幾個文件的第幾片保存到本地

[selfsaveProgressWithChunk:chunk file:file];

return;

}

這個操作實際上和上傳過程中斷網是一樣的,為了斷點續傳,在斷網或者暫停的時候,我們要將目前的進度保存起來,以便下次上傳時略過前面已置finish的片。

然後還有一個問題,如果我們就這樣線性的一片一片上傳,實際上失去了分片上傳的意義,應該結合多線程,使分片上傳過程並發執行,同時上傳多片,這樣就提高了上傳效率,並充分利用了網路帶寬。

dispatch_async(dispatch_queue_t queue, ^{

[mereadDataWithChunk: chunk];

})

最後注意一下,每上傳完一個視頻,去設置里看看你的app佔用的存儲空間有沒有增大哦,如果你沒有處理那個生成的壓縮視頻,你會發現你的app的空間佔用量是很大的。

站在大牛的肩膀上開發。

熱點內容
歐力風雲怎麼設置緩存檔 發布:2024-03-19 14:39:03 瀏覽:788
腳本的書籍 發布:2024-03-19 14:12:21 瀏覽:207
微信預付款如何設置密碼 發布:2024-03-19 14:03:33 瀏覽:255
安卓手機聲音小怎麼弄大聲 發布:2024-03-19 13:58:38 瀏覽:122
水銀解壓制 發布:2024-03-19 13:57:45 瀏覽:185
為什麼要學習資料庫 發布:2024-03-19 13:27:49 瀏覽:79
nas存儲配置 發布:2024-03-19 13:04:13 瀏覽:225
磁存儲缺點 發布:2024-03-19 12:59:43 瀏覽:192
如何利用雲伺服器挖奇亞幣 發布:2024-03-19 12:59:41 瀏覽:324
android文字按鈕 發布:2024-03-19 12:58:45 瀏覽:107