19/07/30 10:10:30.08 C+YQ+loG0.net
ちょくちょく指摘されてるやつだね
955:950
19/07/30 20:03:54.81 7U3nE92Y0.net
>>954
初めて聞きました。ソース情報もらえますか?
956:名無しさん@編集中
19/07/30 20:16:24.37 gKtLIFBR0.net
SelectField()ってこれ?
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
当然この関数自体フィールドフラグがなくなると思うが
957:950
19/07/30 21:10:11.58 7U3nE92Y0.net
すいません、SelectField()がユーザー定義関数なことすっかり失念してました(Avisynth内部関数だとばかり…)。
SelectField()を使う場合デインタレの直前にフィールド指定するか、SelectField()自体をフィールドオーダー
引き継げるよう改造するしか無さそうですね。
958:名無しさん@編集中
19/07/30 22:03:37.68 C+YQ+loG0.net
DoubleWeave()にまつわる話かと思ったら違った・・
959:名無しさん@編集中
19/07/30 22:21:26.50 wBMcfUPT0.net
多分SeparateFields()とnnedi3のdh使わないようにするだけで望みの挙動になると思う
function SelectField(clip clip, int num, int "order”) {
fc=clip.framecount-1
order=Default(order,clip.GetParity() ? 1 : 0)
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1)
T2=T2.nnedi3(field=order)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
これで問題おきなくなるんじゃないかな。orderは1でtop、0でbottom、省略でクリップのTFF、BFFの設定引き継ぎ
960:950
19/07/30 22:35:12.61 7U3nE92Y0.net
おぉ自分で改悪したの添削してもらおうと思ったら、先に優れたものを作ってくださったお方が。かたじけないです orz
供養
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
orgorder=clip.GetParity()
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
joinclip=(num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
return (orgorder==true)?joinclip.AssumeTFF():joinclip.AssumeBFF()
}
961:名無しさん@編集中
19/07/30 22:58:09.15 wBMcfUPT0.net
俺のテストしてないんで供養せずにそっち使ってください
なんか出過ぎた真似してしまって申し訳なす
>>958
多分理屈は同じじゃないかな
962:名無しさん@編集中
19/07/31 06:49:45.86 tqJYOKcMa.net
>>954
初めて聞きました
963:名無しさん@編集中
19/08/06 21:25:43.60 IVplQrvg0.net
エンコードする場合の前処理と本エンコード用のavsファイルを分けて使用しているんですが、
「前処理avsファイル」上で手書きした処理のうち共通部分を「本エンコavsファイル」ファイルに都度転記するのは
面倒なので共通部分だけ「共通avsファイル」に切り出して上記2つのavsファイルにImportしようと思ってます。
ただそうすると今度は編集時に「前処理avsファイル」と「共通avsファイル」の2つを同時に開いて作業することに
なるので、それはそれで面倒です。
編集作業にはAvsPmodを使用していますが、理想としてはImport部分の中身をエディタ上展開/編集できるようになると
嬉しいです。そういった機能はありませんか?
↓この画像の5番みたいなイメージです
URLリンク(support.content.office.net)
964:名無しさん@編集中
19/08/07 00:33:17.51 4cPIL4Pe0.net
エンコード時にD&Dするbatで
echo Import("前処理avs.avs") >>本エンコavs.avs
みたいにして本エンコavsファイル作れば?
965:961
19/08/07 00:48:10.94 Q/+S+KhY0.net
>>964
「前処理avsファイル」で使用した書式のうちいくつかは「本エンコavsファイル」では使用してはいけないので、
共通部分だけまとめたavsファイルを別途作成してImport(しかも複数箇所)しないと実現できなそうです。
966:名無しさん@編集中
19/08/07 02:46:58.59 65uoyFNn0.net
どんなavsか分からないから何に困ってるのかよくわからないけど、前処理+共通の全部書いたテンプレのavs作って
状況に応じて行頭コメントアウトしたり文字置換等をバッチ若しくは手動でするのは無理なの?
967:名無しさん@編集中
19/08/07 12:46:58.05 4cPIL4Pe0.net
>>965
その本エンコavsに不要な書式は固定なんか?
968:名無しさん@編集中
19/08/07 15:16:52.69 e5VChF56M.net
タブ移動すれば済む話では
969:名無しさん@編集中
19/08/07 15:22:31.26 f1lY9/KR0.net
>>965
前処理用にリネームしたavs2pipemodを用意して、
スクリプト内ではGetProgramName()で分岐させるのが良いと思う
970:名無しさん@編集中
19/08/07 16:01:32.14 +t/GJ1En0.net
フラグになる変数定義して if 文でどうのとかはだめなん?
俺は AvsPmod でトリミングするときは処理を軽くするためにフィルタを解除したり、
編集おわったらフィルタ全適用したりってやるのに変数適当に定義して if 文でまわしてる。
どういう処理されてるかさっぱり分からないからみんな「それならこうした方が良い」ってのが
言い出せないかと思う
971:961(1/2)
19/08/07 19:42:22.70 Q/+S+KhY0.net
いろいろコメントありがとうございます>各位
GetProgramName()で分岐とか環境変数で制御とか思いつかなかったなぁ。
無理に呼び出し元バッチで何とかしようとせず、avsファイルを一つに
まとめて、スクリプト内で制御した方が賢いかもしれない。
ちなみに現在使用している環境のイメージとしては以下のような感じです。
(作業が発生する度共通部分をpre→mainに転記している)
前処理用フィルタは固定ですが、共通部分とかメイン用フィルタは
都度内容や使用件数が変わるものとお考え下さい。
# pre avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
UserDef2() #共通部分2
UserDef3() #共通部分3
PFilterA() #前処理用フィルタ
return last
972:961(2/2)
19/08/07 19:43:07.55 Q/+S+KhY0.net
# main avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
MFilterA() #メイン用重いフィルタ
UserDef2() #共通部分2
UserDef3() #共通部分3
MFilterB() #メイン用スゴク重いフィルタ
return last
>>968
ホンマそれ。だけどメンドイし、手動によるミスも多いです…
973:名無しさん@編集中
19/08/07 20:22:56.48 +t/GJ1En0.net
>>972
そういうスクリプトだとしたら俺ならこうするかなー
変数切り替えて使うww
HOGE = 1 # 1 = Pre, 2 = Main
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
if ( HOGE == 2 ) {
MFilterA() #メイン用重いフィルタ
}
UserDef2() #共通部分2
UserDef3() #共通部分3
if ( HOGE == 2 ) {
MFilterB() #メイン用スゴク重いフィルタ
} else if ( HOGE == 1 ) {
PFilterA() #前処理用フィルタ
}
return last
974:名無しさん@編集中
19/08/07 23:28:25.07 4cPIL4Pe0.net
同時編集する必要性が分からないんだけど・・
普通にメイン部分を無効で登録しておき編集して「前処理フィルタ」実行
処理が終わったら「前処理フィルタ」を無効にして「メイン用重いフィルタ」の調整としたほうが
流れるように作業できラクなはず
975:名無しさん@編集中
19/08/07 23:41:43.34 4cPIL4Pe0.net
自分は高度なこと分からない人だから
type pre.avs | find /v "PFilterA" >pre2.avs
type pre2.avs | find /v "return" >pre3.avs
みたいに転がして後は文字列の置き換えてメインフィルター追記して
main.avsで出力みたいなのしか発想できない
976:名無しさん@編集中
19/08/17 22:15:08.09 EXUVhN660.net
Anime4K使ったプラグインないの?
977:名無しさん@編集中
19/08/17 22:34:07.74 wdvnfH0u0.net
Anime4kはリアルタイムでアップスケールして再生するためのものだから
Avisynthにかませる理由があまりないでしょ
nnedi3_rpow2でも使えばよい
978:名無しさん@編集中
19/08/17 22:38:09.10 EXUVhN660.net
nnedi3_rpow2より速そうだし出来も良さそうだなって思ったんだけど
やっぱないかあ
979:名無しさん@編集中
19/08/17 22:48:01.17 wdvnfH0u0.net
早いだろうけど出来は及ばないでしょ
あくまでもリアルタイムにしてはすごいってだけで
980:名無しさん@編集中
19/08/17 23:01:27.89 3fk5MzRI0.net
avisynthのプラグインは「調整が決まれば」という但し書きが付くけどね
981:名無しさん@編集中
19/08/17 23:03:52.89 wdvnfH0u0.net
それはAnime4Kはもっとそうで
得意な映像なら、なんだよ
不得意なパターンも報告されてるわけでね
リアルタイムだからどうしようもない部分はある
982:名無しさん@編集中
19/09/17 09:50:57.39 B6Q9oG8u4
age
983:名無しさん@編集中
19/10/27 14:47:44.95 t4FFKrMxj
シーンチェンジ検出について質問です。
輝度情報の変化をベースとしてシーンチェンジしてるであろうフレームリストを出力したいのですが
何かいい方法はあるでしょうか?
AutoFrameDifferenceというものが似たような機能があるようですが現在公開されてないようなので。
984:名無しさん@編集中
19/10/27 14:51:02.43 t4FFKrMxj
すいません、思いっきりスレ間違えました。
質問すれ行ってきます