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

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

【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の内部温度を取得する方法になります。

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


・参考資料

【Windows】マウス接続時にタッチパッドを無効にする

 ノートPCを使って文章やプログラムを書いている時に、時々タッチパッドに指が当たって変なところにカーソルが移動したり勝手に切り取られたり移動されたり誤作動を起こすことが割とありました。

 なのでPCにマウスを繋いでいる時に無効にできないかと調べたら簡単にできたのでその備忘録になります。


 では、始めます。


・マウス接続時にタッチパッドを無効にする
 Windowsの「設定」を開いて「デバイス」をクリックします。

 デバイス画面を開いたら左にある「タッチパッド」をクリックし、出てきた中にある「マウスの接続時にタッチパッドをオフにしない」のチェックを外します。

 これでマウス接続時にタッチパッドを触っても反応しなくなります。


 以上がマウス接続時にタッチパッドを無効にする方法になります。

 タッチパッドが大きいノートPCを使っている場合は、親指が当たってしまって誤作動することもあるのでデフォルトでチェックは外しておいてほしいですね…。


・参考資料

【Raspberry Pi Pico/Windows】Raspberry Pi Picoでデュアルコアを使ってみる

 前にC/C++Raspberry Pi Picoを使うための環境構築方法の記事を書きました。

 最近またちょっと触ってみようと思い色々調べたところ、Arduino IDEでも簡単に開発できるようになっていたのとデュアルコアの処理をやってたなかったのでやってみようと思い記事にした次第です。


 では、始めます。


1:Arduino IDERaspberry Pi Picoを使えるようにする
 まずはArduino IDERaspberry Pi Picoを使えるようにします。

 Arduino IDEを開いて「ファイル」→「環境設定」を選択します。

 環境設定画面の「追加のボードマネージャのURL」の右側にあるアイコンをクリックします。

 クリックしたら以下のURLをコピペし、そのURLを一行追加してOKをクリックします。

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

 URLが追加されていることを確認して「OK」をクリックします。

 次に「ツール」→「ボード」→「ボードマネージャ」を選択します。

 検索欄に「pico」と入力すると色々と出てきますが「Raspberry Pi Pico/RP2040」と書かれているものの「インストール」ボタンをクリックしてインストールします。

 これでArduino IDERaspberry Pi Picoを使えるようになりました。

 ※ちなみに検索欄で出てきたボードの一番最初に出てくる「Arduino Mbed OS RP2040 Boards」はArduino公式が出しているものですが、こちらでは簡単にデュアルコアを使えないようだったのでインストールはしていません。一応共存はできるようなので両方インストールしていても大丈夫ですが、今回のデュアルコアを使うには「Raspberry Pi Pico/RP2040」をインストールしておく必要があります。


2:Raspberry Pi Picoでデュアルコアを使う方法
 Raspberry Pi PicoはCore 0とCore 1の2つのコアがあります。

 以下の書き方でどちらで処理させるかを指定することができます。

/* Core 0の処理 */
void setup() {
}

void loop() {
}

/* Core 1の処理 */
void setup1() {
}

void loop1() {
}

 「setup」と「loop」関数はCore 0で処理、「setup1」と「loop1」関数はCore 1で処理というとてもわかりやすく簡単な書き方で記述できます。


3:Raspberry Pi Picoでデュアルコアを使ったサンプル
 書き方がわかったので実際にサンプルを動かしてみます。

・pico_dual_test.ino

/**
 * Raspberry Pi Picoでデュアルコアテスト
 */
const int LED_PIN = 25;

int count = 0;
bool led_flg = true;
 
/* ---- Core 0の処理 ---- */
void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("core0:start....");
}

void loop() {
  Serial.println(count);
  count = count + 1;

  if (count > 100) {
    count = 0;
  }
  delay(1000);
}

/* ---- Core 1の処理 ---- */
void setup1() {
  pinMode(25, OUTPUT);
  delay(1000);
  Serial.println("core1:start....");
}

void loop1() {
  count = count + 1;
  digitalWrite(LED_PIN, led_flg);
  led_flg = !led_flg;
  delay(2000);
}

 サンプルを少し解説するとCore 0の方で1秒ごとにカウントアップとシリアルでその値を表示させています。Core 1の方ではボードにあるLEDを点滅させつつ、Core 0で行っているカウントアップの変数に2秒ごとにさらに1を追加しています。

 上記のサンプルのスケッチを書き込む際は「ボード」→「Raspberry Pi RP2040 Boards」→「Raspberry Pi Pico」を選択します。

 デフォルトの値のまま「シリアルポート」から該当のポートを選択します。

 あとは書き込みボタンをクリックして書き込みます。

 書き込む時は一度Raspberry Pi Picoとの接続が途切れ、エクスプローラーのファイル画面が表示されますがすぐに消えます。それが消えたら書き込みは終了しています。

 初回の場合はドライバのインストールが走る場合がありますが、その場合はもう一度ポートを選択しなおしてから書き込みを実行してみてください。

 サンプルの書き込みが終了すると、Raspberry Pi PicoのボードにあるLEDが2秒ごとに点滅します。シリアルモニタを開くと以下のようにちゃんとCore 1でのカウントアップも反映されているのがわかると思います。


 以上がRaspberry Pi Picoでデュアルコアを使う方法になります。

 Arduino IDEで開発ができるという手軽さもありますし、何よりデュアルコアでの書き方も簡単だったので同時並行で色々処理させたい場合は非常に便利かと思います。

 またRaspberry Pi Picoは価格としてもかなり安くデュアルコアでの処理も行えるので、無線通信などをしないのであればこれが一番使いやすいボードなのではないかと個人的には思います。


・参考資料