変更点。
tcfile-in 入力欄追加。--fpsを自動で指定してしまうため、--tcfile-inが使用不能だった。
tcfile-inを設定した場合、自動での --fps指定はしないように、
またmux時のafs用自動タイムコード入力も行われないようにした。
(そもそもtcfile-inとafsは同時に使わないとは思うけど。)
--tcfile-inは--timebaseなしでもなんとかなるが(x264が自動でtimebaseを生成してくれる)、
きちんとコマンド入力欄で--timebaseを指定することをお勧めする。
--timebase 1001/120000 とか。(119.88fps精度の例)
ステータスファイルの入力欄の場所に、タイムコード入力用の入力欄が来てるので注意。
ステータスファイルの入力欄は一枚目のタブに移動しました。
ダウンロード>>
スポンサーサイト
プラグイン製作お疲れ様です。毎回ありがたく使わせていただいております。
これは要望なんですが、カスタムマトリクス設定(ファイル指定等)をGUI上で出来るようにしてほしいです。
コマンドから打てばと言えばそれまでですが・・・お願いします。
早速の対応、ありがとうございました^^
とりあえず、まぁ、以前のx264gui.auoの頃から気になっていた部分もあるのですが、GUIの項目の位置がオカシイ部分があるので突っ込ませてもらいます。
> マクロブロック タブ
このタブ内でマクロブロック的オプションはpartitions/mixed-ref/8x8dctくらいしかありません。
従って、このタブ名で括ることは不適と言えます。
フレームか、スライス(AVCの規格的に)というタブ名にするべきです。
>Bフレーム設定
mixed-refs/refはBフレームに関係ありません。Pフレームに対しても有効です。
どちらかと言えば動き予測の項目に入るものです。
open-gopはBフレームのGOP境界に関するものなので、Bフレーム設定の中に含むべきです。
>IDRフレーム間隔の上限/下限
open-gop/intra-refresh使用時にはコレは偽です。
seraphy氏の更新が途絶え始めたあたりに加わった機能なので仕方ないと言えば仕方ないのですが。
Recovery Point SEIが付属するフレームまたはIDRフレームの間隔の上限/下限が正しいです。
x264devではこれをkeyframeと言います。(Apple的にはkeyframeじゃないです)
どちらかと言えばランダムアクセスポイントの間隔の上限/下限というのが誤解のない表現でしょう。
>シーンカット
この項目はレートコントロールとはあまり関係有りません。
ちなみにopen-gop時にscenecutを弱めるとIフレームに先行するBフレームが入りやすくなります。
>重み付け予測 P frame Blind offset
これはもうrev1802にて消滅しました。
Blind offset -> Simple analysis
にするか、
Blind offset -> No duplication
Smart analysis -> Duplication
にするべきです。
詳しい説明ありがとうございます。
だんだんスペースがなくなってきて、とりあえず空いてるところに適当に追加する感じになっていました。もうタブの枚数を増やしたくないですし。open-GOPの配置とか適当すぎてすみません。
そういえば、大昔はrefも動き予測の中にあった気がします。まだx264が3桁のころでしょうか。で、いつの頃か、Bフレームの中に移って、「あれーそんなもんかなあ」って思った記憶があるようなないような。気のせいかな。
・自動2pass + afs時にあとからvfr化するのではなく、--tcfile-inを使う
・x264guiExの設定ファイルの互換性の向上
・要望のあった--cqmfileボックス
あたりも考えているので、それとともに一度GUIの配置・表示を根本的に修正したいと思います。
はじめまして。某Wikiの管理人です。
まだこのプラグインを詳しく動作させてない段階ですが、昔作りたかったものに近づいててすごいというか羨ましいというか。
昔自分が作ってたこれを思い出しました(ソース同梱)。
http://www.wikihouse.com/aviutl/index.php?%A1%DA%B4%C9%A1%DB%B4%C9%CD%FD%BF%CD%A4%CB%A4%C4%A4%A4%A4%C6#j3021e1d
Seraphy氏版は左上の「開く」「保存」が便利なんですよね。でも設定ダイアログがやや引っかかってました(なんであんなに小さいダイアログのままなのかとか、なぜ数値入力にテキスト入力欄を使っているのかとか)。
んで作ったのがそのプラグインだったんですが、もっと実現したいことがあるもののプログラミング力に乏しくて残念な状態のまま、そのうちビルドもできなくなって放置した次第…。
とりあえず、自分のやつは入力制限を取っ払った方がよかったのかもしれないと今は思ったり。
なにはともあれ、自分が当時一番やりたかった「x264の分離」を実現なさったEx、参考にさせていただきます。
追々「MP4(H.264)で出力」のページも書き換えます。
>muken様
いろいろと勉強になります。
どうもありがとうございます。
最初改造版x264guiのほうを作る前に、x264outを参考にx264分離しようと思ったのですが、「TCP Deliver それ無理無理無理」みたいな感じで断念しました。で、今のパイプ方式に至るわけですが…実はSeraphy氏の音声エンコードパイプ処理を流用しているだけだったりします。それにmuken氏のtc2mp4Modがなければ成立していませんしね…
いろんな人の作ったものや、書いたものにずいぶん助けられました。
設定ダイアログは、前も書きましたが、改修を考えています。だいたい、色空間の中に--videoformatておかしすぎます。関係ないし。誰だこんなとこ入れたの。あ、私かorz
Aviutl使いとしてWikiは大変参考にさせてもらってます。
ものすごくたくさんのプラグインが掲載されていて、すごいです。
まともなプラグインを作れるほどの技量を身に付けられてなくて(音声パイプ処理…それseraphy氏のソースのどこですか?状態です)、ああやって情報集めるだけしかできてないわけですが、お役に立てていれば幸いです。
先ほど更新しましたが、「設定画面下部の表示欄はダブルクリックで拡大可能。」を見つけて「おぉ…」。スマートでいいですね。
x264の更新も来たようですが、こちらだけに落ち着けば楽になりますね(?)。これからも更新楽しみにしています。
またお邪魔します。
パイプを採用しているx264プラグイン系全て(Yan氏版やぽむ氏版含む)でひとつ気になったことがありまして、それの修正ができないかと思いつつ、その前に簡単な方からやってみようと思ってその前段階をやってみました。
具体的にはAviUtlのキーフレーム設定がx264に渡っていない、という点なのですが、その前段階として、AviUtlのコピーフレーム設定もx264に渡っていない方を修正してみました。
http://www.wikihouse.com/aviutl/index.php?plugin=attach&pcmd=open&file=x264auo_pipe.zip&refer=%A1%DA%B4%C9%A1%DB%B4%C9%CD%FD%BF%CD%A4%CB%A4%C4%A4%A4%A4%C6
> ○現在のフレームをコピーフレームにする
> 出力時にフレームデータを強制的に0にすることによって
> 1つ前のフレームから変化の無いフレームにします。
> codecによっては上手く出来ないことがあります。
という文がaviutl.txtにありまして、seraphy氏はコピーフレームをドロップ扱い(≒削除フレーム)にしていたのですが、「1つ前のフレームから変化の無いフレーム」っていうのはドロップじゃなくてコピーのような気がしたのでそういう実装にしてみました。
もっといい実装ができればいいのですが。
それはさておき、一番修正したいキーフレーム渡しなのですが、seraphy氏は
f = oip->func_get_flag(i_frame);
if(f & OUTPUT_INFO_FRAME_FLAG_COPYFRAME){
drop |= 0x0001;
}
if( opt->qpfile ){
parse_qpfile( opt, &pic, i_frame + opt->i_seek );
} else if (f & OUTPUT_INFO_FRAME_FLAG_KEYFRAME) {
pic.i_type = X264_TYPE_IDR;
}
とpicを直接変更していましたがパイプじゃ無理なわけで(?)、「オプションに-qpfile無しならOUTPUT_INFO_FRAME_FLAG_KEYFRAMEを確認→指定があればqpfile作成→オプションに-qpfileを追加」を考えていますが、実現できるのかどうかさっぱりです。なんとなくrigaya氏がパッと実現してしまいそうな気もしますが、一応あがいてみます。
なるほど。というか私キーフレームもコピーフレームも思いっきり無視してました…いかんいかん。ありがとうございます。
まず、コピーフレームについて。
afs使用時は実はSeraphy氏ので全く問題ないのです。afsだとフレームレート一定ではなく、フレームの表示タイミングを(x264guiならpic.i_ptsで、x264guiExならtimecodeで)指定します。dropしてしまえば、次のコピーフレームじゃないフレームが来るまで、同じフレームを表示することになるので、「コピーフレーム」が疑似的に再現でき、かつフレーム数も節約できてちょうどいいのですね。フレームをケチれば、高速化できて容量も(少しは)縮みます。
ですが、フレームレート一定のafs不使用時はかげろうさんのおっしゃる通り、まずいです。dropしてしまうと、フレーム数が減って再生時間が短くなってしまいます。x264guiのころから気づきませんでした。ご指摘感謝です。ソースをありがたく取り込ませていただこうと思います。
キーフレームのほうは、たしかに--qpfileですね。…qpfileの書き方を勉強します…
え~、コピペ改変繰り返しまくったら奇跡的に想定どおりに動いてくれました。
キーフレーム設定対応版も作りました…運良く作れました。
…が、後からAFSのことを思い出してAFS有効にしていろいろ試してみて、結果として
・AFS有効時にはキー&コピーフレーム設定を無視
・AFS無効時(自分はこれしか使わない)にはキー&コピーフレーム設定を反映
という形を暫定的に取りました、というか自分にはAFSがさっぱりなのでこれが限界です。
http://www.wikihouse.com/aviutl/index.php?plugin=attach&pcmd=open&file=x264auo_pipe2.zip&refer=%A1%DA%B4%C9%A1%DB%B4%C9%CD%FD%BF%CD%A4%CB%A4%C4%A4%A4%A4%C6
なんといいますか、杜甫な実装でこれで本当にいいのか怪しかったりしますが、rigaya様に(特にAFS対応の形に?)素敵に書き換えてもらえたら幸いです(他力本願、すみません)。
自分が参考にした--qpfile情報は
http://mewiki.project357.com/wiki/X264_Settings#qpfile
で、Iフレームにしました(Kフレームじゃないほうがいい…と思ったのですが自信ないです)。
以上。気になってた点は全て(自分的には)対応できて一区切りついたので、またWikiの系統別作業(これからが問題…)に戻ろうと思います。お邪魔しました。
かげろう様、お疲れ様です…
そうですね、afs使用時にqpfileでキーフレームの指定は無理があるので、afs時は無効ですね。
コピーフレームについては、あのままだとafs使用時にまずいことになると思われる個所があったので、その辺を修正して取り込ませていただくことにしました。具体的にはafs_get_video関数で、next_jitterがちゃんと受け取れなくなるのです。
そのあたりを取り込んだプログラム自体はできたので、これからテストします。
いろいろとありがとうございます。
横から失礼します。
r1764の変更で、qpfileのqpを自動にする場合は、-1ではなく省略することになりました。まだ-1でも動くんですが将来的にどうなるかは分かりませんので
fprintf(qpFile, "%d I\r\n", i_frame);
の方がいいと思います。
>r1764
猫科さんのとこでさっと眺めていまひとつピンときてなかった、
>qpfiles no longer use -1 to indicate "auto"; QP is just omitted. The old method should still work though.
>qpfileは"auto"を示すために-1を使用しなくなった;QPは単に省略される。ただし、古い方法でもまだ動くはず。
ってこの--qpfileのことだったのかorz
御指摘、誠にありがとうございます。見事に気づいておりませんでした。