/// 視頻生成
-(void)videoGenerated
{
self.theVideoPath = [self videoSavingPath:self.videoName];
//定義視頻的大小320 480 倍數(shù)
CGSize size = CGSizeMake(320,480); // 192 256
// CGSize size = CGSizeMake(320,480); // 192 256
NSError *error = nil;
// 轉(zhuǎn)成UTF-8編碼
unlink([self.theVideoPath UTF8String]);
NSLog(@"path->%@",self.theVideoPath);
AVAssetWriter *videoWriter = [[AVAssetWriter alloc]initWithURL:[NSURL fileURLWithPath:self.theVideoPath]fileType:AVFileTypeQuickTimeMovie error:&error];
NSParameterAssert(videoWriter);
if(error) {
NSLog(@"error =%@",[error localizedDescription]);
return;
}
//mp4的格式設(shè)置 編碼格式 寬度 高度
NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecH264,AVVideoCodecKey,
[NSNumber numberWithInt:size.width],AVVideoWidthKey,
[NSNumber numberWithInt:size.height],AVVideoHeightKey,nil];
AVAssetWriterInput *writerInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings];
NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:kCVPixelFormatType_32ARGB],kCVPixelBufferPixelFormatTypeKey,nil];
// AVAssetWriterInputPixelBufferAdaptor提供CVPixelBufferPool實(shí)例,
// 可以使用分配像素緩沖區(qū)寫入輸出文件。使用提供的像素為緩沖池分配通常
// 是更有效的比添加像素緩沖區(qū)分配使用一個(gè)單獨(dú)的池
AVAssetWriterInputPixelBufferAdaptor *adaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary];
NSParameterAssert(writerInput);
NSParameterAssert([videoWriter canAddInput:writerInput]);
if([videoWriter canAddInput:writerInput]){
NSLog(@"11111");
}else{
NSLog(@"22222");
}
[videoWriter addInput:writerInput];
[videoWriter startWriting];
[videoWriter startSessionAtSourceTime:kCMTimeZero];
//合成多張圖片為一個(gè)視頻文件
dispatch_queue_t dispatchQueue = dispatch_queue_create("mediaInputQueue",NULL);
int __block frame = 0;
__weak typeof(self)weakSelf = self;
[writerInput requestMediaDataWhenReadyOnQueue:dispatchQueue usingBlock:^{
while([writerInput isReadyForMoreMediaData]) {
if(++frame >= [self->_imageArray count] * 2) {
[writerInput markAsFinished];
[videoWriter finishWritingWithCompletionHandler:^{
NSLog(@"完成");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"視頻合成完畢");
[HTipManage deallocView];
if (weakSelf.imageArray.count > 0 && weakSelf.imageArray!=nil) {
[[NSNotificationCenter defaultCenter]postNotificationName:@"SavedSuccessfuly" object:[self.imageArray objectAtIndex:0]];
}
if (weakSelf.videoUrl) {
weakSelf.videoUrl(weakSelf.theVideoPath);
}
}];
}];
break;
}
CVPixelBufferRef buffer = NULL;
int idx = frame / 2;
NSLog(@"idx==%d",idx);
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
}];
buffer = (CVPixelBufferRef)[self pixelBufferFromCGImage:[[weakSelf.imageArray objectAtIndex:idx]CGImage]size:size];
if(buffer){
//設(shè)置每秒鐘播放圖片的個(gè)數(shù)
if(![adaptor appendPixelBuffer:buffer withPresentationTime:CMTimeMake(frame,25)]) {
NSLog(@"FAIL");
} else {
NSLog(@"OK");
}
CFRelease(buffer);
}
}
}];
}
多張圖片生成視頻
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門恒傻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人建邓,你說(shuō)我怎么就攤上這事盈厘。” “怎么了官边?”我有些...
- 文/不壞的土叔 我叫張陵沸手,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我注簿,道長(zhǎng)契吉,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任诡渴,我火速辦了婚禮捐晶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妄辩。我一直安慰自己惑灵,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布眼耀。 她就那樣靜靜地躺著英支,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哮伟。 梳的紋絲不亂的頭發(fā)上潭辈,一...
- 那天,我揣著相機(jī)與錄音澈吨,去河邊找鬼把敢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谅辣,可吹牛的內(nèi)容都是我干的修赞。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柏副!你這毒婦竟也來(lái)了勾邦?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤割择,失蹤者是張志新(化名)和其女友劉穎眷篇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荔泳,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡蕉饼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玛歌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昧港。...
- 正文 年R本政府宣布叹侄,位于F島的核電站,受9級(jí)特大地震影響昨登,放射性物質(zhì)發(fā)生泄漏趾代。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一篙骡、第九天 我趴在偏房一處隱蔽的房頂上張望稽坤。 院中可真熱鬧丈甸,春花似錦糯俗、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至顿仇,卻和暖如春淘正,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臼闻。 一陣腳步聲響...
- 正文 我出身青樓惩淳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乓搬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子思犁,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 將做工程過(guò)程較好的代碼段備份一下代虾,下面的代碼段是關(guān)于一段將多張圖片生成AVI視頻的C++的代碼,應(yīng)該能對(duì)各朋友有一...
- 這個(gè)小工具制作的目的是為了將多張圖片組合后生成一張動(dòng)態(tài)的GIF圖片。設(shè)置界面化的操作学辱,只需要將選中的圖片導(dǎo)入最后直...
- 電腦圖片合成視頻怎么做差油?圖片視頻制作用什么軟件好?現(xiàn)在大家的照片或圖片很多任洞,其實(shí)在電腦上把圖片做成視頻是非常方便的...
- 下面我來(lái)介紹一下如何使用OSS上傳圖片: 下載鏈接:下載鏈接 首先蓄喇,我們需要注冊(cè)賬號(hào),拿到秘鑰: 下面是我封裝的幾...