|
|
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
│<< 前のページへ │一覧 │
皆さんはBAT中で1週間前の日付が欲しくなったりしたことがありませんか? 例えば、タイムスタンプが過去1週間より以前のファイルを削除したいとか。 そういう場合、日付を求めなくても済む方法を探したり、フリーソフトを 探したり、wsh(Jave/VBスクリプト)で組んだりしますよね。 でもBATコマンドのみで何とかスクリプトを組めないかと苦心したことがあり かなり以前某所にUPしたものをここに発表します。 ここには、ちょっとだけ面白い(たぶん最初の頃は思いつかないような) テクニックが使われてたりして何かの参考になるかと思います。
1年ぶりの日記です。 某所とは違うけど、あまり長いことほったらかしにしとくとアカウントが消えるかもしれないので。
でもそのうち懲りずにまたやるかもしれない。
exavi_vfr.auo v0.3.11-1 ■更新内容 オリジナル版exaviのver.0.3.10及びver.0.3.11の反映 ■音声にバグあり 音声無しで使用してください。 時間が無いため未修正のままです。 avsスクリプトでは、KillAudio()を挟む 当初やっつけで作ってたバッファ制御に論理ミスがあり、インターリーブされる音声データ量がどんどん減っていき1バイトとかにもなることがあった。 修正は、バッファ端で折り返しに掛かるときに、データリード時に拡張エリアまでデータコピーするだけなのだが(ミスはライト時にやってた)修正は来年になってしばらくしてからになりそうです。
■更新内容 1)音声ありの場合、エンコードの最終段階でダンマリとなるのを修正 後処理のデータフラッシュで、READERスレッドがWAIT状態に遷移してしまっていた場合、 WRITER側でREADERのWAIT状態を解かずにいたのでREADERスレッドが止まったままなのに、 バッファからあふれている音声データが読み込まれるのを延々と待ってしまっていたため。 (デッドロック) ただし、音声の出力は非推奨のままです。(映像データとまったく同期が取れてないため) 2)コンソールへのプログレス表示で表題が複数行出力されることがあるのを修正 プログレス表示タイミングで、フレームが5フレーム未満の場合、表題が何度でも表示されてしまうようになっていた。(エンバグ) 3)先読みバッファのサイズの指定を追加した。 なお、デフォルトは6フレーム分 4)スレッドの制御を微調整した。 以前は、 READ側:バッファにデータがあればWRITE側のWAIT状態(エンプティでWAIT状態)を即解除 WRITE側:バッファに空きが出来ればREAD側のWAIT状態(フルでWAIT状態)を即解除 だったものを、 READ側:ある程度データが溜まるまでWRITE側のWAIT状態の解除を保留 WRITE側:ある程度空きができるまでREAD側をWAIT状態の解除を保留 さらに、このある程度というのを動的に変動させる。 この処理により、スレッドの空回りを抑えて効率よく動作できることを狙った。 (以前よりCPU使用率が大きく変動するようになり、場合によっては効率アップするかも) 5)実験的に入れていた空白キーのキーボードフックを外した フックのチェーンを他アプリで解除されてしまうことがあるため。 6)プログレス(ダイアログ)で表示されるフレーム数を+1した 0から始まるフレーム位置を表示していたのを1から始まるフレーム数に修正。 exavi_vfr.auo v0.3.9-3 (v0.3.8-9b3までとは、定義ファイル(cfg)に互換性がありませんので再度作成してください)
■さらに修正 更新内容 1)AVI2.0ファイル出力時、AVI1.0互換インデックスをRIFFチャンク内に入れた。 ![]() 2)statusウィンドウのframeの項目に、読み込みフレーム数を追加 読み込みフレーム数/バッファの読み込みフレーム位置(書き込みフレーム数)/総フレーム数 ![]() exavi_vfr.auo v0.3.9-2 (v0.3.8-9b3までとは、定義ファイル(cfg)に互換性がありませんので再度作成してください) ■Winnyについて思うこと もし衰退させようとするのなら、ノードを見張ったりしてないで 開発者が使っていたと謂われるダウンロード専用とか、乃至は ダウンロード数制限なし、自動転送なし、アップロードファイルの削除機能とかある奴を ウィルス対策して積極的に広めたら良いと思う。 公開する名目は、ウィルス対策とかより便利にとか謳えば良い。 ほとんどの一般人は欲しいファイルをダウンロードすることが目的なんだから こういうバージョンが出たら飛びついて使うだろうし、アップロードなんてしなくなるだろう。 これで急激にWinnyワールドを衰退させることが出来ると思う。
■exavi_vfrの更新 なんか最近、ブログでばっかり更新してる気がする。 更新履歴が溜まってきて整理するのが大変になってきてるし、早くなんとかしなければ! ver.0.3.8-9b3からの主な更新内容(思い出せる範囲で記述) 1)exavi.auoの0.3.9の内容を反映 この修正で、AVI2.0ファイルで、AVI1.0互換インデックスがRIFFチャンクの外に 出ちゃってるだけど本当にこれで良いのか気に掛かるところ。 ちなみにVirtualDubでAVI2.0出力では、これはRIFFチャンクの中に入ってる。 2)AVI1.0出力時、ファイルの最後にゴミがくっ付き、ごく稀にmmg(mkvmerge)でエラーになる ことがあるのを対処。 (なおこの場合でもVirtualDub, AviUtl, WMP, AVI_Muxではエラーにならない) これは、VFWのAVIStream関数群でファイルを作成すると、最後のindex部分が余分に 獲得されていてその余計なデータが場合により不正なRIFFと認識されているようです。 対処方法は、ファイルクローズ後にRIFFチャンクのサイズにまで縮めています。 ![]() (VirtualDubのHex Editorでの表示、上記invalid chunk部分を削除するよう修正) 3)AVI2.0出力で、LISTチャンクでAVIXを作成しているのをRIFFチャンクに変更 それに合わせて、先頭のRIFFチャンクのサイズを修正 (AVIX(LISTチャンクヘッダ)までが含まれるようになってたのを含まないようにした) ![]() (純正exavi 0.3.9だとこのようになっているのを以下のように修正) ![]() 4)強制キーフレーム指定有効/無効で、今まで分かれていた0.3.8-8と0.3.8-9b(0.3.8-7)を統合 設定プロパティで選択できるようにしたが、そのため設定ファイル(cfg)の互換性が 失われて、再作成しないといけない。 (リザーブ領域を作ったので今後はある程度は設定項目が増えても互換性は保たれるかも) (とは言っても、XviD(shibuya7/15版)とかに入れ替えるとそこでcfg作り直しなんだが) ・XviDだとNULLありなしで一応正常みたい。(DivXは後述のバグのためNULLなしだけ正常) 5)DivX ver6.x系でもAVI独自のピクチャタイプのシーケンス制御するように修正 0,0,0,1,2,3,4,...というように先頭フレームが重複して(その分ずれて)出力されていた 【制限】 ただそれだけでは、ver.5.x系までとは異なりNULLありの場合おかしなことになる。 0,n,n,n,n,1,2,n,n,n,n,3,n,n,n,n,...というように1フレーム目にNULLフレームが 付加されない。 >>茂木氏が修正されるのを待ちましょう!! 6)B-VOP使用時ごくたまに最後に1フレーム余分に出力されていたのを削除 0.3.8-2で、対処してたがその後のverで再び出力されるように戻してた (タイムコード出力をその分増やす)のを再び削除するようにした。 7)ちらつくので、statusウィンドウのリドローをしないようにした 8)タイムコードの四捨五入をprintfの書式文字列("%.0f")で行わせるように変更 exavi_vfr.auo v0.3.9-1 (v0.3.8-9b3までとは、定義ファイル(cfg)に互換性がありませんので再度作成してください)
●Itsの説明とか以前のブログに、itsで60fps区間を指定すると 再生時一瞬止まったりカクついたりと書いたことがあったんだけど、これは単に 処理が追いつかないでレンダラで不都合が発生したせいだったようだ。 具体的には、私の場合MPCでデコーダとレンダラの間に、あじ氏の色変換フィルタ (NTSC to sRGB Directshow Filter ver2.6)をかませてあり、これの処理を 含めて60fpsのスピードを出すにはPC性能が不十分だったためのようです。 まあ言い訳を書くと、レンダラでジッターや同期オフセットは凄いけど、フレーム欠落は 出てなかったんでそのように思ってしまったんですけど。 タイムコードでも60fpsを完全に制御できないだとか変なことを言って申し訳なかったです。 まあ、みなさんもこのように再生がおかしかったら一度重いフィルタ処理を施していないか どうか確認してみることを勧めます。 ●今、AviUtlでVFRのソースを再圧縮するのに便利なようにしてくれっていう依頼が舞い込んで 来ていますが、再圧縮が欲しいという人ってどのくらいいるのでしょうか? (それ以前にあじ氏じゃなくてどうして私のところにこんな依頼が来たのかなあ?) でももし要望があれば、del-importファイルを取り込んでカット編集できる程度って ことでAddRangeに組み込むのが良さそうな気がしています。 (本当は入力プラグインを作れば良いのかもしれないけどAVISourceあたりにやって欲しい) もっと他の方法が良いんじゃないかって思う人がいたらご意見を聞かせてください。
TO: LeiMing-sann I can speak Japanese only. Please use the simple English. I do not support it by E-mail for such a question and the trouble. Because it is only you have the advantage. Please go to following URL. Please tel me of your situation in detail. - your PC(CPU, Memory), OS, APL, avs script, using filter and codec, and etc... Is not happend memory swapping ? Is not happend in other APL (ex. fast recompress mode of VirtualDub) ?
■Its/Exavi_vfr 前回のあと、猛烈に或るシリーズ本を読み返したくなり、それを読んでいました。 また、なのは&なのはA's、ストラトス、トップをねらえ1&2、十二国記を寝る間も 惜しんで見ていました。それでもまだまだ固め見したい欲求が止まりません。 その合間にエンコしていましたが、デモンベインが、デモンベインが... というわけで、 itvfrのNULLフレームを詰めて出力するオプションを追加してみました。 デモンベインはメチャ混合だが、真面目に区分けする気もなく 取り合えず保存するのにitvfrを使うことにしたけど、やっぱり NULLフレームの出力部分が気になり(3DNRの効きが悪い) これを詰めてしまおうと思ったんです。(でも2passは嫌い) ただし総フレーム数は変化しないので最後にNULLフレームが纏まって出力されます。 opt=1 を指定するとこのモードとなります。 なおこのモードではチャプター、タイムコードとも最後の有効フレームを出力した 後に作成されます。 ただし、このモードはエンコで使うことを前提としており、VirtualDub等で フレームをランダムスキップアクセスすると表示が変になります。 シーケンシャルにコマ送りするなら問題ありません。(バックすることは問題ありません) (3DNR等のフレーム先読みに対しては大丈夫なように作ったつもりです。) ItsCut() おもちゃとして、詰めた後に最後の有効フレームで中断(Ctrl+C)する関数を含んでいます。 これは必ずスクリプトの最後に指定します。 (でも実用的じゃないかもしれません。 exavi_vfrは対応するように修正しましたが、音声ありの場合音声は途中で切れます。 x264.exeではB-Frameを使うと最後の1フレームの画はNULLが出力されるようです。 BATエンコしてる場合、 start /wait "" "c:\auoenc.exe" ... としないとBATも止まってしまうようです。) 【例】 --- foo.avs --- its(opt=1, def="z:\foo.def", chapter="z:\foo.txt", output=".tmc") : #itscut return last --- foo.def --- 0-[30] 'itvfr(diMode=3, ref="TOP")' なお、今回からアーカイブはzip圧縮から7z圧縮に変更しました。 Its v0.8.6 exavi_vfr.auo v0.3.8-9b3
xml文書で、先頭に指定するXML宣言で <?xml version="1.0" encoding="UTF-8" standalone="yes"?> どうやら、mkvmergeが受け付ける符号化宣言は "ISO-8859-1"と"UTF-8"しか無いようです。 (Unicode "UTF-16"も受け付けない) 仕方ないので ●Shift_JISを使う場合は、Simple/OGG形式(言語指定なし)にする。 ●ANSIとUTF-8の場合は、xml形式を選んでも良いが、指定は"UTF-8"とする。 のどちらかにしてください。 SHIFT_JISをUTF-8にコード変換するのはできるんですが、 全ての文字が完全にコンバートされるとは限らないし、 SHIFT_JISを判断するのも面倒なので気が向かないかぎりやりません。 │<< 前のページへ │一覧 │ 一番上に戻る │ |