DivX & Avisynth を絶賛しよう 3

このエントリーをはてなブックマークに追加
avisynthに移行しようとしてるんだけど、 AVI入力可能でカット編集可能なフロントエンドがなかなか見つからない…

aviutl+ジャンプウインドウプラグインで確認しつつ、
trim設定してくってのじゃ、はげしく面倒なんですが。
202名無しさん@お腹いっぱい。:02/02/20 14:09
video.GreedyHMA(1,0,4,0,1,0,0,0)で
24fps化したはずなのに、出来上がったファイルの
プロパティを見ると29.97fpsになっていました。
これで24fps化した事になっているのでしょうか?
>>202
>video.GreedyHMA(1,0,4,0,1,0,0,0)で
4ではなく5だったはず・・・
204202:02/02/20 14:25
>>203
5にしても変わりませんでした。
205202:02/02/20 15:02
自己解決しました。
原因はAudioDub(video,audio)でした。
206名無しさん@お腹いっぱい。:02/02/20 17:36
>>198
4.12じゃん。変わってないよ。
そもそも 4.12 の次は 5.0 だって聞いてるんだけどなあ
兄貴、次のDivXでは5.1Ch(AAC)対応というのは本当ですか?
AviSynth対応のWarpSharp出てるね。いつのまにか

vdfilters.avsに追加
-------------------------------
function VD_WarpSharp(clip clip, int "depth")
{
LoadVirtualdubPlugin("warpsharp.vdf", "_VD_WarpSharp")
return clip._VD_WarpSharp(default(depth, 30))
}
------------------------------
usage:
VD_WarpSharp(100)

5.0早く出ないかなぁ。わくわく。
それって対応と言えるのか
>>201
どうしてVirtualDubを使わないのか。
カット編集後、save processing settingsで保存後、テキストエディタで開けば、
開始フレーム、フレーム数(のペア)が分かる。
で、calcで開始フレーム+フレーム数−1で終了フレームが算出できる。
面倒くさいのは確かだが、もっと良い方法あったら逆に教えて!

カット編集:"←","→",Alt+"←",Alt+"→","Home","End"で削除範囲を指定後、"Delete"で削除する。
      これを繰り返す。
Calc:開始フレームをCtrl+"C"でコピー後,CalcにCtrl+"V"でペースト、
   フレーム数をCtrl+"C"でコピー後、Calcで"+"を押して、Ctrl+"V","-","1"(テンキー部が便利)
   その後Ctrl+"C"でコピー、エディタに(AVSファイルに)ペーストする。(ああ面倒だ!!)

なお、環境ファイル(vcf)をそのまま利用する、あと制御ファイル(jobs)と組み合わせるとか
方法がありそうで暇なときに調べようと思ったまま放置していたよ。
誰か知っていたら教えて。(vcfにファイルロード命令を追加しても
dubから読み込むと読み込まれるがパラメタで渡すと読み込まれないのは何故?)
213名無しさん@お腹いっぱい。:02/02/21 16:46
面倒なんじゃボケ
214名無しさん@お腹いっぱい。 :02/02/21 16:59
つーかVDUBにAVS読み込まして普通にカットして出力すればいいじゃん。
カットするところまでAVSに書かなくてもいいじゃん。
215201:02/02/21 18:45
>>214
確かにAVSにこだわる必要ないか。
AVIUTL+ジャンプウィンドウプラグインに比べると、
VirtualDubでカット個所見つけるのはかなり面倒だけど、
AVS書く労力考えると大して変わらないかもしれない。
ということでVirtualDubでいってみるよ。
ありがと。
>>215
VirtualDubでカットするののどこが面倒なんだ??
いつもVirtualDubでエンコしてるから、こんな面倒なことしてる人がいるとは知らなかったよ。
218201:02/02/21 20:25
>>216
だから、AVIUTL+ジャンプウィンドウプラグインに比べてだってば。
AVIUTL単体だったらVirtualDubのが楽かもしれんけど。
219名無しさん@お腹いっぱい。:02/02/21 21:58
たしかに面倒だVirtualDubは
220 :02/02/21 22:07
VirtualDubでエンコするとAviutiよりも画質落ちるからいや
ビットレートを上げればその差はわからないけど
700kbpsレベルだとはっきりわかってしまうんで・・・・
>>220
まだこんなのがいたのか。
ハイハイ、終了ね。
avisynth+virtualdubの時、ファイル情報を見るとDecompressorが
もともとhuffyuvなのに、YUV4:2:2になっている。
ソースファイルを直接読み込ませると、ちゃんとhuffyuvになっている。
なんでだろ。これって画質に問題はあるのかな。
(;´Д`)
225名無しさん@お腹いっぱい。 :02/02/22 00:17
vdubでカット部分探すの面倒だっていってるやつは、シーンチェンジ使ってないと思われ
226209:02/02/22 01:12
AviSynth対応は言い間違いです。Avisynthにインポートしても動くようになった。 これが正解
あと209のスクリプトじゃVDでの読み込みでエラーは出ないけど、WMPで読むとエラー出ますね。
で、訂正です。

-------------------------------------------
function VD_WarpSharp(clip clip, int "depth")
{
LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\warpsharp.vdf", "_VD_WarpSharp")
return clip._VD_WarpSharp(default(depth, 30))
}
-------------------------------------------
http://sauron.mordor.net/dgraft/warpsharp.zip
227名無しさん@お腹いっぱい。:02/02/22 01:55
SmartDeinterlacingだと縞が残った。
GreedyHMAだとなぜか画面右に緑orピンクの縦線が出た。
結局のとこ、インタレース解除には何が一番いいのよ?
>>227
私も知りたいです。
誰か実写のソースを綺麗に処理してくれるフィルタとその設定を教えて下さい (;´Д`)
>>225
使ってるよ
XviD(Nic 最新版)のエンコスピードは、DivX4.12よりはやいな。
>>212
そういうやり方があったか。
ありがとう
232 :02/02/22 05:29
短いソースでXviDを試してみたら好みな画質に仕上がったんで
長めのソースをVirtualDubでバッチエンコしようとしたらエラー吐いて落ちたよ(;´Д`)
>>225,>>229
シーンチェンジって何?プラグイン?
どういう風に使うの?教えて?
俺は、AvisynthフィルタでデインターレースとかするのでTrimもVirtualDubじゃなくて
AVSの中で使う必要があるんです。
もっとも、dubフィルタも全てAVSの中に記述するんだけど。
>>228
実写で動いている部分の輪郭はSmartDeinterlaceが一番。値は最大の32でも良いと思う
でも、面の部分がチョット不自然になるきらいがあるし、文字がピタッと決まらない。
AreaBased,Greedyは、AviUtlでの自動と同じく結局2重化になることが多い。
Decombはその中間で今一番気に入っている。
(トップフィールドファーストの場合以下のような感じ)
AssumeFrameBased
ComplementParity
Telecide()
235名無しさん@お腹いっぱい。:02/02/22 07:02
>>212
Alt+"←"とAlt+"→"は素晴らしいぞ!
先週からavisynth + VDの組み合わせで使ってる。
速ぇ。

>205
AudioDubがどおダメだったのか気になる。
もしかして、関数の戻り値を変数に戻してないとか。

video = avisource("c:\hoge.avi")
audio = wavsource("c:\hoge.wav")

と、定義してる場合、

video = video.GreedyHMA(1,0,4,0,1,0,0,0)

としないとvideo変数の映像に関数結果が反映されないと思うが・・・。
勘違いしてたらスマソ。


>212
関数作ったら?例えばこんなカンジ。

function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim(default(startframe), default(startframe + offset - 1) )
}

>235
剥げ同
ALT+矢印キー&シーンチェンジボタンは最強。
AVIUTILはレスポンスが悪いのがねぇ。

>遅いマシンつかうな!
スマソ
>>235 クー。 もっと早く教えてほしかった。
>>235
すごいね。さくさく
でもジャンプウィンドウみたいなの( ゚д゚)ホスィ…
>>236
関係ない。
video =
で定義した場合、第1引数にそれをもってくればいいだけ。
GreedyHMA(video, , , ,
241236:02/02/22 15:06
>240
そうなの?
Avisynth scripting language tutorialを見る限りだと、第1引数もしくは
OOP表記で指定した変数は、どのオブジェクト(Avisynth的にはClip)に
処理をするかを指定するのであって、戻り値をどの変数に格納するか
指定しないと暗示的に用意された「Last」変数に格納されると読めるんだけど。
あと、このLast変数は特別で結果をReturnで戻さなくてもOKと書いてある。

実際、以下の1行だけのスクリプトを書くとエラーがでません?

video = avisource("c:\hoge.avi")

正しくは、

video = avisource("c:\hoge.avi")
return video

で、以下の場合、動いてるように見えるけど最後のaudiodub( video, audio)が
暗示的にlast変数に格納されるから動いてるようにみえる。

video = avisource("c:\hoge.avi")
audio = wavsource("c:\hoge.wav")
audiodub(video,audio)

この1週間いろいろ試した結果、そういう結論に達したんだけど・・・。
242236:02/02/22 15:26
>241
暗示的ってなんやねん(鬱)

とにかく、241のルールでスクリプトを書くと今のところ問題はおきてないけど
どっか間違ってるかなぁ。

あと、loadvirturldubplugin関数とかリファレンスガイドに記述のない関数を
まとめたページとかどっかにないですかねぇ。


243228:02/02/22 23:01
>>234
具体的な例を出して頂いて有難う御座います。
で、試してみましたが、所々インターレースの解除漏れがあったり
二重化になっている場所があったりと、SmartDeinterlace と
Decomb の中を取ったような感じで仕上がりました。

理想としては、インターレース解除処理で少しくらい画像が
ソフトに滲んでも、シャープフィルタでどうにか気にならない位に
直せるような感じのが登場してほしいですがねぇ。

いや、インターレースの解除漏れは後で直せないもので・・・。

>>241
横槍失礼しますが、私の理解も同じです。
が、仕様書の在り処は知りません。スマソ
244名無しさん@お腹いっぱい。:02/02/22 23:12
× 暗示的
○ 暗黙的

結論 : >>241はヴァカ
>>244
(プ
ギャハハハハハハハコリャ傑作!_(__)ノ彡☆ばんばん!
必死だな(w
Gordian KnotにMuxまで任せきりでエンコしたファイルがVirtualDubで編集できん・・・
いや、映像は問題無いけど音が消えちゃうのです・・
VBRのMP3をMuxしたファイルはは編集不可なのか?
Gordian Knot って VBR MP3 を nandub で MUX してなかったっけ?
だから漏れは VirtualDub は VBR MP3 に対応してないのかと思ってたのだが。
サンク○○。Nundubで逝ってみる。
>>243
あの例はDecombだったんだけどな。
デフォルト(=15)でダメなら、chromaを有効にするとかthreshold値を変えてみたら。
threshold=9の場合だと、
Telecide(false,false,true,9,true,true,false)
又はTelecide(threshold=9,chroma=true)てのも可能か(試してないのでダメかも)
あるいは、FieldDeinterlace()のほうを使うとか。
あと、他のデインターレースも閾値でクシノイズを検出するのはかわらないので色々弄くってみれは?

>>236
なる程。でも複数のTrimをUnalignedSplicesしないといけないのでそのままじゃ使えないけど
ちょっと手をいれて見るよ。
ところで、俺は結合にはUnalignedSplicesを使ってるがAlignedSplicesとどっちを使うのが正しいのかな?
Trim(start1,end1)+Trim(start2,end2)+Trim(start3,end3)と
Trim(start1,end1)++Trim(start2,end2)++Trim(start3,end3)だけど。

>>242
こんど暇なときにでもAvisynthのソースを眺めてみようかな。
関数一覧ぐらいなら多分すぐわかるだろうし。(普通テーブルにしてるよね?)
>>249
大ぼけ。AddRangeそのまま使えるのか。
251246:02/02/23 04:28
あっさりできた・・・俺様逝ってよし。
>>236
ありがとう。
AddRange(55556,21458)+AddRange(80611,16210)+AddRange(100870,2938)
こんな感じで使えるので、vcfからそのままカット&ペーストできるようになったよ。
第1パラメタのclip指定は、省略するとlastになるわけですよね。
あと、default値を入れていないのにdefault(startframe), default(startframe + offset - 1)
としているのに理由はなんかあるのですか?

sage進行すると、変な煽りが入らなくてとっても良い感じ。
下手にageないようにしてほしいな。
>>236
貴殿のスクリプトにチョット手をいれてみました。お許しあれ。
AddRange(startframe)と書くとAddRange(startframe,0)を指定したことになり
startframeから最終フレームまでが範囲となる。

function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( default(startframe,0), ((default(offset,0)==0)? 0 : startframe+offset-1) )
}
>252
default値についてはどっかのサンプルをそのままコピペしたので・・・。
実はそのへんよく分かってないです。

>253
なるほど。そこまで気がまわらなかったよ。
サンクス。


avisynthは自分で関数作れるので便利だね。
今はdeinterlaceとdenoiseを組み合わせたお手軽関数を作成中。
スクリプトを書くのが楽しい楽しい(w