バッチファイル作成で振り返る:超解像処理動画の自動化手順

以前のブログで【便利】コマンドラインツールで超解像処理!静止画も動画も高画質にという内容で書いていました。

uepon.hatenadiary.com

PowerShellやcmdの補完機能があるとはいえ、コマンドラインでの実行では打ち込みが多いので結構大変です。こんなときにはバッチファイル(.bat)などを使用することで入力の負担は軽減できるのですが…自分にはバッチファイルを作る知識があまりないので、このときの内容をバッチファイル化を通して作り方を学び直したいと思います。

元になる処理

今回は、以下のような処理を考えます。この処理では低画質mp4動画ファイルをフレーム分割、高画質化の処理を行い、それを結合しつつ、元の動画ファイルの音声を結合するといった処理になっています。

PS> mkdir img
PS> mkdir hires
PS> .\ffmpeg.exe -i .\640×480_サンプル動画.mp4 -q:v 1 .\img\%06d.png
PS> .\realesrgan-ncnn-vulkan.exe -i img -o hires -n realesrgan-x4plus
PS> .\ffmpeg.exe -i .\hires\%06d.png -i .\640×480_サンプル動画.mp4 .\output.mp4

このときは各処理の実行ファイルパス上で作業を行っていたのですが、できれば環境変数PATHに実行ファイルのパスを追加しておくことで、.\ffmpeg.exeというような表記をffmpeg.exeにする省力化もできると思います。今回はPATHに追加したという前提で行います。

大まかな処理は先程説明しましたが、もう少し処理を詳細にしてみます。

  1. 低画質動画ファイルをフレームごとに分割するためのフォルダを作成します。(フォルダ名は指定する)
  2. 高画質化したフレーム画像を保存するフォルダを作成します。(フォルダ名は指定する)
  3. ffmpeg.exeを使用して指定した動画ファイルからフレーム毎の静止画(.pngファイル)を先程のフォルダへ保存を行う(動画ファイルは指定する)
  4. realesrgan-ncnn-vulkan.exeを使用して、先程の静止画ファイルをそれぞれ高画質化する。
  5. ffmpeg.exeを使用して、高画質化したフレーム画像使用して動画を構成する。(出力ファイル名は指定する)

※realesrgan-ncnn-vulkan.exeは作業ファイルをフォルダ指定できるのでかなり簡単に書くことができます。

続きを読む

CircuitPythonでSORACOM LTE-M Button Plusのコード移植に挑戦!

以前書いたSORACOMさんの「ひげデバイス」ことSORACOM LTE-M Button PlusSeeed Studio XIAOArduino IDEを使用してコードを作成していたのですが、最近はC言語よりもPythonを使っていることのほうが増えてきていることもあるので、CircuitPythonを使用して同じコードができないかを確認してみたいと思います。

今回は以下のエントリーの内容を移植することにします。

uepon.hatenadiary.com

CircuitPythonとは

簡単に言うとAdafruitさんの組み込み向けのPython処理系となります。同じ位置づけのMicroPythonもありますがCircuitPythonMicroPythonのfolkです😅。

【(Wikipediaより参照)https://ja.wikipedia.org/wiki/CircuitPython

CircuitPythonはMicroPythonから派生した、教育および初心者向けのオープンソースプログラミング言語である。CircuitPythonは、Adafruit Industriesが開発を支援しており、Python3プログラミング言語C言語によるソフトウェア実装である。数種類の現行のマイクロコントローラに移植されている。

【CircuitPythonの公式ページ】

circuitpython.org

組み込み環境での使用となるため純粋なPythonといいにくい部分もありますが、文法やREPLなどでは似た環境なので、Pythonに詳しい方にとっては導入のハードルが低いですね。またREPLがあるので、USB接続したシリアル通信を使用してコマンドラインからテストが可能になっています。

対応ハードウエアは以下のページ参照

circuitpython.org

今回使用するのはSeeed Studio XIAO SAMD21となります。切手サイズのかわいいデバイスです。

Seeed Studio XIAO SAMD21www.switch-science.com

続きを読む

IBM watsonx.aiで未来の扉を開く: 初心者のための冒険ガイド

昨年の秋ごろから気になっていたIBM watsonx.aiですが、ようやく時間ができたので、これまでの情報をもとにさわってみようかなと思います。 まずは事前に準備されたサンドボックスを使用して、どんな感じなのかを体験してみようと思います。

Qiitaにも記事はありますが半年ほど前の情報が多いので、その後の変化などを楽しめるといいのかなと感じています。

このエントリーの内容ではIBM Cloudの知識が少し必要な部分もありますが、そこまで詳しい知識がなくても体験ができるというレベルを目指したいと思います。また、このサンドボックスからプログラミングへの派生などに関してもヒントがあれば残してみようと思います。

参考にしたのは以下の情報となります。

【参考】

qiita.com

qiita.com

続きを読む

PEP668エラー回避のヒント:pipxの活用

最近のUbuntuRaspberryPiを使用しているとpipコマンドでライブラリのインストールをするときにPEP668のエラーが出てきます。 以下は最新のRaspberryPi OSであるDebian GNU/Linux 12 (bookworm)pipコマンドを使用してnumpyを インストールしてみた結果になります。

$ pip install numpy
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

エラーメッセージはaptコマンドを使用したインストールとpipコマンドでインストールがバッティングするのでvenvを使用してねというメッセージになります。最近のPythonのライブラリ関係はライブラリとしての使用はもちろんなのですが、エントリーポイントのような形で単体で動くコマンドのような役割を持ったものも多く存在しています。そのため、pipコマンドでのインストールでは仮想環境であるvenvを使用したほうが環境の混濁にならないのでいいですよ~という警告になります。もちろん、このあたりの回避方法はオプションスイッチの指定であったり、設定ファイルなどを使用すれば回避可能です。

【参考】

blog.jp.square-enix.com

ですが、その他の方法として、pipxという方法もあるようです。先程のpipコマンドを実行時には表示されていませんでしたが、以前は以下の表示がありました。pipxを使用するのが簡単ですよってことのようです。

 If you wish to install a non-Debian packaged Python application,
 it may be easiest to use pipx install xyz, which will manage a
 virtual environment for you. Make sure you have pipx installed.

【参考】

peps.python.org

自分はpipxの存在については初耳でもあったので、ちょっと調べてみました。

続きを読む

RaspberryPi5の”電源ボタン”について調査する🔍

自分の元にもRaspberryPi5がやってきました。今回は結構ラッキーなタイミングで告知を見ることができたので購入できました。ただ、到着まではなぜかかなり時間がかかってしまい、初期購入勢のブログをみてあーネタがなくなってしまうなあという感じでした。新製品のスタート直後の情報は生モノです。

ascii.jp

ひとしきりネタがなくなってきてはいますが、購入前から気になっていた電源ボタンについてどんな感じなのか調べてみました。

RaspberryPi5の電源ボタン

RaspberryPi5にはこれまでなかった電源ボタンがあります。

SDカードの近くににあります。以前から電源ボタンがあるといいのにと思うことがかなりあったので、これはいいんじゃない?と気になっていました。これまでは電源共有用のケーブル(ACアダプタ)に電源スイッチのついたものを使用していました。これはこれで便利なんですが、製品によっては電源不足になるようなケーブルもあるので過信はできない状況でもあります。

現在はこちらに落ち着いています。ケーブルの太さは細いですが、RaspberryPi4Bでも電源不足にはなっていません。

では、USB Type-Cコネクタ経由で電源ケーブルを接続すると…電源が入りました😯おや?普通にブートしてしまいます。「電源ボタンの意味とは?」という顔になってしまいました。

この動きはどうも想定どおりのようなので、その他はどういう挙動になるかを調べてみます。では、RaspberryPishutdownをしてみます。自分は最近はpoweroff派です。

$ sudo poweroff

通電したまま(赤いLEDが点灯したまま)shutdownが行われました。本体には電源が通電しています。ここで、電源ボタンを押すと…再起動しました。shutdown後に再起動するには電源ケーブルの抜き差しが必要だったので、これはちょっと便利かなってレベルでした。

続きを読む
/* -----codeの行番号----- */