ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Windows】Windows PCのIPアドレスを固定する

 過去にRaspberry PiIPアドレスを固定する記事を書きました。

 他のOSでやったことなかったのを思い出したので、今回はWindowsIPアドレス固定方法の備忘録になります。


 では、始めます。


1:IPアドレスの固定方法
 LANケーブルでPCをイーサネットに接続し、PC側でイーサネットを認識した状態にします。

 そしてPC(MacでもWindowsでも)で以下のコマンドを実行して使用されているIPアドレスを確認し、使っていないIPアドレスを選択します。

$ arp -a


 指定するIPアドレスを決めたら、コントロールパネルから「ネットワークと共有センター」を開きます。

 イーサネットの接続があると、以下のように「イーサネット」という項目が表示されているのでクリックします。表示されていない場合はPC側がイーサネットを認識できていないので接続できているかを確認してください。

 以下のような画面が表示されるので「プロパティ」ボタンをクリックします。

 イーサネットのプロパティが表示されたら「インターネットプロトコルバージョン4 (TCP/IPv4)」の部分をダブルクリックします。

 プロパティ画面が表示されたら「次のIPアドレスを使う」にチェックを入れて「IPアドレス」の欄に固定したいIPアドレスを入力します。入力すると自動的にサブネットマスクにも値が設定されます。設定後「OK」ボタンをクリックします。


2:IPアドレスの確認
 IPアドレスが固定できているかどうかはコマンドプロンプトを開いて以下のコマンドを実行します。

$ ipconfig

 実行すると、色々と情報が出てきますが、そのイーサネットの項目を見るとちゃんと設定したIPアドレスになっていることが確認できます。

・
・
・

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: xxxx::xxxx:xxxx:xxxx:xxxx%37
   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.178
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .:

・
・
・


 以上がWindows PCのIPアドレスを固定する方法になります。

 IPアドレスを固定しなければならない場面も時々あるので、覚えておくと良さそうです。


・参考資料

【Arduino】Arduino UnoでEthernetシールドを使ってみる

 なんとなくArduino UnoのEthernetシールドを使ってみようと思い立ったので、今回はとりあえずサーバのサンプルを動かしてみた備忘録になります。


 では、始めます。


1:Arduino Unoにサンプルスケッチを書き込む
 Arduino IDEを開いて「ファイル」→「スケッチ例」→「Ethernet」→「WebServer」を選択します。

 サンプルスケッチが開くので、Arduino UnoをPCに繋いでサンプルスケッチを書き込みます。

 この際、mac、ipの項目についてはそれぞれ適切な値に書き換えてください。macはシールドに記載されているMACアドレス、IPは被っていないIPアドレスを設定してください。
 サンプルではポート80番を使っていますが、気になる方は適宜書き換えてください。

 またEthernetシールドに使われているチップがW5100なのか、W5500なのかで読み込むライブラリが違うようなのでサンプルそのままで動かない場合は変更してみてください。

#include <Ethernet.h> // W5100の場合はこちらを使う

#include <Ethernet2.h> // W5500の場合はこちらを使う


2:PC側のIPアドレスを固定する
 IPアドレスを固定しておかないとArduino Uno側のサーバに接続できないようなので、以下の記事に従ってPC側のIPアドレスを固定させます。この時IPアドレスは被らないように注意してください。


3:確認
 PCとEthernetシールドをLANケーブルで接続し、Arduino Uno側へもUSBケーブルで電源を供給した状態にします。

 その状態でブラウザを開いて以下のURLを入力します。IPアドレス部分は書き込んだスケッチ内で指定したIPアドレスを指定してください。

http://192.168.1.177

 すると以下のように各Analogピンの値が表示されます。

 ページが表示できない場合は、PC側のIPアドレスが固定されてないことが考えられるので2の手順がちゃんとできているか確認してください。


 以上がArduino UnoのEthernetシールドでサーバのサンプルを動かしてみた内容になります。

 サンプルそのままですが、イーサネットの設定など色々わかってないことが多かったので勉強になりました。

 次はもうちょっと踏み込んだ感じでちゃんと相互に通信できるようなものをやっていきたいですね。


・参考資料

【Windows】HEVC(H.265)の動画が再生できない場合の対処法

 スマホなどで高効率や高圧縮のような設定、要は「HEVC(H.265)」でコーデックされた動画をWindowsに取り込んだ場合、Windowsデフォルトのアプリでは動画が再生できない場合があります。

 今回はその対処法になります。

 基本的には参考資料にあるページ様にあるのと同じ内容なので、詳しくはそちらを参照してください。


 では、始めます。


1:デバイス製造元からのHEVCビデオ拡張機能をインストールする
 この方法が一番楽かと思います。

 まずは以下のMicrosoft Storeのリンクをコピーします。

ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq

 次にブラウザを立ち上げてURL部分にリンクをペーストしてEnterキーを押下すると、以下のようにMicrosoft Storeを表示するかどうか尋ねられるので「Microsoft Storeを開く」をクリックします。

 すると対象のページが開くので「インストール」ボタンをクリックしてインストールします。

 インストールが完了するとHEVC(H.265)でコーデックされた動画も再生できるようになります。


2:対応している無料動画プレイヤーをインストールする
 その他の方法として、コーデックに対応している無料の動画プレイヤーをインストールするというのがあります。

 様々なものがありますが、多くの人に使われている「VLC media player」が良いかと個人的には思います。

 HEVC(H.265)はもちろん、多くのコーデックに対応しており自分も使っています。


 以上がWindowsでのHEVC(H.265)の動画が再生できない場合の対処法になります。

 1で紹介したHEVCビデオ拡張機能ですが、普通にMicrosoft Storeを検索すると120円の有料のものが出てきます。そちらを使うのでもよいですが、無料の方でも問題なかったのでそちらを紹介しました。

 そもそもH265のコーデックが割と使われるようになっているのに、デフォルトで再生できないWindows自体に問題があるような気がしますね…。


・参考資料

【Davinci Resolve】音声の加工とモザイク

 今回はDavinci Resolveで音声を加工したり、モザイクをかけたりする方法になります。

 基本的には参考資料に挙げた動画様の内容になるので、詳しくはそちらを参照してください。


 では、始めます。


0:素材の準備
 今回音声と映像の両方を使います。

 素材はなんでもよいですが、以前の記事で使った以下の動画を使用する前提で進めるので、必要な方はダウンロードしてください。


1:音声を加工する
 Davinci Resolveを起動させて空のプロジェクトを開き「エディット」画面を開きます。

 素材ファイルをドラッグ&ドロップで読み込ませ、タイムラインにドラッグ&ドロップします。

 そのまま再生させると、素材そのままの音声で再生されるので音声部分を加工していきます。

 タイムラインの音声部分をクリックで選択し、その後右上にある「オーディオ」をクリックしてオーディオの画面を開きます。

 オーディオ内にある「ピッチ」の「半音」の値を変更します。0だとそのままでマイナスにするほど低く、プラスにするほど高くなります。今回は「-10」と低くしてみました。

 半音の値を変更しても、音声の高低が変化しない場合はプロジェクトを一度保存してもう一度開き直してみてください。すると値が適応されている場合があります。


2:モザイクをかける
 音声の加工ができたので次に映像にモザイクをかけていきます。

 モザイクをかけるには「カラー」画面を開きます。

 カラー画面を開いたら中段にあるタイムラインからモザイクをかけたいものをクリックで選択します。

 ノード画面の何もない領域で右クリックをし「ノードを追加」→「コレクター」を選択します。

 ノードが追加できたら以下のようにノードを繋げます。

 追加したノードをクリックで選択し、その選択した状態で「ウインドウ」アイコンをクリックします。

 下側の画面に色々と図形が表示されるので、図形のある部分をクリックします。これはモザイクにしたい範囲の形になります。今回は丸を選択しました。

 
 画面上に選択した図形が表示されるので、モザイクをかけたい位置になるようその図形を調節します。マウスホイールで拡大縮小ができ、図形の各点をドラッグすることで形を調節できます。

 ここまでできたら、右上にある「エフェクト」をクリックしてエフェクトの画面を出し、スクロールした中にある「ブラー(モザイク)」を選択し、ドラッグ&ドロップします

 これでモザイクをかけることができました。

 設定にある「ピクセル数」を低くするとより粗く、「エイリアス」の値を大きくするとよりピクセル内がボケた感じになります。

 モザイクでは動くものについて自動で追従させることもできるようですが、今回は必要がなかったのでやっていません。詳しくは参考資料にある動画様を参照してください。

 音声の加工とモザイクを加えて書き出した動画が以下になります。


 以上がDavinci Resolveでの音声の加工とモザイクをかける方法になります。

 プライバシーを守るために人の顔にモザイクをかけたりなど、割と使う場合も多いかと思います。


・参考資料

【Davinci Resolve】wavファイルに合わせて口パクさせる

 前の記事でDavinci ResolveにReactorを導入してみました。

 今回は導入したReactorの機能を使って、音声ファイルであるwavファイルの波形に合わせてキャラクターを口パクさせてみた記事になります。
 若干変更点などはありますが、基本的には参考資料に挙げている動画様の内容と同じになるので詳細はそちらを参照してください。

 では、始めます。


0:素材の準備
 素材としてキャラクターの絵と口パクする差分の絵、そしてwavファイルが必要となります。

 今回はキャラクターの素材例として以下のものを準備しました。

・00_base.png

・01_paku.png

 音声ファイルはwav形式であれば何でもよいですが、過去にOpenJTalkで合成音声を作った記事を書いているのでそれで準備しました。

 素材を準備するのが面倒な場合は、以下にzipファイルとしてまとめているのでダウンロードして使ってください。

 以降は上記素材を使うという前提で進めます。


1:ReactorのSuck Less Audioを有効にする
 まずは今回wavファイルの波形に連動させるのに必要なReactorのSuck Less Audioを有効にします。

 Davinci Resolveを起動させて空のプロジェクトを開き、上部メニューの「ワークスペース」→「スクリプト」→「Comp」→「Reactor」→「Open Reactor」を選択します。

 少しロード画面が出るので待った後、以下のような画面が表示されるので、左側の「Modifiers」をクリックして出てきた中の「Suck Less Audio」にチェックを入れてインストールします。

 これでSuck Less Audioが使えるようになります。


2:タイムラインに素材を配置する
 最初に0の素材を「全角が入っていない」パスに移動させます。パスに全角を入れないのは、Suck Less Audioを使う場合に全角が入っていると上手く動かない場合があるためです。

 今回はCドライブ直下に「paku_sozai」というフォルダを作成してその中に各種必要な素材を入れています。

 素材の配置ができたら、Davinci Resolveのメディア欄にドラッグ&ドロップで素材を読み込ませます。

 読み込みができたら「エディット」画面を開いて「00_base.png」をタイムラインにドラッグ&ドロップします。

 次に音声ファイルもタイムラインにドラッグ&ドロップし、画像の端をドラッグして音声の長さと同じ表示時間になるよう調節します。

 この状態で再生させると、ただ画像が表示され音声が流れているだけです。

 実際に口パクをさせるためにFusionを使っていきます。


3:Fusionを使って口パクをさせる
 2までできたらタイムラインにある「00_base.png」を選択した状態で右クリックをし、出てきた中にある「Fusionページで開く」をクリックします。

 Fusionページになります。

 メディア欄にある「01_paku.png」をノード画面にドラッグ&ドロップすることで「MediaIn2」というノードが作成されます。

 ノード画面の上にある「変形」をドラッグ&ドロップして「Transform」ノードを追加します。

 Transformノードが追加できたら、以下のようにノードを繋げてMediaIn1とTransformの結果をMergeノードでマージします。

 マージするとMediaOutの結果として00_base.pngの画像に01_paku.pngの画像が上乗せされた状態になるので、「Transform」ノードを選択した状態でセンターの「X」、「Y」の値を調節してちょうどいい位置に開口が来るように調節します。今回はXを0.45、Yを0.65にしました。

 次にノード画面で「Shift + Space」キーを押下して出てきた検索の入力欄に「カスタムツール」と入力して出てきたものを選択し、「追加」ボタンを押下します。

「Custom Tool」ノードが追加されるので、それを選択した状態で出てくる「Number In 1」を右クリックします。

 右クリックして出てきたメニューから「モディファイアー」→「Audio(WAV)」を選択します(※「Audio(WAV)」が出てこない場合は1の手順を行ってください)。

 選択後、上部にある「モディファイアー」をクリックし出てきた中の「ブラウズ」ボタンをクリックして口パクさせたいwavファイル(2でタイムラインに読み込ませた音声ファイルと同じもの)を選択します。

 音声ファイル読み込み後、ファイルパスが表示されます。

 この状態で「ツール」の画面に戻って再生してみると、Number In 1の値が音声に合わせて細かく動くようになっています。

 あとはこの「Number In 1」の値を使って口パクの画像を表示させたりさせなかったりするだけです。

 そのためにスクリプトを使います。

 Mergeノードを選択した状態で「設定」をクリックします。その中に「フレームレンダースクリプト」と「開始レンダースクリプト」という項目があるのでその中にスクリプトを記述していきます。

 記述するスクリプトの内容は以下の通りです。

・フレームレンダースクリプト

if CustomTool1.NumberIn1 >= AudioVolume then
 self.Size = MouthSize
else
 self.Size = 0
end

・開始レンダースクリプト

AudioVolume=0.17
MouthSize=1

「AudioVolume=0.17」の値が口を閉じるか開けるかの閾値になっているので、音声ファイルによってこの値を調整する必要があります。

 実際にMergeノードにこのスクリプトを記述して再生すると、以下のように音声に合わせて口パクするようになります。

 あとはいつも通りデリバー画面から動画として書き出せばよいだけです。

 実際に出力してみた動画が以下になります。


 以上がDavinci Resolveでwavファイルに合わせて口パクさせる方法になります。

 また余談ですが、今回は画像に対してFusionを使って口パクさせているのでエディット画面からキャラクターの位置を変更させたり変形させたり背景を追加したりなどもできます。
 つまり、よく目にするゆっくり解説などの動画もこの手法を使えば作成可能だと思うので、割と使い道は多そうです。
 

・参考資料

【Davinci Resolve】Davinci ResolveにReactorを導入する

 久々にDavinci Resolveを使ってみようと思い色々と調べていたところ、Reactorという無料のプラグインを入れると音声の波形に合わせた映像を作れるようでした。

 なので今回はReactorをDavinci Resolveに導入する方法になります。

 基本的には参考資料にあるページ様の内容通りなので、詳しくはそちらを参照してください。


 では、始めます。


1:Reactorのインストールスクリプトのダウンロード
 まずはインストール用のスクリプトをダウンロードします。

 以下のページを開きます。

 開くと「Download the Reactor Installer Script here」とあるので、その「here」のところをクリックします。

 ファイルのダウンロードが開始されるので完了するまで待ちます。

 ダウンロード完了後、Cドライブ直下に「reactor」というフォルダを作成し、その中にダウンロードしたファイルを移動させます(※このようにしているのは、インストールファイル実行時にファイルパスに全角文字が入るとインストールがうまくいかない場合があるためです)。


2:Davinci ResolveにReactorをインストール
 1の手順が終わったら、Davinci Resolveを起動させて空のプロジェクトを開き、「Fusion」画面を開きます。

 Fusionの「ノード」画面の領域内に「Reactor-Installer.lua」ファイルをドラッグ&ドロップします。

 自動的に以下のようなダイアログ画面が出てくるので「Install and Launch」をクリックします(※ここでダイアログ画面が出てこない場合はパスがおかしい可能性があるので1の手順がちゃんとできているか確認してください)。

 ダウンロードとインストールが始まるのでしばらく待ちます。数分から数十分かかる場合があります。

 しばらく待って以下のような画面が表示されればインストールが完了しているので、画面を閉じてDavinci Resolveも終了させます。

 Davinci Resolveを再起動させて空のプロジェクトを開き、メニューの「ワークスペース」→「スクリプト」→「Reactor」が表示されていればインストールは完了になります。


 以上がDavinci ResolveにReactorを導入する方法になります。

 まだReactorを使ってはいないですが、色々とできそうなのでとりあえず入れておくというだけでもいいかもしれないですね。


・参考資料

【Raspberry Pi Pico】Raspberry Pi Picoの内部温度を取得する

 Raspberry Pi Picoについて調べていたら、温度センサーが内蔵されていることがわかったので今回はその値を取得する方法の備忘録になります。

 Arduino IDERaspberry Pi Picoが使えるという前提で進めるので、環境構築ができていない場合は以下の記事を見ながら行ってください。


 では、始めます。


・内蔵の温度センサーの値を取得する
 Arduino IDEで環境構築した場合は取得するための関数がすでに用意されているので、以下の方法で簡単に取得できます。

float temperature = analogReadTemp();

 スケッチ例として、Arduino IDEのメニューの「ファイル」→「スケッチ例」→「rp2040」→「Temperature」を開けば具体的なサンプルが出てきます。

 以下がそのスケッチのサンプル例になります。

・Temperatur.ino

/* Released into the public domain */

void setup() {
  Serial.begin(115200);
  delay(5000);
}

void loop() {
  Serial.printf("Core temperature: %2.1fC\n", analogReadTemp());
  delay(1000);
}

 このサンプルをRaspberry Pi Picoに書き込んでからシリアルプロッタを開きます。

 右下のボーレートを「115200bps」に設定すると、以下のように1秒ごとに温度が表示されます。

 実際にRaspberry Pi PicoのRP2040チップ部分を指で押さえたりなどすると、温度が上がっていくのがわかると思います。


 以上がRaspberry Pi Picoの内部温度を取得する方法になります。

 ただしちゃんと外気温が計測できているわけではなさそうなので、あくまで目安(チップが発熱してないかのチェックなど)として使うのが良さそうですね。


・参考資料