最近在研究視頻錄制,網上找的demo都設置不了幀數(shù),這樣就不能通過設置低幀數(shù)的方法來達到減小文件大小的目的,網上demo都是這樣設置幀數(shù)的,以設置最大幀數(shù)10為例
//初始化視頻輸入
NSDictionary*compressionSettings = [NSDictionarydictionaryWithObjectsAndKeys:
[NSNumbernumberWithInteger:300*1000],AVVideoAverageBitRateKey,
[NSNumbernumberWithInteger:10],AVVideoExpectedSourceFrameRateKey,
[NSNumbernumberWithInteger:10],AVVideoMaxKeyFrameIntervalKey,
AVVideoProfileLevelH264HighAutoLevel,AVVideoProfileLevelKey,
nil,nil];
然而你會發(fā)現(xiàn)錄制出來的還是30幀
正確做法是通過CMTimeperferTimescale來設置,而且得在 添加視頻輸出和添加音頻輸出之后設置才有效
//4.1設置采集幀率
CMTimeperferTimescale =CMTimeMake(1,15);
BOOLisSupport =NO;
//獲取視頻輸入設備(攝像頭)
AVCaptureDevice*device=[selfbackCamera];//取得后置攝像頭
for(AVFrameRateRange*supportFrameindevice.activeFormat.videoSupportedFrameRateRanges) {
int32_tminv =CMTimeCompare(perferTimescale, supportFrame.minFrameDuration);
int32_tmaxv =CMTimeCompare(perferTimescale, supportFrame.maxFrameDuration);
if(maxv <=0&&minv >=0) {
isSupport =YES;
break;
}
}
if(isSupport) {
[devicelockForConfiguration:nil];
device.activeVideoMaxFrameDuration= perferTimescale;
device.activeVideoMinFrameDuration= perferTimescale;
[deviceunlockForConfiguration];
}