Avisynth 初心者質問スレ Part9 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Avisynthの初心者質問スレです
・質問する前に
1.まずは、過去ログを読むか検索エンジンなどを使って調べましょう
2.次に同じような質問がないかCtrl+Fでスレッド内を検索しましょう
・VapourSynthの話題はできるだけ専用のスレでお願いします
・荒らし・煽りは綺麗にスルーしましょう
■前スレ
Avisynth 初心者質問スレ Part8
http://echo.2ch.net/test/read.cgi/avi/1463062591/
■関連スレ
・Avisynthを絶讃ιょぅょ Part32
http://echo.2ch.net/test/read.cgi/avi/1486535501/
・お前らのショボイAvisynthスクリプト貼ってください part4
http://echo.2ch.net/test/read.cgi/avi/1486693045/
・VapourSynth Part2
http://echo.2ch.net/test/read.cgi/avi/1488452387/
■外部リンク
・Avisynth wiki(英語)
http://avisynth.nl/index.php/Main_Page
・avisynth.info (旧 AviSynth Wiki、日本語)
http://www.avisynth.info/
・AviSynth ニュース
http://news.avisynth.info/ んん・・・?なんだそれ。普通ならYV12(I420)も再生できるはずだが・・・。
I420だけ何かが阻害してるとかなのかな。まあ解決したならいいか。
いまいち釈然としないけど、>>353は関係ないとか言ってすまんかった。 L-SMASH-Works絡みです
・L-SMASH-Works-r929-20170225-32bitやL-SMASH-Works-r929-20170224-64bit
・LSMASHSource-AviSynth-plugin-r929-msvc-64bitやLSMASHSource-AviSynth-plugin-r929-msvc-32bit
の違いってありますか?
フレームレートスレで出たL-SMASH-Works-r929-ffmpeg-fix2は後者だと思いますが前者はバグは無いのでしょうか? >>357
普通そういうのはURLも書くもんだと思うが・・・まあAvisynth Wikiのとこなんだろうが根本的に勘違いしてる。
バグ
・ffmpegのfield picture structure関連のバグ。最近のBSのTSデコードで映像が崩れることがあるというもの。
今年2月上旬にffmpeg本家にnekopanda氏のパッチが入ったので、
その後のffmpegをリンクしてビルドしたL-SMASH Worksを使えば問題ない。
Avisynth wiki: http://avisynth.nl/index.php/LSMASHSource
・L-SMASH-Works-r***〜は、Avisynth用がSharedビルド(?)で、AviUtl用とVapoursynth用も含む。
・LSMASHSource-AviSynth-plugin-r***〜は、Avisynth用のみ。Staticビルド。
・ffmpegのパッチはOpus関連で1つ当ててるようだが、それ以外は不明。
・r929は昨年2月にビルドしたものなので、当然上記のバグは修正されていない。
・VS2015ビルド
フレームレートスレで出たnekopanda氏版: https://github.com/nekopanda/FFmpeg/releases
・Avisynth用とAviUtl用。
・ffmpegは3.4に上記のバグ修正パッチを当てたもの。
・MSYS2/GCCビルド >>358
内容が同じなら書かなかったのですが・・・例えばx86で比較すると(AviSynth用)
L-SMASH-Works-r929-20170225-32bit
・avcodec-57.dll (10.3MB)
・avformat-57.dll (1.59MB)
・avresample-3.dll (147kb)
・avutil-55.dll (653kb)
・LSMASHSource.dll (524kb)
・swscale-4.dll (496kb)
LSMASHSource-AviSynth-plugin-r929-msvc-32bit
・LSMASHSource.dll (9.36MB)
L-SMASH-Works-r929-ffmpeg-fix2
・LSMASHSource.dll (11.3MB)
自分は前者しか使ってなかったのでこの容量の違いから後者の差し替えかな、と単純に思ったわけです
細かくご教示ありがとうございます >>359
ファイル構成が違うのは、ビルド時の設定で、staticリンクしてるか、dynamicリンクしてるかの違い
ファイルが1つしかないやつはstaticリンクで全部そいつに含まれてるから
中身の違いとはあまり関係ない >>フレームレートスレで出たnekopanda氏版: https://github.com/nekopanda/FFmpeg/releases
dr = True で映像出ないな >>362
ただの誤判定じゃ?、ウィルス判定したBaidu自体があれだし とは思うんですけども・・
ところで、↓をThreadRequestを使うようにするにはどうしたらいいんでしょうか?
https://github.com/chikuzen/AvsReader/blob/master/YUY2Converter.avsi
作者のChikuzen様のBlogにてThreadRequest使わないと速度が出ないとのことなので
ThreadRequestについて調べてるのですが・・ threadrequestってなぜか姿消したよね
ソースコードとってあってよかったよ avisynthのフレーム補完スクリプトを使用する時、30fps以下の動画にのみ適用する記述ってどうすればいいですか?
60fpsの動画再生時にも何かしているようで処理が重くて動画がカクついてしまいます avisynthのフレーム補完スクリプトなんていくらでもあるわけで
スクリプト自体貼ってくれないとアドバイスしようがない >>367
すいませんこれです
http://i.imgur.com/x49hclY.png
もし動画が30fps以下ならこのコードを適用、それ以外なら何もしないといった感じにしたいです hokanClip = (FrameRate() <= 30) ? InterFrame(〜) : last
hokanClip
でいいんじゃね。 >>369
スゲー一瞬で解決しました!ありがとう! スクリプトを動かしているプロセスの実行ファイルのフルパスを取得したいのですが
どうしたらいいのでしょうか?
http://forum.doom9.org/showthread.php?p=1260276#post1260276
で配布されているProgramName.dllプラグインを試してみたのだが、取得できるのは
フォルダーパスが省略されて "ファイル名.拡張子" だけとなっています。
呼び出し元のアプリ毎の処理をスクリプト側で?:演算子を使って条件分岐させる必要が
出てきたのに、対処法が見つからなくて困っています。 >>372
使用アプリはコンソールアプリとは限らないためバッチファイルは使えません。
1つのスクリプトを複数のアプリで共有しなければならないケースが最近よくあります。
特に、多数のメディアプレイヤー等のDirectShowアプリから呼び出される
ffdshow video processorでAvisynthを使う時、ffdshow標準のプリセット自動読み込み機能
だけでは対応しきれない複雑な条件分岐を?:演算子とユーザー定義関数で実装する必要性が
出てきました。
そのためにも、呼び出し元のアプリが何であるかをはっきり識別できる必要があります。
ProgramName.dllプラグインは "C:\foo\foo.exe" も "C:\ber\foo.exe" も共に "foo.exe" を
返してしまうためこの2つを区別することができません。
またバッチファイルのIFコマンドなども、対応アプリがコンソールアプリ等コマンドラインでの
自動実行に対応したものでなければなりません。 状況がよくわからんので見当違いになってしまうかもしれんが
C:\bar\foo.exeをfoo_bar.exeに名前を変えて運用してしまう とか 実行ファイルのパスによって処理を変えるという時点で、
前提条件を見直した方がよさそうな気はするよね。 呼び出し元のアプリごとに処理が代わるならそれごとにスクリプト組むのが普通だわなぁ
同一スクリプトでコメントアウトで対処することも多いけど
呼び出し元アプリがCLIだけじゃないっていうんだからバッチで振り分けてるわけではなく
ユーザー自身がそのスクリプトをどのアプリに食わせるか判断してるわけだし
自分で判断できるなら自分でコメントアウト箇所いじれるでしょという気はする >>376
ffdshowでAvisynthを使うという例が書いてあるんだから、
「複数のアプリがffdshow経由で同一スクリプトを呼び出すので
そのスクリプトの中でアプリごとの分岐処理がしたい」
という要望自体は理解できるんじゃないか? ttps://github.com/enccc/AviSynth-GetProgramName2/releases
GetProgramNameがフルパス取得できないらしいので、新しく作り直してみた
名前は衝突しないようにGetProgramName2(bool "full_path")にしてる
full_pathはデフォルトでfalseだから何もしなければGetProgramName()と同じように動くはず
GetProgramName2(true)とするとフルパスが取得できると思うんだけど、どうかな?
おまけでGetProgramName2_Util.avsiも付属してる
オートローディングするなりImport()するなりしておけば、GetProgramName2()をGetProgramName()で呼び出せたり、
GetProgramDir()でフルパスからプログラム名を除いたフォルダ名までのファイルパスを返してくれる
1時間半ぐらいで書き上げた手抜きの即席プラグインなのでうまく動かなかったらすまねぇ・・・
それと動作に追加でインストールが必要なランタイムはないはず ごめん追記で書かせてもらうけど・・・
仕様として、内部でワイドバイト文字列からマルチバイト文字列に変換してるんだけど、
その時に変換できない文字があると「?(半角疑問符)」に置き換わるようになってます
なので使うときはそういう文字がないようにしないと
取得したプログラム名やパスを文字列比較などに掛けて分岐する時に問題が起こるかもしれない
まぁよほどファイル名やファイルパスに特殊な文字を使ってないと引っかからないと思うので
そこまで気にしなくてもいいはず
このプラグインの原案は結構前に出来上がってたんだけどやる気失ってた所だった
ちょうどピンポイントに困ってる人がいたのでやる気振り絞って書ききってみた 動くか分からないけど・・・ >>378
横から光の速度で頂いた
2バイト関連は確認してないが、32bit/64bit共にエラーなく動いてるthx >>378
わざわざプラグインを作ってくれてありがとうございます。
早速試してみましたが、残念なことにうまく動作しませんでした。
まず、アプリのパスが "C:\folder\app.exe" であり、環境変数%Path%に "C:\folder" が
追加されているものとします。
そして、コマンドプロンプトから
>app
として起動した場合、
GetProgramName2(true) = "app"
GetProgramName2(false) = "" (長さ0の文字列)
となってしまいます。
一方、
>"C:\folder\app.exe"
とちゃんとフルパスを打ち込んで起動した場合は、
GetProgramName2(true) = "C:\folder\app.exe"
GetProgramName2(false) = "app.exe"
と正しい値を返してきます。
たぶん起動時のコマンドラインをそのまま解釈している仕様のためと思われます。 あとそれから、今かなり強引な手法でアプリのフルパス等のプロセス情報を取得する方法を
思いつきました。
まず、AvisynthからVBScriptの実行を可能にするwarpsharp.dllプラグインを導入します。
次に、VBScriptからWin32APIをはじめ任意のDLLを呼び出し可能にするSFC miniを導入します。
そして、SFC miniを使ってkernel32.dllのGetCurrentProcessId()関数を呼び出しアプリの
プロセスIDを取得し、これに基づくプロセス情報のオブジェクトをWMIを使って取得するコードを
VBScriptで書きます。
あとはこのVBScriptをwarpsharp.dllプラグインのWScript()/WSInvoke()フィルターを使って
呼び出すだけです。
時間があるときにこのVBScriptのコーディングに挑戦してみようと思います。 >>381
空文字列が返ってくるのはすまねぇ俺のミスだ
ちょっと今修正してる
ご指摘の通り、コマンドライン引数を取得して呼び出したプログラムの文字列を取り出すから、
呼び出したコマンドがフルパスじゃないの想定してないんだよね・・・
修正方法は考えるけどちょっと時間かかるかも ttps://github.com/enccc/AviSynth-GetProgramName2/releases
怪しそうな所少し変えたけど空文字返ってくるのはこれで直ってる? 連投ごめんなさい
ttps://www.axfc.net/u/3904037
> そして、コマンドプロンプトから
> >app
> として起動した場合、
これをちょっと何とかしてみようとやってみた 手元でavs2pipemod -y4mp input.avsとすると、
GetProgramName2(false)でavs2pipemod.exe、GetProgramName2(true)でC:\hogehoge\avs2pipemod.exe、
と表示されててパット見改善できたっぽいんだけどどうかな?
ちゃんと動くようなら正式にソースコード書き換えたいんだけど・・・
私は寝るので本格的に反応できるのは明日の夕方以降になるかもしれません ID:o1+lgvL90さんじゃないけど
勝手に直したよ
GetProgramName2_0.1.1_mod
https://www.axfc.net/u/3904208
コマンドライン引数のパス情報を使うのをやめてWin32 APIから直接パス取得するようにした ttps://github.com/enccc/AviSynth-GetProgramName2/releases
手元では問題ないっぽいからアップした
バイナリは>>385と殆ど変わらないはず
>>386
ごめん入れ違いになったけどGetModuleFileNameを使うやつ今あげちゃった
後日読んで参考になった所あったらソースにいれちゃうね avisynth2.5.8MTを使ってて、avisynth+を導入してみたのだが、その後aviutlを起動すると応答なしになる。
avisynth.dllを元に戻すと正常に使えるようになるので、ここだと思うのだけど、+にする場合、他に何か必要なものあるんです?
結構調べたのだけどわからず…
もしかして、以前の2.5.8がいたらダメとかある?
環境
os:windows7 64bit pro
avisynth2.5.8MTは同居 >388
例えば
Avisynth 2.6.0 MT 32bit
Avisynth+ xxxx 64bit
の同居はできるけど、32bit同士は同時同居はできないんじゃ?
avisynth.dllの差し替えが毎回必要になると思うのと
両方で使えるプラグインだけに絞らないと変になりそう >>388
AviUtl側でAVSを読むために使っている手法というかプラグインは何? >>388
うーん
やはり+入れてるのに、2.5.8がいるのが悪いのかな
>>390
pop@4bit氏のL-SMASH Worksつかってますね。
2.5.8ではavspmodからaviutl呼び出して、編集とか可能です。
aviutl単体で起動しても、応答なしになります。 「同居させてる」ってどういうこと?
以前のavisynth.dllを残したままplusを導入することはできないと思うのだけど・・ >>392
同居というか、設定ファイルとかは残してるってだけですね。
systemの方には+のavisynth.dllしかおいてないです。
なんか、avsfilterが悪さしてるっぽいのを、参考サイトの管理人から教えていただいたので、帰宅したら試してみます。 全体的に説明不足すぎる。何をもって同居と言ってるのかさっぱりわからん。
設定ファイルってなんのことだよ。「2.5.8がいる」ってどこにだよ。
どのバージョンのAvisynth+をどういう方法でインストールしたのかとか
状況を他人にわかるように説明する努力くらいしてくれよ。 そもそもAviSynthに設定ファイルなるものは存在しない
そして同時に複数のAviSynthは同居できない(32bitと64bitとで別バージョンを使う場合を除く)
AviSynth側の問題なのかAviUtl側の問題なのか切り分けてない
わざとなのか天然なのかわからないが問題が発生する状況を詳細に書かずぼかしている
これで解決させられるほどこのスレエスパー揃いじゃないよ
他の人も言ってるけど何をしたら問題が起こるのかを特定して、その現象が発生する最低要件を見つけて、
これ以上簡単に再現する方法が無いだろうというところまで絞り込んだ上で質問したほうが質問する側も回答する側も回答しやすいし解決しやすい あれ?ID被ってるや
午前中に書き込んでる人とは別人なのでよろ 2.5.8環境は完全に捨ててr2664なり+CUDAにした方がいいんじゃないの 同居といってるのは、C:¥Program Files (x86)¥にavisynth+と2.5.8があることを指してます。
事象は>388で言っていますが、avisinth+導入して、avisynth.dllが差し変わるとaviutlが起動しても応答なしになります。
http://avisynth.nl/index.php/Avisynthplus/Downloads
ここから、本家r1574を入れたあと、avisynth+r2664を入れています。
aviutlは99hのバージョンです。
おそらくaviutl側の問題だと思ってますが、どのようにしたらaviutlがavisynth+で動くようになりますでしょうか? >>398
avsfilterはaviutlからavisynthのプラグイン・関数を使うためのやつだっけ?
おそらくavsfilterのソースを改造するしか対処法はないと思う
とりあえず2.5.8なavisynth.dllをavsfilterと同じディレクトリに置いてもダメだったら諦めるしかないと思う r1574のインストーラだと、古いAvisynth環境をバックアップするというオプションがあるんだっけか。
AviUtlも古いし、avsfilterなんぞ今時使うこともないだろうから、
AvisynthもAvisynth+もAviUtlも一度全部アンインストールして、
AviUtl 1.00とAvisynth+ r2664をゼロからインストールした方がいいと思うよ。 試しにavsfilterでWarpSharp呼び出してみたけど+だと応答無しになるね
>>399が書いてる通りaviutlのフォルダに2.5.8のdllとavsfilter置いとけば一応動く >>399
そうです
aviutlでavisynthのプラグイン使えるようになるやつです。
先程帰宅したので、avsfilter.dllを2.5.8のディレクトリから外したら、起動できるの確認できました。
avisynth+だとavsfilter.dllはNGなのがわかってスッキリしました。
皆様ありがとうございます。 理解できてない気がするので質問です
インストーラすると
avisynth.dll (x86)他、avisynth.dll (x64)他
ができますが自分は今はx264(x64)をx86で実行させていますがavisynth.dll(x64)で実行させるにはどうしたらいいのでしょうか?
(そうすればパイプを通さ無くなるのとavisynth.dllのx64が使えるため早くなる・・・はず)
x86とx64の両方のインストールはロゴ確認、Trimがあるためaviutlがあったほうが便利なので使っています
ご教示お願いします x264(x64)をx86で実行はできません
もっと正しい環境を書いてください >>403
もうちょっとわかりやすく説明しようか 日本語や用語の使い方からして怪しいぞ avs2pipemod -y4mp "input.avs" | x264(x64) - --profile high [option] --demuxer y4m -o output.mp4
AVSはx86だと思いますが違いますか?(AvsPmod(x86)で読ませています) パイプ入力をやめたら早くなるとかいうものじゃないと思う(パイプ入力のペナルティーは最小の意味)
avs2pipemod64.exe(つまり64bit版)をフロントエンドに使えば64bit版avisynthが使われる >>406
avs2pipemodがx86ならAviSynthもx86が呼び出されているね
もしAviSynth x64を使いたいなら、x264 x64に直接読ませればいい avs2pipemodのx64版を使ってもいいけどな
君の書いてる書式に合わせるなら
x264(x64) "input.avs --profile high [option] -o output.mp4
当然ながらAviSynth側もx64が使われるんでプラグインとかも要チェック >>407-408
試してみます、ありがとうございます(まだもやもやしていますが・・・) >>409
・64bit(x64)のアプリからavsを呼び出せばx64のAvisynthが使われる
・32bit(x86)のアプリからavsを呼び出せばx86のAvisynthが使われる
という極めて単純な話なんだが・・・。 >>409-410
説明ありがとうございます(まだ稼動はしていませんが・・・(avsのinportでerrorが出たため))
>>411
2,58→2.58MT→2.6MTSEt氏ビルド→2.6.1Alpha1→AviSynth+
の順番で切り替えていきました、2.6MTが長かったです
+が出たのは把握していましたが難しそうだったので2.6.1Alpha1を使ってみて
貧弱なPCでのやりくりで疲れてr1576(x86)を使ってみてそこそこ速度が出たのでr1576のままいくか
r2664MTへいくかは迷ってます(txt60mcHybrid/ivtc_txt60mcがr1576より遅くなったので)
※CUDAは非対応らしく諦めました >>412
32bitは 2.6MT
64bitは +CUDA
だわ
2.6MTは息が長いな・・・
電気代を気にしてGPUがしょぼいから
まだまだ32bitつこうてるわ DVD2AVIのスレが落ちてるのでここで
DGIndexのBS11対応版、最近のBS11のTSで
フィールドオーダー入れ替えますか?が出るね
YES押したらおかしくなるのでNO押してる
新しい対応ビルド待ち >>414
GUIを起動しなんたらflagsの設定を変える AviSynth2.6 MTを導入したところL-SMASH Worksで読み込みをすると
「[Fatal]: Failed to avformat_open_input」
と表示されて読み込めないのですが、相性の問題なのでしょうか...?
ちなみにDirectShowSourceでは真っ暗になったり画面崩壊したりするいつもどおりの状態ですが、使えることは使えました。 お世話様です。
クリップの一部を別クリップの同じシーンに差し替えるという編集をしたいんですが
「クリップ1のフレームAからフレームBまでの範囲を、クリップ2のフレームXから同数の
フレーム分だけ置換する」というようなユーザー定義関数はありませんか? >>418
パッと思いつかないんだけど、構想ができてるのなら自前で作ってしまっていいと思うよ >>419
この機に覚えますか・・・
>>420
試そうかと思ったんですけど、これってクリップ2(sourceClip)の開始フレーム指定とか出来ないのでは? >>420
そういやRemapFramesってあったなぁ
>>421
ttps://pastebin.com/Xhnu7j2s
頭の体操ついでに作ってみた ものすごく簡単なチェックしかしてないから動かなかったら済まない
細かいエラーチェックしてないから完成度高めたければ自分で弄ってくれ >>422
ありがとうございます。参考にさせてもらいます。 いよいよだったら音声を分離
2つのクリップをtrimしたのち結合して音声audiodubしか思いつかんは >>418
RemapFramesに入っている関数で楽にできる。
ReplaceFramesSimple(V01,V02,mappings="[0 250] 300 [400-500] ")
これでV01の映像上にV02の映像をマッピングで指定したフレームのみ置き換え。
詳しくは英語wikiにも書いてあるけど、それでわからなくて俺でわかることなら少しはサポートできるかもね よくよく考えたら、これだと同フレームしか差し替えできないからだめか
もう面倒だからほかの人も言っているtrimを使って力業でもいい気がしてきた。
V01.trim(0,100)++V02.trim(50,100)++V01.trim(150,300)
こんな感じでさ さっきかいたやり方だと1フレームづつずれると突っ込まれそうなので修正
V01.trim(0,99)++V02.trim(50,99)++V01.trim(150,299) >422さんのスクリプト見たら自分の書き込みが悲しくなったのでとりあえずMod作成。
ReplaceClipMod(clip base, clip alt, int start_base, int start_alt, int length)
baseクリップの設定開始フレームからaltクリップの開設定フレームをlength分だけ置き換えます
しょぼいスクリプトに張ろうかと思ったけど無いので次に。 function ReplaceClipMod(clip base, clip alt, int start_base, int start_alt, int length)
{
Assert( !(start_base < 0 || start_alt < 0 || length < 1), "ReplaceClip: start must be the positive number")
Assert( !(FrameCount(base) < start_base + length), "ReplaceClip: length is too large (check the frame count of base)")
Assert( !(FrameCount(alt) < start_alt + length), "ReplaceClip: length is too large (check the frame count of alt)")
audio = KillVideo(base)
video = (length == 1) ? trim(alt, 0, -1) : trim(alt, start_alt, start_alt + length -1)
video = (start_base == 0) ? video : (start_base == 1) ? trim(base, 0, -1) + video : trim(base, 0, start_base -1) + video
video = (FrameCount(base) == (start_base + length)) ? video : video + trim(base, start_base + length, 0)
return HasAudio(base) ? AudioDub(video, audio) : KillAudio(video)
} >>430
>422さんのはbaseクリップの設定開始フレームから設定終了フレームまでをaltに置き換える
ReplaceClip(V01,V02,50,100) は
ReplaceFramesSimple(V01,V02,mappings="[50 100]") と同等。
>429を使って同等にするなら
ReplaceClipMod(V01,V02,50,50,50)
ただmodのほうはbaseクリップとaltクリップの開始フレームをずれして設定ができる
ReplaceClipMod(V01,V02,50,200,50)
これはbaseクリップの50フレームから50フレーム分をaltクリップの200フレームから50フレームに置き換えることができる V01 = V01.ShowFrameNumber(x=24, y=48, size=36, text_color=$ffffff)
V02 = V02.ShowFrameNumber(x=24, y=48, size=36, text_color=$ff00ff)
ReplaceClipMod(V01,V02,50,200,50)
こうやってフレーム数を表示させながら確認するとわかりやすいよ あ、また書き間違えてた
ReplaceClip(V01,V02,50,99) は
ReplaceFramesSimple(V01,V02,mappings="[50 99]") と同等。
と50フレームにしたほうがわかりいいね またもやミス発見
video = (length == 1) ? trim(alt, 0, -1) : trim(alt, start_alt, start_alt + length -1) は
↓
video = (start_alt == 0) && (length == 1) ? trim(alt, 0, -1) : trim(alt, start_alt, start_alt + length -1)
に変更したほうがいいな 割と需要あったみたい?だからちょっと丁寧に書き直したよ
ttps://pastebin.com/vy851k1i
start = 1 の時に不正な動作をするのを修正
endが0や負の数の時に不正な動作をするのを修正 というより入力したらエラー出して弾く
2つの入力クリップの解像度と色空間さえあっていれば、
映像のフレームレート、音声の有無、音声のサンプリングレート、音声のサンプルタイプが違っていても処理を可能とした
今までどおり、フレームレートも音声も全てbase側のものを使うようになっている
altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
ReplaceClip(base, alt.Trim(x, y), start, end)
みたいにして調整できるし良いかなって・・・ >>436
> altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
> ReplaceClip(base, alt.Trim(x, y), start, end)
> みたいにして調整できるし良いかなって・・・
それだと
ReplaceClipMod(V01, V02, 200, 100, 50)
みたいな感じでbaseクリップより若いaltの開始フレームだとまた書くのが面倒になるのでは?
って思ってもみたり
まあ俺もMod作っておいてなんだけど、普段ならtrimだけで処理するよなーと >>437
確かに普段はTrimでするかな というより、普段から映像置き換えとかしないからなぁ・・・
あえて関数を作ったりプラグイン関数を導入してまでやろうとしなかったっていうのが正解に近い >>72
作者さんまだ見てらっしゃるかわかりませんが質問です。
こちらの関数を使うと不正なストリーム出力扱いにされるんですが、
原因わかりますでしょうか?
※AvsPmodの場合
-----
Traceback (most recent call last):
File "avsp.pyo", line 9061, in OnMenuVideoToggle
File "avsp.pyo", line 13855, in ShowVideoFrame
File "avisynth.pyo", line 462, in GetFrame
WindowsError: [Error -1073741795] Windows Error 0xC000001D
-----
※MPCの場合
-----
CAVIStreamSynth: System exception - Illegal Instruction at 0x6e972509
-----
ちなみに最後のTDecimateを取り除くと一応エラーを出さずに表示できます。
(勿論意図した出力結果ではありませんが) >>439
tdeintは相性がきつい感じだからyadifmod2にでも置き換えたらいいのでは
とりあえず↓な感じにしたら動いた
function TDecimate24P7A2(clip clip){
video=clip
Interp=video.nnedi3(field=-1)
mask_clip=combmask(video,cthresh=10,mthresh=10)
clip_0=video.yadifmod2(edeint=interp)
clip_deblock=video.yadifmod2(edeint=interp).deblock(quant=16)
filt_clip=MaskedMerge(clip_0, clip_deblock, mask_clip,MI=60)
clip1=video.yadifmod2(mode=0)
clip2=clip1.mt_lut("128", chroma="0", offx=120, offy=24, w=420, h=230).mt_lut("128", chroma="0", offx=260, offy=920, w=1320, h=80).TDecimate(mode=1,clip2=filt_clip)
return clip2
}
セットアップするのがめんどくさかった
eedi3と smoothD2は消したけどお好みで >>441
レスありがとうございます。
ただ貼っていただいた関数でも解消しなかったので、読み込みプラグインを
最小限にして手あたり次第試してみたのですが、CombMask-1.1.0を
CombMask-1.0.0に変更したところ件のエラーは出なくなりました。
が、出力されたクリップのロゴ部分にNR効果が適用されているようには
見えないのですが、私この関数の効果を勘違いしてます? ロゴじゃないね
圧縮効率が悪くなるインタレ縞だけフィルタリングするものだから >>443
なるほど、回答ありがとうございます。
今 BS11overlay() でやってるロゴとテロップ消去が楽になるかと期待しましたが、
そんなうまい話は無いですね・・・(編集すごくメンドクサイ) join_logo_scpによる自動化おすすめ(関連スレ https://mevius.5ch.net/test/read.cgi/avi/1484985868/
最終的なエンコードは誤爆するTIVTC24P2とか使わずautoVFRで超ラクチン 60iテロップを24p化する際、60iテロップの開始フレームと終了フレームを指定するにはどのようなavsを書けばよいのでしょうか? >>448
調べてから聞こうぜというか公開されてる他人のavsも見るようにしようぜ、いろいろ参考になるから
あと大抵の初歩的なことは1日2時間調べるのを10日くらいやれば解決するぞ
こっちのやり方だと
t01 = Trim(6667,7071).TIVTC24P2()
t02 = Trim(7072,7971).txt60mcHybrid_hol(2,bobtype=3,txt_t=960,txt_b=1030,debug=0)
t03 = Trim(7972,25367).TIVTC24P2()
t01++t02++t03
などとやっておいてからAudioDubで音声結合かな
基本的に連続区間最後のtrim以外は5の倍数範囲指定でやってる
まれに区間先頭終端が縞のときがあるけどそのときはtrim値修正したり
該当フレームだけを処理したりしてるな directshowsource("hoge.avi")
total_frames = FrameCount()
str = String(total_frames)
writefile("hoge_total_frames.txt",str)
こんな感じでデータを書き出したあと
Avisynthを呼び出したアプリをすぐに終了したい場合はどのようにしたらいいのでしょう?
検索すると、avs2avi a.avs -n o とか avsutil a.avs play などとヒットするのですが
avs2aviの方はコンバート設定のGUI画面が
avsutilの場合は、長々と動画を読み込んでしまいます
テキストファイルを出力して、さっさと終わる方法を教えてください
お願いします avs2pipemod使うなり、avs2aviでも4cc決め打ちで設定するなりすればできるはずだが・・・ あ、なるほど。いわれてみれば当たり前の話ですね
ありがとうございます
ただ何かちょっとすっきりしませんね…
例えば、return文を使うとか、何かお約束の方法があっていいような感じも 実行時に上からスクリプト読んで順次実行してるわけではないから
returnは目印にならない >>450 >>453
avs2pipemod.exe -info でいいんじゃないの。
あと、総フレーム数を書き出すだけなら、WriteFileStart()にしたほうがいいと思う。 aviutilやvirtualdubで開いてから、5〜10秒後にtaskkillコマンドで閉じるとか ■ このスレッドは過去ログ倉庫に格納されています