AVFoundation相關

AVFoundation

AVAsset:多媒體載體類

AVAssetTrack:track id是唯一性標識符。每個視頻至少兩個track,(音頻軌和視頻軌)Atom Inspector可以查看視頻文件的詳細信息!

將視頻文件寫入Caches/videos文件夾? ??

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);? ? NSString *cachesDirectory = [paths objectAtIndex:0];? ? NSString *dataPath = [cachesDirectory stringByAppendingPathComponent:@"/videos"];? ? if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])? ? ? ? [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];? ? NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init] ;? ? [dateFormat setDateFormat:@"dd-MM-yyyyHH:mm:SS"];? ? NSDate *now = [[NSDate alloc] init];? ? NSString *theDate = [dateFormat stringFromDate:now];? ? NSData *videoData = [NSData dataWithContentsOfURL:srcVideo] ;? ? NSString *videopath= [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@_Origin.mp4",dataPath,theDate]];? ? BOOL success = [videoData writeToFile:videopath atomically:NO];? ? NSLog(@"Successs:::: %@", success ? @"YES" : @"NO");? ? NSLog(@"video path --> %@",videopath);* 視頻方向:關于Rotation的0、90、180和270這四個角度值可以這樣理解:LandscapeRigth為0度;以Home鍵或攝像頭為圓心,順時針旋轉到Portrait為90度;旋轉到LandscapeLeft為180度;旋轉到PortraitUpsideDown為270度。視頻是默認橫屏拍攝,此時長邊叫width=1920,height=1080注意坐標原點的變動。判斷原始視頻的拍攝角度:+ (NSUInteger)degressFromVideoFileWithURL:(NSURL *)url{? ? NSUInteger degress = 0;? ? ? AVAsset *asset = [AVAsset assetWithURL:url];? ? NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo];? ? if([tracks count] > 0) {? ? ? ? AVAssetTrack *videoTrack = [tracks objectAtIndex:0];? ? ? ? CGAffineTransform t = videoTrack.preferredTransform;? ? ? ? ? ? ? if(t.a == 0 && t.b == 1.0 && t.c == -1.0 && t.d == 0){? ? ? ? ? ? // Portrait? ? ? ? ? ? degress = 90;? ? ? ? }else if(t.a == 0 && t.b == -1.0 && t.c == 1.0 && t.d == 0){? ? ? ? ? ? // PortraitUpsideDown? ? ? ? ? ? degress = 270;? ? ? ? }else if(t.a == 1.0 && t.b == 0 && t.c == 0 && t.d == 1.0){? ? ? ? ? ? // LandscapeRight? ? ? ? ? ? degress = 0;? ? ? ? }else if(t.a == -1.0 && t.b == 0 && t.c == 0 && t.d == -1.0){? ? ? ? ? ? // LandscapeLeft? ? ? ? ? ? degress = 180;? ? ? ? }? ? }? ? ? return degress;}(NSArray*)tracksWithMediaType:(NSString *)mediaType;

tracks數組包含指定媒體類型的track。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容