Objective-C
MacOSX
QuickTime

Objective-C で avi ファイルの FourCC を書き換える

More than 5 years have passed since last update.

avi の特徴

0-4 バイト: RIFF RIFF ヘッダー
8-12 バイト: AVI RIFF の FourCC
12-16 バイト: LIST
20-28 バイト: hdrlavih データフォーマット定義リスト、avi メインヘッダー
96-104 バイト: strlstrh ストリームヘッダーチャンク
108-112 バイト: vids ならヘッダの次にビデオストリームがある
112-116 バイト: FourCC
164-168 バイト: strf ストリームフォーマットチャンク
188-192 バイト: FourCC

QuickTime だと 188-192 の FourCC 書き換えが影響するっぽいので、ここをいじれば良いかもしれない。
YUY2 な avi は yuvs にすれば QuickTime で読める。

http://msdn.microsoft.com/ja-jp/library/cc352264.aspx
http://www.usagi-goten.com/jp/AVI_structure.html

書き換え

NSFileHandleでシークして上書き
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:aviFilePath];

NSData *newData = [NSData dataWithBytes:(void*)[fourCC cString] // 最近はDeprecatedメソッドらしい。別の方法で
                             length:4];

[fileHandle seekToFileOffset:188];
[fileHandle writeData:newData];
[fileHandle closeFile];