问题描述
我的项目中有一个功能,我必须在其中创建一个块文件并在录制期间上传块文件。但是,在视频录制过程中,当我从录制视频路径中提取块时,我发现在合并视频块时块文件已损坏,但录制的视频工作正常。
我正在设置视频录制
-(void)setMovieFileOutput
{
_videoConnection = [movieFileOutput connectionWithMediaType:AVMediaTypeVideo];;
NSDictionary *outputSetings = [NSDictionary dictionaryWithObjectsAndKeys:
AVVideoCodecTypeH264,AVVideoCodecKey,[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInteger:_capturingBitRate],AVVideoAverageBitRateKey,[NSNumber numberWithInteger:frameRate],AVVideoMaxKeyFrameIntervalKey,nil],AVVideoCompressionPropertiesKey,nil];
[movieFileOutput setoutputSettings:outputSetings forConnection:_videoConnection];
[self startRecordingChunkFile];
}
-(void)startRecordingChunkFile {
dispatch_async(dispatch_get_main_queue(),^{
[movieFileOutput startRecordingToOutputFileURL:_capturedFileURL recordingDelegate:self];
});
}
-(void)stopRecording{
if(movieFileOutput.isRecording){
[movieFileOutput stopRecording];
}
}
-(int)createRecordedVideoParts:(Nsstring*)videoPath chunkCounter:(int)chunkCounter andClipNo:(int)clipNo andChildobj:(ChildVideo *)childVideoObj andVideoObj:(Video *)videoObj huddleID:(int)huddleID isObservation:(BOOL)isObservtion andUploadToHuddle:(BOOL)isHuddleUpload skipReachablilityCheck:(BOOL)skipReachablilityCheck {
Reachability * reach = [Reachability reachabilityForInternetConnection];
if(reach.isReachable || skipReachablilityCheck ){
Nsstring *newVideoPath = [[[SibmeVideoLibrary getLibrary] getSibmegalleryFolderPath] stringByAppendingPathComponent:childVideoObj.videoPath.lastPathComponent];
if([[NSFileManager defaultManager] fileExistsAtPath:newVideoPath]){
NSLog(@"file exist");
}
NSError* error = nil;
NSData *fileContent = [NSData dataWithContentsOfFile:newVideoPath options: 0 error: &error];
signed long long chunkOffset = chunkCounter * kChunkSizeSmall;
signed long long difference = (fileContent.length - chunkOffset);
if (difference >= kChunkSizeSmall) {
NSData *subData = [fileContent subdataWithRange:NSMakeRange(chunkOffset,kChunkSizeSmall)];
Nsstring *chunkFilePath = [Utils writeChunkToFile:subData startPosition:chunkOffset chunkNo:chunkCounter videoClipNo:clipNo andVideoId:videoObj.videoID chunkSizetoRead:kChunkSizeSmall fileHandler:[NSFileHandle fileHandleForReadingAtPath:newVideoPath]];
[self saveChunkObject:chunkFilePath chunkNo:chunkCounter andChunkFileSize:kChunkSizeSmall andChildobj:childVideoObj andVideoObj:videoObj andClipNo:clipNo huddleID:huddleID isObservation:isObservtion andUploadToHuddle:isHuddleUpload chunkOffset:chunkOffset];
chunkCounter += 1;
}
else {
NSData *subData = [fileContent subdataWithRange:NSMakeRange(chunkOffset,difference)];
Nsstring *chunkFilePath = [Utils writeChunkToFile:subData startPosition:chunkOffset chunkNo:chunkCounter videoClipNo:clipNo andVideoId:videoObj.videoID chunkSizetoRead:difference fileHandler:[NSFileHandle fileHandleForReadingAtPath:newVideoPath]];
[self saveChunkObject:chunkFilePath chunkNo:chunkCounter andChunkFileSize:difference andChildobj:childVideoObj andVideoObj:videoObj andClipNo:clipNo huddleID:huddleID isObservation:isObservtion andUploadToHuddle:isHuddleUpload chunkOffset:chunkOffset];
}
}
return chunkCounter;
}
任何人都可以建议代码中的问题所在
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)