Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/147-19f7dbf8

-件のトラックバック

-件のコメント

[C76] 大変興味深いです

大変興味深い試みですね。よろしければ「はしょった」部分も含めてご教示いただけませんでしょうか?

[C77]

こういうの興味持ってくれる人、嬉しいです。なかなか居ないですから。少なくとも身の回りには。

結論的には、処理時間が莫大で、現時点でのハードでは使い物になるアプリは出来ないってのが結論で、この模索は終止符を打ちました。

「はしょってる」ってのは、「これが何に応用できるのか」って話とかでして、、この記事読んで、興味深いと思える人なら、このサンプルだけで行けると思いますよ。キモになる所は書いてますから。

過去記事を読むと、ここに行き着いた流れで、もう少し理解して頂けるかと思います。

UIImageからAVPictureへの変換したいと考えたなら、これが答えです。「UIImageからAVPictureへの変換」が意味する所を書くのは大変すぎますぅ~ 本一冊程度のボリュームになっちゃいます。それで実用に耐えないんですから、やる気でないですよぉw

[C82] ありがとうございます!

いや、英語の掲示板みるとUIImageからmovieの書き出しどうやるの?っていう質問が相当出てますから興味をもつ人は多いと思いますよ。
情報ありがとうございます。掲載してある情報を元にトライしてみたいと思います。同じく「処理時間かかりすぎ」になるとは思いますが。。

[C83] Re: ありがとうございます!

QTKit(でしたっけ)が使えれば、こんなことしないでイイんですよね。

要は動画の加工がしたくて、いったん静止画に分解して静止画を加工してまた動画に戻すみたいな事を
しようと思うと、こうなるりました。Flash使えれば、簡単なのになぁと思ってましたよ。
でも今はアドビFlashで作ったアプリをiPhoneアプリに変換できるみたいですから、そっちの方が好いかもです。

ただし、お金はかかるでしょうが。
  • 2011-08-12
  • kovayashi
  • URL
  • 編集

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

UIImageからAVPictureへの変換

元ネタはこちら。これをobjective-cに書き換える。

#define rgbtoyuv(r, g, b, y, u, v) \
y=(uint8_t)(((int)30*r +(int)59*g +(int)11*b)/100); \
u=(uint8_t)(((int)-17*r -(int)33*g +(int)50*b+12800)/100); \
v=(uint8_t)(((int)50*r -(int)42*g -(int)8*b+12800)/100);
- (void) rgb:(uint8_t *)pRGB yuv:(uint8_t *)pYUV rgbIncrement:(unsigned int)iRGBIncrement width:(int)iWidth height:(int)iHeight bFlip:(BOOL)bFlip {
const unsigned iPlaneSize = iWidth * iHeight;
const unsigned iHalfWidth = iWidth >> 1;

// get pointers to the data
uint8_t *yplane = pYUV;
uint8_t *uplane = pYUV + iPlaneSize;
uint8_t *vplane = pYUV + iPlaneSize + (iPlaneSize >> 2);
const uint8_t *pRGBIndex = pRGB;

int y;
for (y = 0; y < (int) iHeight; y++) {
uint8_t *yline = yplane + (y * iWidth);
uint8_t *uline = uplane + ((y >> 1) * iHalfWidth);
uint8_t *vline = vplane + ((y >> 1) * iHalfWidth);

if ( bFlip ) // Flip horizontally
pRGBIndex = pRGB + ( iWidth * ( iHeight -1 -y ) * iRGBIncrement );

int x;
for (x=0; x<iWidth; x+=2 ) {
rgbtoyuv ( pRGBIndex[0], pRGBIndex[1], pRGBIndex[2], *yline, *uline, *vline );
pRGBIndex += iRGBIncrement;

yline++;

rgbtoyuv ( pRGBIndex[0], pRGBIndex[1], pRGBIndex[2], *yline, *uline, *vline );
pRGBIndex += iRGBIncrement;
yline++;
uline++;
vline++;
}
}
}


で、使い方は

buffer = (uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
avpicture_fill((AVPicture *)frame, buffer, PIX_FMT_YUV420P, outputWidth, outputHeight);

・・・

CGImageRef newCgImage = newImage.CGImage;
size_t bitsPerPixel = CGImageGetBitsPerPixel(newCgImage);
size_t bitsPerComponent = CGImageGetBitsPerComponent(newCgImage);

CGDataProviderRef dataProvider = CGImageGetDataProvider(newCgImage);
CFDataRef bitmapData = CGDataProviderCopyData(dataProvider);
uint8_t *buff = (uint8_t *)CFDataGetBytePtr(bitmapData);
[self rgb:buff yuv:buffer rgbIncrement:bitsPerPixel/bitsPerComponent width:outputWidth height:outputHeight bFlip:NO];

CFRelease(bitmapData);


かなりはしょってます。(需要があるならコメント欄に連絡先でも書いて下され。)

これが出来ると、動画から一旦UIImageへ(以前書いたブログはこちら)そのUIImageを加工して(例えばテロップを入れるなどのAR加工)またそれを動画に戻す事ができる。iPhone上で処理すると時間がかかるが。

ま、兎に角できる。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/147-19f7dbf8

0件のトラックバック

4件のコメント

[C76] 大変興味深いです

大変興味深い試みですね。よろしければ「はしょった」部分も含めてご教示いただけませんでしょうか?

[C77]

こういうの興味持ってくれる人、嬉しいです。なかなか居ないですから。少なくとも身の回りには。

結論的には、処理時間が莫大で、現時点でのハードでは使い物になるアプリは出来ないってのが結論で、この模索は終止符を打ちました。

「はしょってる」ってのは、「これが何に応用できるのか」って話とかでして、、この記事読んで、興味深いと思える人なら、このサンプルだけで行けると思いますよ。キモになる所は書いてますから。

過去記事を読むと、ここに行き着いた流れで、もう少し理解して頂けるかと思います。

UIImageからAVPictureへの変換したいと考えたなら、これが答えです。「UIImageからAVPictureへの変換」が意味する所を書くのは大変すぎますぅ~ 本一冊程度のボリュームになっちゃいます。それで実用に耐えないんですから、やる気でないですよぉw

[C82] ありがとうございます!

いや、英語の掲示板みるとUIImageからmovieの書き出しどうやるの?っていう質問が相当出てますから興味をもつ人は多いと思いますよ。
情報ありがとうございます。掲載してある情報を元にトライしてみたいと思います。同じく「処理時間かかりすぎ」になるとは思いますが。。

[C83] Re: ありがとうございます!

QTKit(でしたっけ)が使えれば、こんなことしないでイイんですよね。

要は動画の加工がしたくて、いったん静止画に分解して静止画を加工してまた動画に戻すみたいな事を
しようと思うと、こうなるりました。Flash使えれば、簡単なのになぁと思ってましたよ。
でも今はアドビFlashで作ったアプリをiPhoneアプリに変換できるみたいですから、そっちの方が好いかもです。

ただし、お金はかかるでしょうが。
  • 2011-08-12
  • kovayashi
  • URL
  • 編集

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

kovayashi

Author:kovayashi
・嫌いなもの
 →好きなもの

・インストール
 →バンドル
・バックアップ
 →アップロード
・努力
 →チート

最近のトラックバック

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。