ニコカラメーカー2でエンコード回数を増やすことなく「あわあわ字幕」を作る方法

「A・ZU・NA」ランドの動画で、今までのassを使っていた時の同じ

  1. 1パート(1色)ごとに1つ白を塗りたい色、黒を塗らない部分とした「透過連番PNG」を出力 (3人+全員の4つ出力)
  2. Avisynthで連番PNGを読み込み、ASSの時と同じ処理を実行

という方法でパート分けあわあわ字幕を作っていたのだけど

「1」をニコカラメーカー2でやるには、

  1. 表示しないパートのフォント設定をすべて透明度MAX(A:を0)にする。
  2. あわあわにしたい部分を白、それ以外の部分を黒にする
  3. 透過PNGで出力
  4. 別の色を1~3まで繰り返し

というすごい面倒な作業があって、なかなかやる気にならなかった。
(assであわあわパート分け作業はどんなにパート数があっても1パートあたり5分以内に終わっていたので、数倍時間がかかってしまう)
(ニコカラメーカー2に「フォント設定を一括非表示化」とか「指定したフォント設定ごとに、透過連番PNG出力」とか、「複数のフォント設定を一括で色設定変更」とか、「歌詞編集の1つのフォント設定を全部別のフォント設定に入れ替え」とかの機能が欲しいなと思っていたけど要望が多すぎると思ったw)

色付けはニコカラメーカー2に任せて、泡だけ全字幕に乗せちゃえばいいんじゃないかと思いつきAvisynthで1発でできるようにしたのでご紹介します。

手順
1. こんなあわあわの元画像を用意します。泡以外の部分は透過なPNGになっています。
(これは以前青ジャンOP映像を見たときに、GIMPでぽちぽち自作したもの)

泡画像のダウンロードはこちらから

2.ニコカラメーカー2で、普通に色分けする。(今回白以外の色がついている文字部分に泡をかけます)

3.ニコカラメーカー2で、「連番PNG(字幕のみを透過で)」で出力

4.以下のようなavisynthスクリプトを用意する(テキストで「.avs」の拡張子で保存)
(毎回修正する箇所は上の4か所、泡とか同じなら2か所)

#字幕を載せるベースの動画を指定
moviefile=".\未来ハーモニー.mp4"
#ニコカラメーカー2で出力した連番PNGを指定(「_00001.png」の部分は除く)
jibakubase="msk\未来ハーモニー3_ニコカラメーカー2出力"
#上乗せする、透過画像を指定
overimage="../アルファ泡.png"
#字幕の中で、透過上乗せしない色を指定(白:$FFFFFF)
ignorecolor=$FFFFFF


#####   以降修正不要   #####
colerspace="RGB32"
movieoto=LWLibavAudioSource(moviefile).KillVideo
LWLibavVideoSource(moviefile,format=colerspace,repeat=true)#.threadrequest()
AudioDub(movieoto)
movie=last

movie
jimakupngpath=jibakubase+"_%05d.png"
subtitlemovie=ImageSource(jimakupngpath,start=1,end=movie.FrameCount(),fps=movie.Framerate  ,use_DevIL=true,pixel_type=colerspace,info=false)
subtitlemovie =  make_mask_brash_ue_alpha_img(subtitlemovie,overimage,ShowAlpha (subtitlemovie.ColorKeyMask($FFFFFF)))
Layer(subtitlemovie)
return last


function make_mask_brash_ue_alpha_img(clip c, string imageclip, clip alphainfo){

blushbase=Imagesource(imageclip,start=0,end=1,fps=c.FrameRate,pixel_type="RGB32")
StackVertical (blushbase,blushbase,blushbase)
tatesc(c,c.sectoframe(80.0))
blash=last.Loop().assumefps(c)
b_alpha=ShowAlpha (blash)
c.Overlay (blash,mask=b_alpha)
return last
}

function tatesc(clip imageclip, clip baseclip,int length, bool "muki"){
largeheight=imageclip.height*baseclip.width/imageclip.width
return imageclip.Spline36Resize(baseclip.width,largeheight).zoomscroll(baseclip,baseclip.width/2,baseclip.height/2,(baseclip.width)/2,(largeheight)-(baseclip.height)/2,length,1,1).assumefps(baseclip)
}

function zoomscroll(clip imageclip, clip baseclip, int start_x, int start_y, int end_x, int end_y, int allframes, int "startstopframes", int "endstopframes", int "bcolor", float "startzoom", float "endzoom", bool "preview"){
startstopframes = Default(startstopframes,1)
endstopframes   = Default(endstopframes,1)
bcolor = Default(bcolor ,$FFFFFF)
startzoom=Default(startzoom,1)
endzoom=Default(endzoom,1)
preview=Default(preview,false)

bigimageclip = imageclip.AddBorders(baseclip.Width/2,baseclip.Height/2,baseclip.Width/2,baseclip.Height/2,bcolor)
bigimageclip = bigimageclip.Loop(allframes,0,0)

## Calc Start Image 
s_moviesize_x = Ceil (baseclip.Width / startzoom)
s_moviesize_y = Ceil (baseclip.Height / startzoom)

s_croppoint_x = start_x + baseclip.Width/2 - Round(s_moviesize_x/2)
s_croppoint_y = start_y + baseclip.Height/2 - Round(s_moviesize_y/2)

## Calc End Image 
e_moviesize_x = Ceil (baseclip.Width / endzoom)
e_moviesize_y = Ceil (baseclip.Height / endzoom)

e_croppoint_x = end_x + baseclip.Width/2 - Round(e_moviesize_x/2)
e_croppoint_y = end_y + baseclip.Height/2 - Round(e_moviesize_y/2)

## create clip
resizefunc="Spline36resize"

bigimageclip = bigimageclip.assumefps(baseclip.FrameRateNumerator/baseclip.FrameRateDenominator)
startimage = bigimageclip.Spline36resize(baseclip.Width, baseclip.Height, s_croppoint_x, s_croppoint_y, s_moviesize_x, s_moviesize_y).Trim(1,1).Loop(startstopframes,0,0)
endimage = bigimageclip.Spline36resize(baseclip.Width, baseclip.Height, e_croppoint_x, e_croppoint_y, e_moviesize_x, e_moviesize_y).Trim(1,1).Loop(endstopframes,0,0)
animateimage = bigimageclip.Trim(startstopframes,allframes-endstopframes).Animate(0,allframes-startstopframes-endstopframes, resizefunc, baseclip.Width, baseclip.Height, s_croppoint_x, s_croppoint_y, s_moviesize_x, s_moviesize_y,   baseclip.Width, baseclip.Height, e_croppoint_x, e_croppoint_y, e_moviesize_x, e_moviesize_y)

## return clips
return startimage ++ animateimage ++ endimage 
}
function sectoframe(clip c,float "sec")
{
    return round(sec * c.FrameRate)
}

5. 作成した.avsファイルをエンコードする

以上の手順で動画が出来上がり。(曲情報とかアイコンは別でつけたものなので今回関係ありません)

ニコカラメーカーで普通に作っても、
無圧縮AVI作成→エンコード
今回の方法でも
連番PNG作成→avs編集(数か所)→エンコード
なので、さほど手間が増えません^^

No Comments

MPC-BEが動画再生開始時にフリーズしてしまう時の対処方法

カラオケオフで動画再生したときに、再生しはじめで毎回MPC-BEがフリーズ(画面が停止してマウスカーソルがWindowsのクルクルになるけど、音声は流れ続ける)という現象が発生しました。

これが起こると、ゆかり自動再生がMPC-BEが落ちたと誤認識して、次の動画再生に行ってしまうこともあり、まともに運用できません。

Google先生に聞いてみたところ、MPC-BEの設定で解消できるようで、実際解消できたのでここにその内容を残しておきます。

MPC-BEの設定項目

・メニューから「表示」→ 「オプション」を選び設定画面を出す
・「プレーヤー」→ 「最近使ったファイルの履歴を保存する」のチェックを外す

以上の設定でOK

No Comments

(Windows10をクリーンインストールしたらかどうかはわからんが)GIMPが起動しない際の対策

もう1つ出くわした不具合について対応した内容をメモメモ。

Windows10をクリーンインストールした後、GIMPの最新版をインストールして起動しようとしても何も起動しなかった。
(何も起きないのでスクショの取りようがない)

https://gitlab.gnome.org/GNOME/gimp/issues/4385

によると、
とりあえず「gimp-2.10.14-setup-1.exe」のインストーラーを使えばいいらしい。

古いインストーラーは
https://www.gimp.org/downloads/

のここから

にあります。

No Comments

Windows10をクリーンインストールしたらDaVinci ReslveでHEVC動画が読み込めなくたった際の対策

PCの不調でPCの起動ドライブをすっ飛ばしてしまい、Windows10を新規インストールしたところ、出くわした不具合について対応した内容をメモメモ。

もともとこんな感じで、HEVC(H265)動画は読み込めていた。

 

ところが、Windows10をクリーンインストールした後、DaVinci Resolveをインストールした状態で同じファイルを読み込ませようとすると、

「メディアオフライン」と表示されて読み込めない。

Codec不足かと考えて LAV Filters をインストールしてみたものの変わらず。(どうやらDaVinci ResolveはLAV FiltersのようなDirectShow のdecoderは使わないらしい)

Microsoftから提供されている「デバイス製造元からの HEVC ビデオ拡張機能」をインストールしてみる。

そしたら、読めるようになった。

めでたしめでたし

No Comments

Easy Key Changerが有効な時にMPC-BEがWMVファイルを再生できない場合の対策

Easy Key Changerが有効になっているときに、MPC-BEでwmv形式の動画を再生しようとすると

  • 音が出ない
  • MPC-BEが強制終了する

などの不具合が出ることがあります。

以下の設定をすることで問題が回避できます。

MPC-BEの設定画面の「外部フィルター」を表示する。

「LAV Audio Decoder」をダブルクリック

「Formats」のタブと選択

「wma, wmapro, wmalossless」の3つのチェックが外れていたらチェックをする。

「OK」を押して設定完了

 

 

No Comments

RyzenPC AGESA 1006のBIOSでパフォーマンス向上

こんな構成で RyzenのPCを組み立てていたんだけど、
DDR4-3000のメモリーを使っているにも関わらず、なぜか2133でしか動かない(次の2400に上げると起動すらしない)残念な感じになっていた。

AGESA 1006にベースのBIOSではメモリ回りが改善するらしいということで登場をずっと期待して待っていた
(毎日BIOSTARのサイトに確認に行くくらい)
んだけどついに新BIOSが公開された

ので更新して確認してみる。

アップデート前は

メモリクロック 1067Mhz → DDR4-2133 で動作ってことらしい

この状態でのCINEBENCH4の結果

 

BIOSアップデート後、
BIOSの画面でXMP(メモリに記録されているメモリのクロックアップ耐性の設定)をBIOSで読み込んで再起動、
今までは、それだけで起動しなくなったんだけど、XMP設定で普通に起動するようになった!!

メモリクロック1467Mhz → DDR4-2933 で動作ってことかな?
(CPU最大クロックは同じクロックになるように設定)

この状態で再びCINEBENCH4

OPENGLの性能が1割ほど上がったね。

そろそろCPUクーラーも適当なのから交換するかな?

No Comments

「ゆかり」キー変更対応

ねんがんの「キー変更」をてにいれたぞ

     /⌒
  ___(/⌒ヽ
 / /  ̄\
`/  /((ヽノ)))
| || ・ ・ヽ|
|(|N ゙゙ヮ゙゙||
| ヽ≧__ノリ
| (⌒)[水]|
∥ | |  /[二二二二二二二]
ヽ/ヽ_ロっ/EasyKeyChanger /

SHINTAさんが「簡易キーチェンジャー」を作ってくれたおかげで、
ゆかりでも。Player画面からキー変更できるようになりました!!

ありがとうSHINTAさん。

ということで、やり方です。

【機材係編】

まず、「簡易キーチェンジャー」をMPCに組み込む設定をします。
http://shinta.coresv.com/soft/EasyKeyChanger_JPN.html
より「簡易キーチェンジャー ヘルプ」のリンク先の内容を参考にしてください。

簡易キーチェンジャーのヘルプに記載されていない注意点をいくつか、

  • 「ffdshow Audio Processor」の設定

「簡易キーチェンジャー」は16bitの音源しか受け付けないので、16bit形式だけで出力するように「ffdshow Audio Processor」を設定します。

まず、外部フィルターの「ffdshow Audio Processor」となっているところをダブルクリックして「ffdshow Audio Processor」の設定を出します。

左の「出力」タブの中の「無圧縮、またはデコード済みストリームの出力形式」に

「16ビット整数」のみにチェックを入れて他にチェックが入っていたら外します。(もともとその設定になっていた場合は変更しなくて大丈夫です)

「OK」を押して設定完了。

  • 「LAV Audio Decoder」の追加

なお、CPUがATOMだったり、ffdshowのフルセット(kliteも含めて)を入れてしまうとうまくいかないことがあることを確認しました。
再生中にフィルターを表示して「ffdshow Audio Decoder」があるときはうまく動作しません。(フィルターに「EasyKeyChanger」があるにもかかわらず)

その場合、MPCの外部フィルターに

このように「LAV Audio Decoder」を追加してください。(ない場合は https://github.com/Nevcairiel/LAVFilters/releases このあたりからダウンロードしてインストールしてください)

すると、「LAV Audio Decoder」に切り替わって「簡易キーチェンジャー」も動作するようになります。
ちなみに「LAV Audio Decoder」を入れると、「簡易キーチェンジャー」でMPCの音声レンダラーの設定で高音質の「MPC Audio Renderer」が使えないという制限もなくなり、使えるようなります。

 

次に「ゆかり」の設定画面で
「MPCのキーチェンジ機能」を有効にします。

するとPlayerに


「キーダウン」「原曲キー」「キーアップ」
ボタンが現れます。

【参加者編】

動画の再生中に、
「キーアップ」ボタンを押すとキーアップ
「キーダウン」ボタンを押すとキーダウン
「原曲キー」ボタンを押すと原曲キー
になります。

動画の再生中以外は押しても反応しません。
新しく曲が始まった時には「原曲キー」になっています。

【動作環境】

現状「簡易キーチェンジャー」は32bit版のMPC-BE(HCは未確認だけど動くかも)のみに対応しています。(64bit版の対応にも期待しつつ・・・)

いろいろな人に試してもらった結果
以下のCPUが搭載されたPCでは動作しないようです。

・「Atom」「Celeron NXXXX」「Celeron JXXXX」

ということで現在の「ゆかり」の動作推奨PCのCPUは
「第6世代以降のCore m3 以上のCPU搭載のPC」ということにしておきます。
(HEVC=H265の動画を再生しようと思わなければ第3~4世代でも行けそうだけど)
第6世代以降の見分け方は、CPUの名前が
「Core XX YYYY」となっている場合Yの部分の一番左の番号が6より大きければOKです。

Core m3 6Y30 → OK
Core i5 4300M → NG
Core i3 7100U → OK

どうやらLAV Audio DecoderにするとAtom系CPUでも動くらしい

No Comments

「ゆかり」バージョン番号更新 2017年5月12日版

オンラインアップデートのおかげで、こまめにインストーラーを作り直さなくてもよくなったものの、
修正しすぎて直前のインストーラーでインストールした直後の状態でどんな動きをするのか覚えていない状態なのもなんなので、新版のインストーラーを作っておきました。(オンラインアップデートしている人はわざわざインストールしなおす必要はありません)

変更点は大体こんな感じ(GitHubのリリースページのコピペ)

追加機能

  • オンライン接続に対応
    操作端末をWifiで接続すると接続数が増えると不安定になるので、同じWifiに接続せずに端末自身のインターネット接続から使用できるようにした。
    さらに、同じWifiに接続する必要がなくなったので、複数部屋開催での別部屋表示の接続性が良くなる。
    http://bit.ly/2k3luyu
    http://bit.ly/2k3hqdB
  • 簡易認証機能
    オンライン接続にしているとインターネットから無関係の人がアクセスできてしまうので、その場にいる参加者だけがアクセスできるように簡単な認証機能を実装。
    接続情報表示のURL(QRコード)からアクセスする場合、何も意識せずに使用できる。
    設定の別部屋のURLには接続情報表示に表示されているURLを入力することで部屋移動時にも認証は不要です。
    http://bit.ly/2obgBWo
  • オンライン接続時、簡易セットリスト公開機能
    ファイル名、歌った人、コメントだけ表示する簡易セットリストをオンライン接続中に公開できるようにした。このページのみ簡易認証の対象外
    設定で無効に可能
    http://bit.ly/2obgBWo
  • トップ画面メッセージ対応
    予約一覧画面と、ファイル検索画面のトップに任意のメッセージを表示できるようにした
    http://bit.ly/2lUyOTn
  • ピックアップ曲リストに対応
    縛りオフ用の曲リストや、本日の新曲リスト等を表示したりそこからリクエストしたりできる
    3通りの方法を用意
    http://bit.ly/2m22mAU
  • 再生中、再生前に曲差し替えに対応
    リスト操作メニューの中に差し替えがあります
  • anison.info検索改善
    検索中、作品名、人物名、製作会社名で再検索できるよう
    anison info検索結果から配信予約可能に
    また、年度、ジャンル検索にも対応
    http://bit.ly/2m1Xxaq
  • 参加者向けセットリストCSVダウンロード
    予約一覧画面の一番下に、歌われた曲の一覧をCSV形式でダウンロードできるボタンを追加
  • ビンゴ結果表示機能
    1曲ごとにビンゴをするビンゴの結果を表示できる機能
    予約一覧のコメント欄と
    Helpメニューの中のビンゴ結果表示に表示
    http://bit.ly/2kL9x1m
  • MPCのPlayerコントローラー機能拡張
    音ズレ修正、再生サイズ変更、D3Dフルスクリーン等の操作ができるように「拡張機能」としてPlayerにボタンを追加

不具合修正&調整

  • 曲開始、終了ボタンを予約一覧画面に移動
    Player画面で曲開始、終了ボタンを押すと連打された場合次の曲にも押されたことになるので、
    予約一覧に移動しその曲だけにしか効かないようにした。
  • オフライン動作安定化
    インターネットに全くつながない、オフライン動作で画面の表示に時間がかかっていた不具合を修正
  • foobar再生 日本語ファイル、フォルダー名対応
    フォルダー名およびファイル名が日本語が含まれている場合うまく再生できなかった不具合に対応
  • ぴったり予約修正
    特定の条件で、予約時に意図しないところに配置されてしまう不具合を修正
  • ファイル検索へのリンクをトップメニューに追加
    トップメニューの「検索」ボタンでファイル検索画面へ飛べるようにした。

その他、foobarの字幕のフォントの初期値を「MS Pゴシック」に変更して、フォントの変更をしなくても歌詞が表示できるようにしたり、foobarの字幕の背景画像のフォルダーに「音源の拡張子なしのファイル名のフォルダー」を追加したりしてます。

No Comments

「ゆかり」簡易認証機能

「ゆかり」がオンライン接続できるようになって、知らない人にいたずらされるかもしれないとの心配の声が上がってきたので、
その場にいるオフ会の参加者以外は接続できないようにする

「簡易認証」機能

を作ってみた。

設定編

まず設定から、

「簡易認証」を「使用する」に設定して、
「簡易認証キーワード」に適当な文字を設定します。
「簡易認証キーワード」はオフ会のたびに毎回変更が推奨なので、毎回考えるのが面倒な人のために
「キーワードランダム生成」ボタンを作ってみました。「キーワードランダム生成」は押すと数字4桁で適当にキーワードを生成してくれます。
ランダム生成でも手入力でも数値を入れたら「設定」ボタンを押して反映してください。

設定はこれだけ。

利用編

メニューのhelpの中の「接続情報表示」を押すと、

接続情報に

認証キーワードが表示されます。
下のQRコードからアクセスした場合は、最初から認証済み状態になるので、認証とか意識する必要なく使えます。

認証していない状態で、今までのように 「http://ykr.moe:11001/」のようにアクセスすると
認証キーワード入力画面になります。

ここに「接続情報」で表示された認証キーワードを入力して、「ログイン」ボタンを押すと、以降認証済みとなり普通に使えるようになります。

「接続情報」は認証済みの人だけが表示できるようになっているので、毎回認証キーワードを変更すれば認証済みとなっている参加者以外から3392のアクセスができなくなります。

なお、機材PC実機からアドレスバーに「localhost」と入力してアクセスする場合は認証を必要としないので、キーワードを忘れても困ることはありません。

また、認証を必要としないリクエスト一覧ページを公開することもできます。

設定で「公開用シンプルリクエスト一覧表示」を「使用する」に設定しておくと、

http://<ゆかりのオンライン接続アドレス/simplelist.php

へのアクセスで
「順番」「曲名(ファイル名)」「歌った人」「コメント」だけ表示するシンプルなセットリスト

こんな感じに表示できます。リアルタイム、セトリ公開用にでも使ってください。(不要だと思ったら「使用しない」にしておいてください)

 

No Comments

MPC-BEでPitchWorksを動かしてキー変更する方法

MPC-HCだとPitchWorksを動かすことができて、動画再生中キー変更できて、
MPC-BEだとPitchWorksが動かないので、動画再生中キー変更できない、
と言われているがそんなことはなかったらしいので動かし方を説明します。

PitchWorksは32bitのプラグインなので、MPC-BE(MPC-HCでも)32bit版でのみ動作します。
スタートメニューなどのアイコンや起動中の上のタイトルバー(表示していれば)に「MPC-BE x64」と表示されている場合64bit版なので、アンインストールして32bit版(インストーラーにx86と書いているもの)をインストールしなおしてください。
MPC-BEの最新版は https://app.box.com/s/6reo6f5tf4ec6i7n4f861vmttjav8xdk   の中の「!_last」のフォルダ内にあります。
(64bit版より32bit版の方が処理が重くなることがあるようなのでギリギリの性能で頑張っている場合は使用が厳しくなることがあるかもです)

用意するソフトウェア

以下のソフトをインストールするのでダウンロードが必要です。

使えるようにするまでの流れ

まず、ffdshow-tryoutsのインストーラーを起動してインストールします。
インストーラーの途中、
コンポーネントの選択では、「audio decoder」と「raw audio processor」だけチェックを入れてほかのチェックをすべて外します。
(ffdshow-tryoutsのデコーダーは今となっては古いものなので、インストールしてしまうと、動画再生の性能が落ちてしまう可能性があるので外します)


そのあとの「追加タスクの選択」では「ffdshowのすべての設定を初期値に戻す」以外のチェックをすべて外します。

次にPitchWorksのインストーラーを起動しインストールします。
インストール中特に気にしないといけないところはなかったはずです。

インストールが完了したので、MPC-BEの設定を行います。
メニューのオプションから設定画面を表示し、、
「外部フィルター」の設定に入ります。

「フィルターの追加」ボタンを押すとフィルターの一覧が表示されるので
「ffdshow audio Processor」を選択してOKを押します。

すると、外部フィルターに「ffdshow Audio Processor」が表示されるので、それを選択した状態で右の「優先する」のところにチェックを入れておきます。


次にもう一度「フィルターの追加」より
「delaydots.com PitchWorks」を選択してOKを押します。

すると、外部フィルターに「delaydots.com PitchWorks」が追加されるので、それを選択した状態で右の「優先する」のところにチェックを入れておきます。

次に、「内部フィルター」の設定内、「音声デコーダー」の画面に移動します。

いろいろチェックボックスのあるエリアで右クリックして「すべてのフィルターを無効化」を押します。

すると、音声デコーダーのチェックがすべて外れます。

以上で使えるようになります。

PitchWorksを使った再生中のキー変更のしかた

再生画面を表示中、表示している画面で
マウスの右クリック → 「フィルター」→ 「delaydots.com PitchWorks」 と押すと

「PitchWorks」の画面が表示されます。


左上の「pitch」と書いているつまみをマウスの左クリックでつまんで左に動かすと音が高く、右に動かすと音が低くなります。
他のつまみは、曲のスピードなどが変わるものだと思われます。必要ならやってみるといいと思います。
変更し終わったら右上の×を押してPitchWorksの画面を閉じます。(PitchWorksが表示されたままだとプレイヤーが制御不能になるので)

あとがき

今まで、MPC-HCなら使えるとか、人によってはMPC-HCでも使えないとかあったのですが、
ffdshowをインストールしたことがあるかどうかだけの違いだったのかもしれません。
「ffdshowのAudio Processor」だけ入れておけばMPC-HCだろうがMPC-BEだろうが「PitchWorks」は使えるよってことで

 

 

No Comments