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/

421418 (ワッチョイ b91f-UI4l)2018/05/24(木) 23:09:48.81ID:ctuezOHy0
>>419
この機に覚えますか・・・

>>420
試そうかと思ったんですけど、これってクリップ2(sourceClip)の開始フレーム指定とか出来ないのでは?

422名無しさん@編集中 (ワッチョイ 29f7-vxiR)2018/05/24(木) 23:19:48.84ID:KusmJ/ym0
>>420
そういやRemapFramesってあったなぁ

>>421
ttps://pastebin.com/Xhnu7j2s
頭の体操ついでに作ってみた ものすごく簡単なチェックしかしてないから動かなかったら済まない
細かいエラーチェックしてないから完成度高めたければ自分で弄ってくれ

423418 (ワッチョイ b91f-UI4l)2018/05/25(金) 00:10:33.27ID:Reyxy1xv0
>>422
ありがとうございます。参考にさせてもらいます。

424名無しさん@編集中 (ワッチョイ 1911-vxiR)2018/05/25(金) 10:28:40.27ID:tcLL2xr10
いよいよだったら音声を分離
2つのクリップをtrimしたのち結合して音声audiodubしか思いつかんは

425名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/25(金) 12:28:18.59ID:g3WNEyH+0
>>418

RemapFramesに入っている関数で楽にできる。

ReplaceFramesSimple(V01,V02,mappings="[0 250] 300 [400-500] ")

これでV01の映像上にV02の映像をマッピングで指定したフレームのみ置き換え。
詳しくは英語wikiにも書いてあるけど、それでわからなくて俺でわかることなら少しはサポートできるかもね

426名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/25(金) 12:43:07.71ID:g3WNEyH+0
よくよく考えたら、これだと同フレームしか差し替えできないからだめか

もう面倒だからほかの人も言っているtrimを使って力業でもいい気がしてきた。

V01.trim(0,100)++V02.trim(50,100)++V01.trim(150,300)

こんな感じでさ

427名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/25(金) 12:52:53.82ID:g3WNEyH+0
さっきかいたやり方だと1フレームづつずれると突っ込まれそうなので修正

V01.trim(0,99)++V02.trim(50,99)++V01.trim(150,299)

428名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/25(金) 18:24:16.52ID:g3WNEyH+0
>422さんのスクリプト見たら自分の書き込みが悲しくなったのでとりあえずMod作成。

ReplaceClipMod(clip base, clip alt, int start_base, int start_alt, int length)

baseクリップの設定開始フレームからaltクリップの開設定フレームをlength分だけ置き換えます
しょぼいスクリプトに張ろうかと思ったけど無いので次に。

429名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/25(金) 18:24:51.05ID:g3WNEyH+0
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名無しさん@編集中 (ワッチョイ 1911-vxiR)2018/05/25(金) 22:33:21.38ID:tcLL2xr10
>>429
>422さんんのと何が違うんです?

431名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/26(土) 07:43:33.88ID:KhWbCmOb0
>>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フレームに置き換えることができる

432名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/26(土) 07:47:47.80ID:KhWbCmOb0
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)

こうやってフレーム数を表示させながら確認するとわかりやすいよ

433名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/26(土) 08:00:42.61ID:KhWbCmOb0
あ、また書き間違えてた

ReplaceClip(V01,V02,50,99) は
ReplaceFramesSimple(V01,V02,mappings="[50 99]") と同等。

と50フレームにしたほうがわかりいいね

434名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/26(土) 08:48:18.23ID:KhWbCmOb0
またもやミス発見

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)

に変更したほうがいいな

435名無しさん@編集中 (ワッチョイ 1911-vxiR)2018/05/26(土) 09:58:24.93ID:DaAFtQGz0
>>431
なるほど詳しくありがとう

436422 (ワッチョイ 29f7-vxiR)2018/05/26(土) 20:19:47.15ID:mlSWbOkk0
割と需要あったみたい?だからちょっと丁寧に書き直したよ

ttps://pastebin.com/vy851k1i

start = 1 の時に不正な動作をするのを修正
endが0や負の数の時に不正な動作をするのを修正 というより入力したらエラー出して弾く

2つの入力クリップの解像度と色空間さえあっていれば、
映像のフレームレート、音声の有無、音声のサンプリングレート、音声のサンプルタイプが違っていても処理を可能とした
今までどおり、フレームレートも音声も全てbase側のものを使うようになっている

altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
ReplaceClip(base, alt.Trim(x, y), start, end)
みたいにして調整できるし良いかなって・・・

437名無しさん@編集中 (ワッチョイ 93a2-Ockd)2018/05/27(日) 11:12:23.39ID:ijryAf5q0
>>436
> altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
> ReplaceClip(base, alt.Trim(x, y), start, end)
> みたいにして調整できるし良いかなって・・・

それだと
ReplaceClipMod(V01, V02, 200, 100, 50)
みたいな感じでbaseクリップより若いaltの開始フレームだとまた書くのが面倒になるのでは?
って思ってもみたり

まあ俺もMod作っておいてなんだけど、普段ならtrimだけで処理するよなーと

438名無しさん@編集中 (ワッチョイ 29f7-vxiR)2018/05/27(日) 22:43:25.25ID:hFtjh66a0
>>437
確かに普段はTrimでするかな というより、普段から映像置き換えとかしないからなぁ・・・
あえて関数を作ったりプラグイン関数を導入してまでやろうとしなかったっていうのが正解に近い

439名無しさん@編集中 (ワッチョイ 151f-kM6D)2018/05/31(木) 00:30:07.50ID:WELP8hsS0
>>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を取り除くと一応エラーを出さずに表示できます。
(勿論意図した出力結果ではありませんが)

440名無しさん@編集中 (ワッチョイ f19f-667V)2018/05/31(木) 04:25:55.48ID:6Pm0/mNI0
オーバークロックしてるかメモリが腐ってる

441名無しさん@編集中 (ワッチョイ 4511-msj4)2018/05/31(木) 14:08:32.32ID:CVkP/tbo0
>>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は消したけどお好みで

442439 (ワッチョイ 151f-kM6D)2018/05/31(木) 23:37:10.80ID:WELP8hsS0
>>441
レスありがとうございます。
ただ貼っていただいた関数でも解消しなかったので、読み込みプラグインを
最小限にして手あたり次第試してみたのですが、CombMask-1.1.0を
CombMask-1.0.0に変更したところ件のエラーは出なくなりました。
が、出力されたクリップのロゴ部分にNR効果が適用されているようには
見えないのですが、私この関数の効果を勘違いしてます?

443名無しさん@編集中 (ワッチョイ 4511-msj4)2018/06/01(金) 01:36:48.87ID:6hbmqVWh0
ロゴじゃないね
圧縮効率が悪くなるインタレ縞だけフィルタリングするものだから

444439 (ワッチョイ 151f-kM6D)2018/06/01(金) 21:28:51.50ID:iG6Eca5h0
>>443
なるほど、回答ありがとうございます。
今 BS11overlay() でやってるロゴとテロップ消去が楽になるかと期待しましたが、
そんなうまい話は無いですね・・・(編集すごくメンドクサイ)

445名無しさん@編集中 (ワッチョイ 4511-msj4)2018/06/01(金) 23:07:13.08ID:6hbmqVWh0
join_logo_scpによる自動化おすすめ(関連スレ https://mevius.5ch.net/test/read.cgi/avi/1484985868/
最終的なエンコードは誤爆するTIVTC24P2とか使わずautoVFRで超ラクチン

446名無しさん@編集中 (ワッチョイ d610-/vbK)2018/06/02(土) 07:55:53.16ID:ZfXg0V8T0

447名無しさん@編集中 (ワッチョイ d610-/vbK)2018/06/03(日) 17:39:17.80ID:VcUUsYyc0
セロテープ どーです

http://satch.tv/?mref=787

448名無しさん@編集中 (ワッチョイWW cd9e-k5Cw)2018/06/05(火) 17:07:33.42ID:FIoLoMgC0
60iテロップを24p化する際、60iテロップの開始フレームと終了フレームを指定するにはどのようなavsを書けばよいのでしょうか?

449名無しさん@編集中 (ワッチョイ 3aa2-667V)2018/06/05(火) 18:18:11.97ID:jDgYb/2J0
>>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値修正したり
該当フレームだけを処理したりしてるな

450名無しさん@編集中 (ワッチョイ 168a-Tt8s)2018/06/06(水) 02:55:55.65ID:p90NIYP90
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の場合は、長々と動画を読み込んでしまいます
テキストファイルを出力して、さっさと終わる方法を教えてください
お願いします

451名無しさん@編集中 (ワッチョイWW f19f-yn2/)2018/06/06(水) 03:06:14.40ID:xwgMflIy0
最後にtrim(1,1)て書いたらどうかな

452名無しさん@編集中 (ワッチョイ 99f7-msj4)2018/06/06(水) 03:10:05.12ID:hzOOVved0
avs2pipemod使うなり、avs2aviでも4cc決め打ちで設定するなりすればできるはずだが・・・

453名無しさん@編集中 (ワッチョイ 168a-Tt8s)2018/06/06(水) 03:18:17.68ID:p90NIYP90
あ、なるほど。いわれてみれば当たり前の話ですね
ありがとうございます

ただ何かちょっとすっきりしませんね…
例えば、return文を使うとか、何かお約束の方法があっていいような感じも

454名無しさん@編集中 (テトリス 0e5a-pPrV)2018/06/06(水) 07:59:25.11ID:/pwsDMZk00606
実行時に上からスクリプト読んで順次実行してるわけではないから
returnは目印にならない

455名無しさん@編集中 (テトリス 45ec-NLsb)2018/06/06(水) 10:21:25.20ID:LRJASQb800606
>>450 >>453
avs2pipemod.exe -info でいいんじゃないの。

あと、総フレーム数を書き出すだけなら、WriteFileStart()にしたほうがいいと思う。

456663 (テトリス MM5e-Ftq7)2018/06/06(水) 14:03:50.85ID:6ONh6wemM0606
aviutilやvirtualdubで開いてから、5〜10秒後にtaskkillコマンドで閉じるとか

457名無しさん@編集中 (テトリス Sd7a-JJ/E)2018/06/06(水) 15:02:48.39ID:IroiXPDGd0606
>>450
何でdirectshowsource使ってんの?
トラブルの元になるから、lsmashsource使ったほうがいいよ

458名無しさん@編集中 (テトリス 168a-Tt8s)2018/06/06(水) 16:31:20.39ID:p90NIYP900606
みなさんありがとうございます

>>454
"スクリプト"内では式を評価するのは上からですよね?
それとは別ですが、returnはすべてをまとめて最終的に何を返すか
というコマンドだと理解してるので、それを"無"にするとかの方法がないものか
と思った感じです
見当はずれだったらすみません

>>455
以前、ffprobeを試したときそれも試してみましたが、空のファイルが出力されて
ダメでした。ちなみに、ffprobeだとファイル自体が出力されません

>>456
実はそれ、今までffplayで使ってた方法です
killするタイミングを得るために、別の処理が必要になるのでスマートじゃないかと

もう一つ、ffmpeg -t でやる方法もあるんですけど、出力されるファイルの内容が
おかしくなる現象で現状使えない感じです
結局のところ、>>451が一番いい方法、ということになるようですね

459名無しさん@編集中 (テトリス 168a-Tt8s)2018/06/06(水) 16:34:22.66ID:p90NIYP900606
>>457
そこはあくまで「例」なので…

460名無しさん@編集中 (テトリス d6a5-NLsb)2018/06/06(水) 17:06:34.92ID:aLcMjonq00606
>>458
avs2pipemod _avs_ --benchmark -trim=1,1 
これでいいんでない?

461名無しさん@編集中 (テトリス 168a-Tt8s)2018/06/06(水) 17:09:06.36ID:p90NIYP900606
>>455
先ほどは拙速な返事をしてしまい、すみませんでした

WriteFileStart()を使い、avs2pipemod.exe -info で、きれいに書き出せました!

こうやって挙動に違いが出るもんなんですね。勉強になりました
ありがとうございました

462名無しさん@編集中 (テトリス 168a-Tt8s)2018/06/06(水) 17:12:47.38ID:p90NIYP900606
>>460
これでもきれいにできました!
ありがとうございます

463455 (ワッチョイ 01ec-NLsb)2018/06/06(水) 22:58:19.64ID:+9roR3Nv0
あれ、別にWriteFile()でも問題ないと思ってたけど、試してみたらうまく出力されないな。
WriteFileStart()じゃないとダメだったのか。
勘違いしてたのでこちらも勉強になったw

464名無しさん@編集中 (ブーイモ MMeb-dEMp)2018/06/10(日) 00:46:08.43ID:l2jBkJvZM
>>449
ありがとうございます。

465名無しさん@編集中 (ワッチョイ 81b3-6oYl)2018/06/16(土) 17:30:24.08ID:MC5mcWji0
AvisynthNeo用に、以下のファイルに差し替えたらクラッシュ…
https://github.com/nekopanda/AviSynthPlus/issues/1

Traceback (most recent call last):
File "run.py", line 49, in <module>
File "./avsp.py", line 18897, in main
File "wx\_core.pyo", line 7981, in __init__
File "wx\_core.pyo", line 7555, in _BootstrapApp
File "./avsp.py", line 18884, in OnInit
File "./avsp.py", line 5227, in __init__
File "./avsp.py", line 6238, in LoadAvisynth
ImportError: No module named avisynth_cffi

466645 (ワッチョイ 81b3-6oYl)2018/06/16(土) 19:24:35.07ID:MC5mcWji0
32bit版では問題なし
64bit版はエラーが出るってってどういうことなんだ…

467名無しさん@編集中 (ワッチョイ 81b3-6oYl)2018/06/17(日) 21:15:08.23ID:dH2Jlfgp0

468名無しさん@編集中 (ワッチョイ 81b3-6oYl)2018/06/18(月) 00:11:04.27ID:J4J9y6ok0
と思ったらまたエラーが…
Traceback (most recent call last):
File "run.py", line 49, in <module>
File "./avsp.py", line 18897, in main
File "wx\_core.pyo", line 7981, in __init__
File "wx\_core.pyo", line 7555, in _BootstrapApp
File "./avsp.py", line 18884, in OnInit
File "./avsp.py", line 5227, in __init__
File "./avsp.py", line 6238, in LoadAvisynth
File "avisynth_cffi.pyo", line 784, in <module>
File "cffi\api.pyo", line 450, in verify
File "cffi\verifier.pyo", line 112, in load_library
File "cffi\verifier.pyo", line 201, in _write_source
IOError: [Errno 2] No such file or directory: 'ここまで省略\\lib\\library.zip\\avisynth_cffi_ext.c'

469名無しさん@編集中 (ワッチョイ 2ee8-jgxh)2018/06/18(月) 00:20:47.25ID:9agv1ts50
AVSPのフォルダに
AviSynth.dll と DevIL.dll を入れてるけど
そういう使い方で良いんだよね?

470名無しさん@編集中 (ワッチョイ 6e8a-hhwW)2018/06/18(月) 00:25:15.85ID:YUlHC8W10
かまわんよ
あと、レジストリいじってプラグインフォルダ作るといい

471468 (ワッチョイ 81b3-6oYl)2018/06/18(月) 22:44:15.76ID:J4J9y6ok0
一回全部消して入れ直したら、無事動作するようになった。
しかし、アイコンが真っ白いままだったので、フォルダの場所を変えざるを得なかった…

新着レスの表示
レスを投稿する