簡體   English   中英

如何使用 AVAssetWriter 編寫自定義 udta 原子?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM