日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java hevc和heif_iOS 影音新格式 HEIF HEVC

發(fā)布時間:2025/3/20 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java hevc和heif_iOS 影音新格式 HEIF HEVC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

蘋果在 iOS 11 的發(fā)布會上,推出了兩種新的媒體格式 HEIF HEVC,都是為了保證畫質(zhì)的情況下,大大減少視頻、照片的大小。

一、簡介

HEVC全稱 High Efficiency Video Coding(高效率視頻編碼),是比H.264更加優(yōu)秀的一種視頻壓縮標(biāo)準(zhǔn)(也稱為 H.265)。HEVC 在低碼率視頻壓縮上,提升質(zhì)量、減少容量和節(jié)省帶寬方面都有突出表現(xiàn),因此除了拍攝占用的容量減少外,在視頻通話時也能更加流暢清晰。

HEIF: 高效率圖像文件格式(英語:High Efficiency Image File Format, HEIF;也稱高效圖像文件格式)是一個用于單張圖像或圖像序列的文件格式。它由運(yùn)動圖像專家組(MPEG)開發(fā),并在MPEG-H?Part 12(ISO/IEC 23008-12)中定義。用于HEVC關(guān)鍵幀的處理上,因此它同樣可以用更少的容量來存儲畫質(zhì)更好的照片,在連拍、動圖和色彩變化不大的照片上效果尤其明顯。

HEIF規(guī)范也定義了高效率視頻編碼(HEVC)編碼的內(nèi)嵌圖像和HEVC編碼的圖像序列的存儲方式,其中以受約束的方式應(yīng)用幀間預(yù)測。

HEIF文件與ISO基本媒體文件格式(ISOBMFF,ISO/IEC 14496-12)兼容,并且還可以包括其他媒體流,例如定時的文本和音頻。

HEIF 文件可以包含 GIF 動圖、HDR 相片、連拍、Live Photo。

HEIF擴(kuò)展名:.heif、.heic。

互聯(lián)網(wǎng)媒體類型:image/heif、image/heic、image/heif-sequence、image/

二、對代碼的影響

識別HEIF

識別HEIF文件的方法和識別GIF一樣,對比文件UTI(uniformTypeIdentifier)

- (BOOL)isHeif:(PHAsset *)asset

{

__block BOOL isHEIF = NO;

NSArray *resourceList = [PHAssetResource assetResourcesForAsset:asset];

[resourceList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

PHAssetResource *resource = obj;

NSString *UTI = resource.uniformTypeIdentifier;

if ([UTI isEqualToString:AVFileTypeHEIF] || [UTI isEqualToString:AVFileTypeHEIC]) {

isHEIF = YES;

*stop = YES;

}

}];

return isHEIF;

}

檢測設(shè)備是否支持硬解碼 HEVC

VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)

系統(tǒng)選圖對 HEIF 的支持

UIImagePickerController 添加了一個枚舉類型:

typedef enum UIImagePickerControllerImageURLExportPreset : NSInteger {

UIImagePickerControllerImageURLExportPresetCompatible = 0,

UIImagePickerControllerImageURLExportPresetCurrent

} UIImagePickerControllerImageURLExportPreset;

@property(nonatomic) UIImagePickerControllerImageURLExportPreset imageExportPreset NS_AVAILABLE_IOS(11_0); // default value is UIImagePickerControllerImageExportPresetCompatible.

其中,UIImagePickerControllerImageURLExportPresetCompatible會把 HEIF 格式轉(zhuǎn)成 JPEG。UIImagePickerControllerImageURLExportPresetCurrent會顯示原始的編碼格式。

三、編碼轉(zhuǎn)換

HEIF 格式轉(zhuǎn) JPEG 格式

[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {

if ([dataUTI isEqualToString:AVFileTypeHEIF] || [dataUTI isEqualToString:AVFileTypeHEIC]) {

CIImage *ciImage = [CIImage imageWithData:imageData];

CIContext *context = [CIContext context];

NSData *jpgData = [context JPEGRepresentationOfImage:ciImage colorSpace:ciImage.colorSpace options:@{}];

} else {

}

}];

JPEG 格式轉(zhuǎn) HEIF 格式

NSData * UIImageHEICRepresentation(UIImage *const image, const CGFloat compressionQuality)

{

NSData *imageData = nil;

if (@available(iOS 11.0, *)) {

if (image) {

NSMutableData *destinationData = [NSMutableData new];

CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)destinationData, (__bridge CFStringRef)AVFileTypeHEIC, 1, NULL);

if (destination) {

NSDictionary *options = @{(__bridge NSString *)kCGImageDestinationLossyCompressionQuality: @(compressionQuality)};

CGImageDestinationAddImage(destination, image.CGImage, (__bridge CFDictionaryRef)options);

CGImageDestinationFinalize(destination);

imageData = destinationData;

CFRelease(destination);

} else {

// 創(chuàng)建失敗,說明設(shè)備不支持 HEIF 寫入

}

}

}

return imageData;

}

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的java hevc和heif_iOS 影音新格式 HEIF HEVC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。