![](/img/trans.png)
[英]How to convert a MTLTexture to CVpixelBuffer to write into an AVAssetWriter?
[英]How to write a custom udta atom with AVAssetWriter?
我在 iOS 9.3 SDK 上使用AVAssetWriter
編寫打包在 MP4 容器中的 AAC。 很標准的東西。 它運行良好。
但是,現在我需要添加一個包含在udta
原子中的原子(在本例中稱為mine
的),所以我這樣做了:
AVAssetWriter * writer =....
NSData * valueData = [NSJSONSerialization dataWithJSONObject:obj options:0 error:nil];
AVMutableMetadataItem * item = [AVMutableMetadataItem metadataItem];
item.keySpace = AVMetadataKeySpaceQuickTimeUserData; //udta
item.key = @"mine";
item.value = valueData;
writer.metadata = @[item];
[writer startWriting];
...
然后最后, udta 原子根本沒有出現在輸出文件中。 這里出了什么問題?
終於找到問題了。 如果您在純 MP4 ( AVFileTypeMPEG4
) 模式下創建資產AVFileTypeMPEG4
器,那么自定義元數據似乎會無聲無息地丟在地板上。 解決方案是使用 QuickTime 容器文件類型:
AVAssetWriter * writer = [AVAssetWriter assetWriterWithURL:url fileType:AVFileTypeQuickTimeMovie error:nil];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.