@wikiメニュー編集表示ツールヘルプブックマーク登録RSS登録
このウィキに参加ログイン
新規ページ作成
すでにあるページをコピーして新規ページを作成 スレッドフロート型掲示板から引用して新規ページ作成(α版) ブログの内容から引用して新規ページ作成(α版) ファイルをアップロードして新規ページ作成(α版) 他のホームページから引用して新規ページ作成(α版)
[PR] 無料ホームページ @PAGES [PR] オークション@pedia [PR] 2ch型無料レンタル掲示板 @chs
@wikiで新規wikiを作成
このページを編集 このページを編集(メニュー非表示編集;α) このページをコピーして新規ページを作成 このページのページ名を変更 このページの編集モードを変更 このページの閲覧/編集権限の変更
このページにファイルをアップロード
このウィキにファイルをアップロード(FTP機能/管理者のみ利用可)
メニューを編集(メニュー部分は非表示で編集)
このページの最新版変更点 このページの編集履歴(バックアップ) このページへのリンク元 このページへのトラックバック
このページをPDFで表示(α版)
関連ページ(α版) 関連ホットワード(α版)
このwikiのページ一覧 編集履歴(バックアップ)のあるページ一覧 このwikiのタグ一覧 このwikiの更新情報RSSこのwikiの更新情報RSS このwikiの新着ページRSSこのwikiの新着ページRSS
このwiki内を検索 @wikiパーツ▶  @wiki便利ツール▶  このwikiの管理者に連絡
@wiki助け合いコミュニティ @wiki助け合い掲示板
wiki(ウィキ)って何?
初心者ガイド
ご利用ガイド 良くある質問 プラグイン一覧 編集モードの違いについて 不具合や障害を見つけたら 管理・設定マニュアル
はてなブックマークする FC2ブックマークに追加 Livedoor クリップに追加 Yahoo!ブックマークに登録 del.icio.usに追加
はてなRSSに追加 livedoor ReaderにRSSフィードを登録 Yahoo!にRSSフィードを登録 BloglinesにRSSフィードを登録 NewsGator OnlineにRSSフィードを登録 iGoogleにRSSを追加
@wikiパーツ:あなたのサイトにWikiデータを簡単表示!
最近更新したページの一覧を表示する 最近作成したページの一覧を表示する このwiki内を検索するフォームを表示する このwikiのタグクラウドを表示する 自動リンク辞書を利用する
@wiki便利ツール:トップページ
まとめサイト作成支援ツール RSSかんたん作成 興味キーワードをチェック!!(RSSナビ) いろんなblogのRSSかんたん作成ページ アマゾン商品検索(簡単アフィリエイト) wikiに株式情報(日本)を表示 wikiに株式情報(中国)を表示 かんたんHTML直接入力 Q&Aサイトかんたん連携作成 wikiに為替情報を表示 はてなアンテナと簡単連携
|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|

raw2qt264

raw movieをQuickTimeのH.264 codecを使って圧縮するMac用プログラム。現状ffmpegをフロントエンドに使ったコマンドラインで、パス数指定ができます。


プロジェクトファイルも入っていますので、Xcode2.2以降(インストールオプションで10.4 Universal SDKを追加)が入っていれば、プロジェクトメニューから「アクティブなビルド構成を設定=>Release 」を選んで、ワンクリックでビルド出来ます。

2006.1.21 Universal Binaryにしました。変更3カ所のみ!

2006.1.23 mplayerをfront endに使うには...
mplayerにパッチ当てちゃえ。ファイル名が"-"だったらstdoutに出す。
% raw2qt264 2 1000 "mplayer in.mpg -vo yuv4mpeg:file=-" out.mov
と思ったらmplayer、stdoutに色々出すのね。raw2qt264でrawデータ以外は捨てる様にしました。が、なぜかmplayerのraw出力は初めの2コマが緑...orz
--- vo_yuv4mpeg.20060123.c	2006-01-23 11:14:04.000000000 +0900
+++ vo_yuv4mpeg.c	2006-01-23 11:14:25.000000000 +0900
@@ -142,7 +142,10 @@
 	write_bytes = image_width * image_height * 3 / 2;
 	image = malloc(write_bytes);

-	yuv_out = fopen(yuv_filename, "wb");
+	if(strcmp(yuv_filename, "-") != 0)
+		yuv_out = fopen(yuv_filename, "wb");
+	else
+		yuv_out = stdout;
 	if (!yuv_out || image == 0)
 	{
 		mp_msg(MSGT_VO,MSGL_FATAL,

2006.2.9 圧縮設定研究中

  • kICMCompressionSessionOptionsPropertyID_MaxKeyFrameInterval
300固定にしてますが、デフォルトの0(automatic)なら、自動的にシーンチェンジでキーフレーム(I-frame)入れてくれてました(MovieVideoChartで確認)。
  • kICMCompressionSessionOptionsPropertyID_Depth
デフォルトk24RGBPixelFormatなんですが、ソースのrawvideoが420なんでk2vuyPixelFormat(2vuy)でも情報量的にはいいハズ。で、やってみると、Codec対応しているのか、指定レートよりかなり小さくなっちゃうけど(バグ?)、HDDは稼げます。見た目も変わらん(様に見える)。
  • kICMCompressionSessionOptionsPropertyID_Quality
AppleのQAによると、codecNormalQualityがデフォルトなんで、codecMaxQualityとか指定してみたが、圧縮時間も見た目も変わらず。

画質的を見るのに客観的な評価ソフトが必要ですね...

2006.3.10 Decompress Sessionで、ガンマ値を設定すれば白くならない。コマンドの引数がに必要か。

Fixed gammaLevel = kQTCCIR601VideoGammaLevel; // = 2.2
ICMImageDescriptionSetProperty(imageDesc, kQTPropertyClass_ImageDescription, 
                               kICMImageDescriptionPropertyID_GammaLevel,
                               sizeof(gammaLevel), &gammaLevel);

コメント

  • 初めの2コマが緑の件。libmpeg2 decoder delayというものがあるそうです。"-vfm ffmpeg"で回避できる可能性があります。デフォルトは"-vfm libmpeg2" -- ばる (2006-01-26 21:57:23)
  • "-vfm ffmpeg"でやってみました。緑のコマは1コマに減りました...
Using (default) progressive frame mode.==========================================================================
Trying to force video codec driver family ffmpeg...
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffmpeg2] vfm:ffmpeg (FFmpeg MPEG 2)

  • QuickTimeのバージョンが7.1超えた頃からエンコード結果が変になってしまっているのですが…。 -- Yoshiki (2006-07-31 21:31:24)
  • ソースによって指定サイズを守らない、って奴でしょうか?実はパス数/ビットレートを0でQTにまかせるようにしてから(リンク先は今日更新しました)、指定のテストしてないんです。 -- 名無しさん (2006-08-03 06:52:15)
  • 前のバージョンでは7.1以上だとブロックノイズ状の画像破綻が断続的に発生してました。新しいバージョンだとパス指定もビットレート指定も無視されますね…。以上、遅くなりましたが報告です。 -- Yoshiki (2006-08-23 22:59:42)


使い方

% raw2qt264 Pass Kbps rawCommand outFile.mov
rawCommandはyuv4mpegpipe形式をstdoutに出す命令です。

  • inFile.mpgを2パス、1000KbpsでoutFile.movに変換
% raw2qt264 2 1000 "ffmpeg -i inFile.mpg -vcodec rawvideo -f yuv4mpegpipe -" outFile.mov

  • ffmpegでインターレース解除,640x480にスケース,90%クロップ
% raw2qt264 2 1000 "ffmpeg -i inFile.mpg -deinterlace -s 640x480 -croptop 24 -cropbottom 24 -cropleft 32 -cropright 32 -vcodec rawvideo -f yuv4mpegpipe -" outFile.mov

メモ

  • 自分でプライオリティーを下げています。
setpriority(PRIO_USER, 0, 10);

  • 圧縮設定は createCompressionSession() で行っており、設定出来る項目と説明は以下にあります。
/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/QuickTime.framework/Versions/A/Headers/ImageCompression.h
の、Properties of compression sessions options objects.

  • Key frame rate (Iフレーム出現間隔)は300コマ(NTSCなら10秒)に1コマに指定。
err = ICMCompressionSessionOptionsSetMaxKeyFrameInterval(sessionOptions, 300);

MaxPartialSyncFrameInterval・AllowFrameTimeChanges・DataRateLimits(Hard limit)等、興味深い設定もありますが、デフォルトのままにしています。

以下のAppleのサンプルコードを参考に作りました。
http://developer.apple.com/samplecode/CaptureAndCompressIPBMovie/CaptureAndCompressIPBMovie.html


  • ffmpegメモ
ffmpegでrawvideoなmovなりaviを作ったときに、QTPlayerで開けるようにするには、-vtag j420とする。
% ffmpeg -i in.mpg -acodec pcm_s16le -vcodec rawvideo -vtag j420 -deinterlace out.mov
% ffmpeg -i in.mpg -acodec pcm_s16le -vcodec rawvideo -vtag j420 -deinterlace out.avi

Visitors: 22792