Photo Gallery

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
AviSynthTrim コマンドを元に、Aviutl のクリップを範囲選択 & カットします。
機能はそれだけです。Trimエクスポートの真逆版ですね(^_^

先頭フレームはマークフレームに設定したので、カット位置が分かりやすいと思います。

クリップボードからコマンドテキスト取得する際、簡単な文法チェックはしてますが、基本的には こちらのWiki のルールに則った Trim 文が有効です。
ただ、名前付きでの引数の指定と、第 3 引数pad_audio は未対応。


○ 指定可能な書式
・Trim(0,99) 0~99 フレーム目の 合計 100 フレーム
・Trim(10,-99) 10 フレーム目から 99 フレーム
・Trim(100,0) 100 フレーム目から 最終フレームまで
・Trim(0,10)++Trim(100,200) Trim の結合

× 指定不可な書式
・Trim(first_frame=0,last_frame=99) 名前付き引数渡し
・Trim(10,99,true) 第 3 引数の pad_audio オプション




trim_import.aufAviutl.exe と同じフォルダ若しくは plugins フォルダにコピーすると
ファイルメニューのインポートに、Trim という項目が追加されるので
予め Trim コマンドクリップボードにコピーしてから実行してください。


製作経緯は…Aviutl で CM カットした後 Trimエクスポートしたのはいいものの、まだ範囲選択した状態で遣り残した事があるのにもかかわらず、プロジェクト ( *.aup ) の保存をするのを忘れたまま Aviutl を閉じてしまった事が何度かあったからです。

同じ動画のカット作業を 2 度もするの面倒だし、エクスポートした Trim と同じ範囲を一瞬で選択できないかな~と妄想したのが切欠です。

ただ…こんなのレアケースなんで、作っておいて難ですが、このプラグインはお世話になる機会が少ないと思います(汗
過去の編集を *.aup ではなく *.avs のみ残して管理する方には便利かもしれないですね。


Aviutl Plug-in SDK を真面目に触ったの初めてなので、至らぬところがありましたら
教えて頂けると助かります。



twitter
↑参考になったという方は、是非記事のツイートをお願いします





関連記事
ソフトウェア - TrimShift (Trim文を0開始に詰める)
ソフトウェア - Trimエクスポートプラグイン VapourSynth版

ダウンロード
trim_import.auf

スポンサーサイト

Tag:Trimインポート Aviutl Trim C 自作

さくら荘のペットな彼女20話この先もただいまを言うために

ドラゴン先生格好よかったです。

名称未設定 2のコピー


不可能な物量の仕事を効率化して実現可能にするのがプログラマーの仕事だ
プログラマーは黙って仕事をするものだ



引用元:TVアニメ「さくら荘のペットな彼女」
© 鴨志田一/アスキー・メディアワークス/さくら荘製作委員会

Tag:赤坂龍之介 ドラゴン 名言 プログラマ

ATC22.jpg


ご利用者の方から要望があったので ATC2.exe をちょっと改良しました。
以前から色々直したい所がいくつかあったので、ソースコードは殆ど新規で書き直してます。

仕様の変更箇所は下記の 4 つ

オプション引数付きで起動可能( 従来どおり D&D での起動も可能 )
プロジェクトファイルが見つからない時は最初に入力を求める
③ DGIndex 起動前に、適用されるテンプレートファイルコンソールに表示
④ 諸々のエラー処理


以下は ① で使用するオプションパラメータの仕様です。
共有キーと個別キーを同時に指定したり、in が未設定だったり、想定外の使い方をすると処理をスキップします。

--in [ソースファイルパス]
--key [テンプレートキー(共有)]
--avs_key [AVSテンプレートキー]
--bat_key [BATテンプレートキー]
--def_key [DEFテンプレートキー]
--cqm_key [CQMテンプレートキー]

プロジェクトファイル編集用の ATC2GUI.exe に変更はありません。



関連記事
ソフトウェア - AutoTemplateChanger GUI v2.0 (AVSテンプレート機能拡張)
ソフトウェア - AutoTemplateChanger GUI v2.1 (AVSテンプレート機能拡張)
ソフトウェア - AutoTemplateChanger GUI v2.3 (AVSテンプレート機能拡張)
ソフトウェア - AutoTemplateChanger GUI v2.4 (AVSテンプレート機能拡張)
雑記 - AutoVFRを使ったATC2のテンプレートの使用例

ダウンロード
ATC2200_GUI.zip

Tag:ATC ATC2 コマンドプロンプト エンコード GUI CLI 自作 C# DGIndex Avisynth

いつもバッチの最後に EasyAlert で音を鳴らす処理を書いて完了通知をしていたんですが
音が単調で味気ないなーと感じまして、棒読みちゃんに喋らせたら面白いかもしれないと思い立ち、勢いで書きました。

① 対話形式で棒読みちゃんがわざわざ喋りかけてくれる
② 処理を一々ツイッターに書き込みに行く

それ以外は何の変哲もないコードですが、よかったら使ってください(^_^
TsSplitter で分離したあと、一番大きい HD の TS ファイル以外は勝手に Delete するコードがあるので、それだけ気をつけてください。
一応、ツイートは 19 行目の SET TWEET=0 フラグを 0/1 で切り替えられます。デフォルト OFF

尚、必要なツールは記事の一番下に一覧しました。開発者様に感謝。



@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM "INIT RTN"
SET RemoteTalk="C:\encode\bin\BouyomiChan\RemoteTalk\RemoteTalk.exe"
SET Twitter="C:\encode\bin\TweetConsole\twtcnsl.exe"
SET TsSelect="C:\encode\bin\TsSelect.exe"
SET TsSplitter="C:\encode\bin\TsSplitter.exe"
SET ATC2="C:\encode\bin\ATC2\ATC2.exe"
SET MSG1="ようこそ。今から %~nx1 を処理します"
SET MSG2="全ての処理を完了しました。お疲れ様でした"
SET MSG3="実行します"
SET MSG4="SKIPします"
SET HEAD="自動ツイート"
SET QTN=か?
SET JOB1=Dropチェックをします
SET JOB2=HDデータを抽出します
SET JOB3=ATCを呼び出します
SET TWEET=0

REM "START RTN"
%RemoteTalk% /talk %MSG1% >NULL

REM "SELECT RTN"
SET JOB=%JOB1%
:L_SELECT
%RemoteTalk% /talk "%JOB%%QTN%" >NULL
SET /p INP="%JOB%%QTN%(y/n) >"
IF NOT %TWEET%==0 IF %TWEET%==1 IF %INP%==y %Twitter% /t "[%HEAD%] %JOB% (%~nx1)" >NULL

REM "SKIP RTN"
:L_BEGIN
IF NOT %INP%==y (
%RemoteTalk% /talk %MSG4% >NULL
GOTO L_SWITCH
) ELSE IF %INP%==y (
%RemoteTalk% /talk %MSG3% >NULL
)

REM "DROP CHECK RTN"
IF "%JOB%"=="%JOB1%" (
%TsSelect% "%~1" >"%~dpn1_CheckDrop.log"
%~dpn1_CheckDrop.log
)

REM "EXTRACTION RTN"
IF "%JOB%"=="%JOB2%" (
%TsSplitter% "%~1" -EIT -ECM -EMM -1SEG -SEP3 >NULL
SET /a SIZE=0
FOR %%A IN (%~dpn1_*.ts) DO (
SET AA=%%~zA
SET /a SEL=!AA:~0,-1!
IF !SIZE! LSS !SEL! (
SET SIZE=!SEL!
SET FILE=%%~A
)
)
FOR %%A IN (%~dpn1_*.ts) DO (
SET AA=%%~zA
SET /a SEL=!AA:~0,-1!
IF !SIZE! GTR !SEL! (
DEL %%~A
)
)
MOVE !FILE! %~1
)

REM "TEMPLATE RTN"
IF "%JOB%"=="%JOB3%" (
CALL %ATC2% %~1
)

REM "JOB SWITCH RTN"
:L_SWITCH
IF "%JOB%"=="%JOB3%" GOTO L_END
IF "%JOB%"=="%JOB2%" SET JOB=%JOB3%
IF "%JOB%"=="%JOB1%" SET JOB=%JOB2%
GOTO L_SELECT

REM "END RTN"
:L_END
%RemoteTalk% /talk %MSG2% >NULL
PAUSE
ENDLOCAL



※ コードの一部に誤りがあったので修正しました(2013/02/22)

・棒読みちゃん(http://chi.usamimi.info/Program/Application/BouyomiChan/
・TweetConsole(http://www.vector.co.jp/soft/win95/net/se483315.html
・TsSelect(http://karinto2.mine.nu/?FriioApp
・TsSplitter(http://www3.wazoku.net/2sen/dtvup/
・ATC2(http://potatosub.blog.fc2.com/?tag=ATC2


関連記事
ソフトウェア - EasyAlert (バッチ処理で音声を鳴らす)
ソフトウェア - EncLogEditor (バッチエンコ処理のログを集計する)

ダウンロード
TsInitProc.bat

Tag:バッチ 棒読みちゃん Twitter TS

encnow.jpg


Twitter の公開アカウント作りました。
ブログの更新情報とか、開発中の愚痴とか諸々用です。多分。

@encnow


引用元:アイドルマスターシンデレラガールズ
URL:http://www.bandainamcogames.co.jp/cs/list/idolmaster/social_m/
(C)窪岡俊之 (C)NBGI

Tag:Twitter

x264 が出力するログファイルから、必要な行だけを抽出するツール。
ついでに、処理時間を簡単に集計する機能も備えてあります。

### encode.bat


set x264="C:\encode\bin\x264.exe"
set qt="C:\encode\bin\qtaacenc.exe"
set ele="C:\encode\bin\EncLogEditor.exe"

%ele% --switch "Audioエンコ開始"
%qt% --cbr 192 --samplerate auto --highest "xxx.wav" "xxx.m4a"

%ele% --switch "Videoエンコ開始"
%x264% --crf 18 --output "xxx.mp4" "xxx.avs" 2>>"xxx.log"

%ele% --in "xxx.log" --out "xxx.ele.log" --profile --avgqp --ref --mb --8x8dct



### xxx.ele.log


########################################################
# #
# CommandLine Encode Log Editor v1.0 #
# #
########################################################

****** 打刻日時 ******
[2013/02/19 12:43:35] Audioエンコ開始
[2013/02/19 12:44:07] Videoエンコ開始
[2013/02/19 13:38:52] finish

****** 経過集計 ******
Audioエンコ開始 から Videoエンコ開始 までの経過時間は 00:00:32 です。
Videoエンコ開始 から finish までの経過時間は 00:54:01 です。
Audioエンコ開始 から finish までの経過時間は 00:54:33 です。

****** エンコードログ抽出 ******
x264 [info]: profile High, level 4.1
x264 [info]: frame I:282 Avg QP:15.83 size: 92174
x264 [info]: frame P:6732 Avg QP:18.21 size: 16422
x264 [info]: frame B:28388 Avg QP:22.97 size: 1726
x264 [info]: mb I I16..4: 25.3% 43.2% 31.5%
x264 [info]: mb P I16..4: 3.7% 3.1% 1.5% P16..4: 37.4% 8.3% 8.9% 0.0% 0.0% skip:37.2%
x264 [info]: mb B I16..4: 0.2% 0.2% 0.1% B16..8: 19.8% 1.1% 0.3% direct: 0.9% skip:77.4% L0:41.5% L1:55.3% BI: 3.2%
x264 [info]: 8x8 transform intra:38.8% inter:53.6%
x264 [info]: ref P L0: 57.4% 4.3% 19.5% 4.6% 5.1% 3.4% 3.8% 1.9% 0.1% 0.0%
x264 [info]: ref B L0: 84.0% 8.9% 3.3% 1.5% 1.1% 0.8% 0.4%
x264 [info]: ref B L1: 94.7% 5.3%


ログはダミーなので x264 パラメータと数値は合ってないです。



関連記事
ソフトウェア - EncLogEditor v1.1 (バッチエンコ処理のログを集計する)
ソフトウェア - EasyAlert (バッチ処理で音声を鳴らす)
ソフトウェア - 棒読みちゃと喋りながらTSを処理するバッチプログラム

ダウンロード
EncLogEditor1.0.zip

Tag:EncLogEditor エンコード コマンドプロンプト CLI 自作 C# 計測

前回 の続き

前回は、プルダウンの種類をいくつか紹介しました。
正しいフレームが拾える (3) や (4) ようなテレシネ映像であれば、24p 化は容易ですが
(1) または (2) のパターンから、正しいフレームを取得するには、少々ややこしい手順を踏みます。


理屈は面倒ですが、AviSynth で処理する場合、コードは非常にシンプルです。
テレシネの映像クリップに対し、DoubleWeave() という関数を使うと、下の ① ~ ② の処理を纏めてやってくれます。


(1) のパターンのソース( 2-3 プルダウン方式 )
ソース


①フィールドに分離
フィールド分離


②フィールドを後ろのフィールドにコピーして結合
フィールド分離


縞フレームを候補から除外
pulldown.jpg



この状態で、元のテレシネ映像の 2 倍のフレーム数になっている筈です。
DoubleWeave 前には取得できなかった 緑色 のフレームが出来上がっているのが分かります。


まずは、当然縞フレームに用はないので、頭の中で除外してください。( 画像③ )
SelectEvery を使って フレーム 1, 2, 3, 4 を順番に取り出す訳ですが
2-3 プルダウン周期の場合、5 フレーム単位で 2 通りのパターンがあります。

━━━━━━━━━━━━━━━━
00 01 02 03 04 00 01 02 03 04 … 5 フレーム毎の周期
━━━━━━━━━━━━━━━━
1T 1B 2T 2B 2T 3B 3T 4B 4T 4B … 分離したフィールド( 画像① )
1B 2T 2B 2T 3B 3T 4B 4T 4B 5T … ↑を前方にシフトしたフィールド( 画像② )
* * * * * *  … プログレッシブなフレーム( 画像③ )
━━━━━━━━━━━━━━━━

これを元にフレームを取り出すには…

SelectEvery(5,0,2) または
SelectEvery(5,0,3)

と記述すればいいですね。


どちらでも正しいフレームは取得できますが、個人的には (5,0,3) をお勧めします。
圧縮された映像データは、シーンチェンジなどで前のフレームの残像が映り込むケースが稀にあって
後ろのフレームのほうが安定していることが往々にしてあります。
私の場合は後ろのフレームを取るようにしていますが、まぁ、お好みで(^_^;
両方目で確認して選択するのがベストです。

ちなみに Pulldown(a,b) という関数を使っても、同様にフレームを選択できます。
内部的には SelectEvery(5,a,b) を使っているらしいので、これもお好みで。




以上で、あの忌々しい縞々を退治することが出来ました。

6852.jpg


何か思いついたらまた書きます。それでは~


twitter
↑参考になったという方は、是非記事のツイートをお願いします





関連記事
エンコ入門 - 第1回 インターレースとフレームとフィールド
エンコ入門 - 第2回 プルダウン


引用元:TVアニメ「さくら荘のペットな彼女」
© 鴨志田一/アスキー・メディアワークス/さくら荘製作委員会

Tag:エンコード テレシネ プルダウン フィールド フレーム FPS

前回 は、フレームフィールドの違いや、テレシネの仕組みを書きました。
AviSynth画像2画像3 のように分離するには、SeparateFields() という関数を使います。

今回は、様々な プルダウン方式を確認しながら、30 FPS のテレシネ映像を、元通りの 24 FPS にする方法をご紹介します。

水増しフレームを作成するプロセスをテレシネ変換といい、どのフレームを増すのかどうかは
プルダウン方式によって様々です。

対象の動画が、どのようなプルダウン方式でテレシネ化されているのかを割り出すのが
逆テレシネ化の肝ですので、有名なものを何個か挙げます。


(1) 2-3プルダウン方式( 2:3:2:3
SeparateFields() : 1T 1B 2T 2B 2T 3B 3T 4B 4T 4B
004.jpg

お馴染みの方式です。アニメではほぼ間違いなくお世話になっています。
5 フレーム中 2 フレームが縞です。


(2) 3-2プルダウン方式( 3:2:3:2
SeparateFields() : 1T 1B 1T 2B 2T 3B 3T 3B 4T 4B
3-2.jpg

これもよく見かけます。暗記しておいて損はないです。
5 フレーム中 2 フレームが縞です。


(3) 2-3-3-2プルダウン方式( 2:3:3:2
SeparateFields() : 1T 1B 2T 2B 2T 3B 3T 3B 4T 4B
2-3-3-2.jpg

なかなか見かけません。というか私はまだ見たことありません。
5フレーム中、縞フレームが 1 つなので、小細工せずに 3 フレーム目だけを破棄すれば 24p になります。


(4) 2-2-2-4プルダウン方式( 2:2:2:4
SeparateFields() : 1T 1B 2T 2B 3T 3B 4T 4B 4T 4B
2-2-2-4.jpg

縞なし 24。
素直に 4 または 5 フレーム目を破棄しましょう。


では実際に AviSynth を使ってフレームを間引いてみましょう。

必要なフレームの周期が割り出せたら、あとはそれを切り出す作業ですが、(1) と (2) のパターンは
フレーム単位では取り出せないコマがありますので、一端保留とし、先に (3) と (4) のパターンについて対応してみましょう。

テレシネされた 30 FPS のクリップに対し、SelectEvery(a, [b,c,d...]) という関数を使います。
パターン (3) の場合は、SelectEvery(5, 0, 1, 3, 4)
パターン (4) の場合は、SelectEvery(5, 0, 1, 2, 3)
最初にパターン化しているフレーム数を指定し、それ以降は 0 から始まるフレーム番号を渡してやることで、周期的に指定のフレーム以外を間引いてくれます。


私の図解が分かり辛かった方は、にわとり遊び 様の図解がとても分かり易いので参照されるといいかもしれません(^_^;

逆テレシネの処理をしているとたまに混乱する事があるので、主要なプルダウン方式を図にまとめました。枠線で囲った四角が1フレーム。ソースフレームは4フレーム、プルダウン処理後は5フレームになります。また、DoubleWeave適用後は10フレームになります。詳細は http://www.avisynth.info/?DoubleWeave を参照。・2-3プルダウン(2-3-2-3プルダウン)アニメや映画でよく使われている方式。aを2フィールド、
テレシネのパターン




本題となるパターン (1) と (2) については次回。


twitter
↑参考になったという方は、是非記事のツイートをお願いします





関連記事
エンコ入門 - 第1回 インターレースとフレームとフィールド
エンコ入門 - 第3回 DoubleWeave と SelectEvery で正しいフレームを取得


Tag:エンコード テレシネ プルダウン フィールド フレーム FPS

「動画のエンコードはしたことあるけど、インターレースとかフレームレートとか良く分からない」
「何となく正しい映像は作れているけど、正直意味を理解していない」

こんな方、実は結構多いのではないでしょうか。
この記事では、図解を挟みながら少しずつ仕組みと対処法を紹介していきます。

皆さん 1 度はこんな映像を見たことがあると思います。

※画像1
i.png

この縞々と、動画の動きには密接な関係があるので、初めて学ぶ方向けに少しずつお話したいと思います。


動画というのはパラパラマンガと同じです。静止画を高速で連続表示して動いているように見せているだけです。
そして、そのコマのことを フレーム と呼び、1 秒間に表示されるフレーム数を フレームレート と言います。
フレームレートは FPSFrame Per Second ) という単位で記述するのが一般的です。


例外は存在しますが、大よそ下記のような映像作品が殆どです。
30 FPS …実写映像
24 FPS …アニメ映像 フィルム映画
60 FPS …一部ゲーム テロップクレジット


さて、 24 FPS のアニメ映像にフォーカスして話を進めていきます。
※画像1 のような映像になる理由は、制作のフレームレートと放送のフレームレートが違うことによって起きています。
日本の TV 放送は NTSC 方式 を採用しており、30 FPS の映像と決められているので
24 FPS のアニメ映像と矛盾が生じますね。
そこで必要になってくるのが テレシネ化 という処理です。

存在しないフレームを生み出すのは不可能なので、24 FPS を 30 FPS に変換するには
フレームを水増しする必要があります。


単純計算で 4 フレーム毎に 1 フレーム水増しすれば 30 FPS になりますが
このプロセスで※画像1 のようなフレームが発生します。


※画像2
001.jpg


横が時間軸で、左からこのようなフレームが順番に表示されるものとします。
1 枚絵の画像が連続している映像のことを、プログレッシブ と呼ぶので、今の段階では 24p と表記します。
まずはこれをインターレース変換すると…


※画像3
002.jpg

こうなります。
フレームをピクセル単位で、上から偶数行奇数行に分けて、交互に表示するようにします。
フレームを分離しただけなので、データ量が倍になった訳ではありません。
分離した状態のことを フィールド と呼んでいます。
この段階で、映像は 24i になりました。インターレースの i です。


1 番上の行から始まるフィールドを、トップフィールド と呼び
2 行目から始まる( 1 番下から始まる )フィールドを、ボトムフィールド と呼びます。
※画像3 は、トップフィールドから順に表示されるので、トップファースト の映像。逆になると ボトムファースト です。
そして、この順序のことは フィールドオーダー と呼びます。


さて、最終的には 1 フレーム水増ししなければならないので、2 フィールドをコピーしなければなりません。
今回は 2-3 プルダウン 方式 を例に挙げます。

※画像4
003.jpg


画像のように 2:2:2:2 フィールドだった映像を、2:3:2:3 フィールドにしました。
あとはこれをフレーム単位に戻すとどうなるでしょうか。


※画像5
004.jpg


3 と 4 フレーム目が、前後のフレームと混じった映像になりました。( 30p の映像 )
この一連のプロセスを テレシネ化 と呼び、この逆を辿ることを 逆テレシネ化 と呼びます。

※画像1 のフレームは、※画像5 の 3 または 4 フレーム目だったという訳ですね。
30 FPS の動画をコマ送りで見たとき、5 フレーム中 2 フレームに縞があった場合、元が 24p の映像であると判断できます。


逆テレシネ化 が上手く行かず、が綺麗に取れなかったり、カクカクした映像になる理由は
プルダウンのルールを見誤っているか、フィールドオーダーのミスが原因の殆どです。


今回はこの辺りで、続きはまた今度


twitter
↑参考になったという方は、是非記事のツイートをお願いします





関連記事
エンコ入門 - 第2回 プルダウン
エンコ入門 - 第3回 DoubleWeave と SelectEvery で正しいフレームを取得


引用元:TVアニメ「さくら荘のペットな彼女」
© 鴨志田一/アスキー・メディアワークス/さくら荘製作委員会

Tag:エンコード テレシネ プルダウン フィールド フレーム FPS



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。