最近在做一款發(fā)布視頻到動(dòng)態(tài)的功能夜焦,里面用到了 視頻的錄制,視頻的壓縮岂贩,獲取視頻的縮略圖茫经,以及視頻上傳七牛,同時(shí)還有本地視頻跟網(wǎng)絡(luò)視頻的處理萎津,直接上代碼卸伞,方便自己多多總結(jié)
1.視頻的錄制
HVideoViewController 這是一款仿微信錄制頁面的第三方控件,錄制原理是AVCaptureSession的設(shè)備硬件的輸入輸出的封裝锉屈,里面有關(guān)于攝像頭的設(shè)置以及參數(shù)的配置荤傲,錄制完成后會(huì)自動(dòng)播放錄制的視頻,當(dāng)然了颈渊,這些都是封裝好的遂黍,最關(guān)健是錄制完視頻之后
這個(gè)方法是錄制完成后有個(gè)對(duì)勾按鈕,點(diǎn)擊之后就會(huì)來到這個(gè)block回調(diào)方法中俊嗽,在這里你可以獲取到你錄制視頻的url雾家,同時(shí)你可以通過這個(gè)url獲取你想要的視頻封面縮略圖
2.獲取縮略圖
這個(gè)方法是獲取視頻的第一楨得到圖片就是你的背景圖,方便吧
3.視頻壓縮
我們都知道錄取的視頻都很大绍豁,一個(gè)10s的小視頻可能就得快20m左右芯咧。那么必須得壓縮視頻,我這里用的是系統(tǒng)本身的壓縮方法,同時(shí)你可以使用很牛逼的ffmpeg進(jìn)行視頻的壓縮敬飒,但畢竟是小視頻邪铲,就選擇了簡單。哈哈哈
注意點(diǎn):
不能有相同名字的視頻无拗,否則壓縮失敗带到,所以建議使用時(shí)間戳來拼接
這個(gè)里面的presetname是你要選擇的壓縮比率 一般情況下你選擇中等就行,畢竟是小視頻
在獲取本地視頻壓縮的時(shí)候英染,會(huì)有個(gè)方法
//.如果為視頻
ALAsset*Vasset = asset;
if ([[Vasset valueForProperty:ALAssetPropertyType] isEqual:ALAssetTypeVideo]) {
//獲取視頻的本地url? 給self.videoURL
//.獲取縮略圖
UIImage *image = [UIImage imageWithCGImage:[Vasset thumbnail]];
self.videoURLImage= image;
self.videoURL = [[Vasset defaultRepresentation] url];
這個(gè)方法獲取的縮略圖很模糊揽惹,所以不建議使用
4.上傳七牛
在這里我先把視頻上傳七牛然后上傳成功后把封面縮略圖上傳七牛
需要獲取七牛的token ?同時(shí)你需要自己到七牛開一個(gè)空間
然后請(qǐng)求服務(wù)器這時(shí)候你就把上傳七牛時(shí)的時(shí)間戳定義為你上傳這個(gè)視頻的名字傳給你的服務(wù)器就ok,你跟后臺(tái)商量讓他拼接成網(wǎng)絡(luò)的url就ok税迷。然后你去動(dòng)態(tài)里面請(qǐng)求服務(wù)器的時(shí)候會(huì)得到這個(gè)url,你通過這個(gè)URL去七牛尋找你上傳的視頻锹漱,大文件下載斷點(diǎn)續(xù)傳到沙盒箭养,保證你第二次點(diǎn)擊這個(gè)視頻,不會(huì)再次從七牛去哪哥牍,直接本地播放就ok毕泌,
歡迎大家指正,謝謝
錄制視頻參考地址:
http://www.jb51.net/article/108890.htm