goo blog サービス終了のお知らせ 

雲の向こうの空

立ち上る雲の向こうの空 いかん
見上げしもののあわれとぞ思ふ

第2世代 Fire TV Strick はカクカクする

2023年11月27日 | CPU

はじめに

Amazon の Fire TV Strick は、テレビのHDMI 入力に接続すると YouTube とか AbemaTV とかいろいろなネットのコンテンツを視聴できるすぐれものです。ネットに接続してこれらのコンテンツを視聴できない古いテレビをハイテクな今風のテレビに換えてくれます。でも、HDMI CEC に対応していないテレビはすみませんです。

ここでは、古くて性能の低い FireTVStick(第2世代) の動作がカクカクしてしまう問題の解決策を提案します。

1.Wi-Fi の通信を安定させる

「Wi-Fi の通信を安定させる」という解決策は Google で検索するとまず目につくが、スマホで問題なければ通信状態を改善したとしても問題を解決できる可能性は低いだろう。 5GHz 帯を通信に使用している場合、古いFireTVStick は W52 (5.2GHz帯) しか使えない。 だが、W53(5.3GHz帯)、W56(5.6Ghz帯) を使用する場合、気象レーダーなどと干渉することがあるそうなので、稀だとは思いますが、そこんとこを確認する必要があります。

2.アプリのキャッシュを削除する

次に候補にあげられる解決策は、アプリのキャッシュを削除するです。

折角キャッシュしてるけど、消してみてください。

3.ビデオ解像度を720pにする

第2世代 FireTVStick のカクカクの解決策はこれしかない!!です。

  1. 「メニュー」から「設定」へ
  2. 「ディスプレイとサウンド」へ
  3. 「ディスプレイ」へ
  4. 「ビデオ解像度」へ
  5. 「720p60Hz」を選択して「確定」

外部リンク:Fire TV Stickで画質を設定する方法

4.VLC にたよるな

ひと昔前は VLC を使っていれば間違いないと思われた時代もありましたが、 時代はかわっちゃったみたいです。


欲望のままに PV に字幕を埋め込む

2022年01月15日 | CPU

はじめに

中国の miHoYo という企業が作っているゲームで、『原神』(Genshin Impact) というタイトルのゲームがあるらしいですね。 それくらいしか知らないのですが、いつも拝見している イラストレーターでレイヤーの小柔 SeeU さんの云菫(うんきん)のコスプレが凄くよくて、 凄く興味を持ってしまったのです。

つぎのツイートがその有様です。

神曲「神女劈观」

そして、つぎの YouTube の動画 「神女劈观」がBGMで使われている歌になります。

このPVに中国語の歌詞を埋め込んでみたくなった

凄くよい曲なので、どんな歌詞なのか知りたくなって調べたら、ちび妖精 さんのところで、いろいろ解説されていました。

【传教用】神女劈观中日文对照长篇解析(給日本朋友科普用的)

ぜひ、歌に合わせて歌詞を表示させたいですよね。 でも、YouTube では字幕表示が用意されていたかったようです。 そこで、srt ファイルと ass ファイルをご用意いたしました。

subtitle-zho.srt

1
00:00:05,700 --> 00:00:12,500
可叹

2
00:00:13,500 --> 00:00:23,000
秋鸿折单复难双

3
00:00:23,500 --> 00:00:33,000
痴人痴怨恨迷狂

4
00:00:33,800 --> 00:00:44,000
只因那邪牲祭伏定禍殃

5
00:00:44,500 --> 00:00:55,000
若非巾幗拔劍 人皆命喪

6
00:01:01,550 --> 00:01:06,500
凡缘朦朦仙缘滔

7
00:01:06,600 --> 00:01:11,500
天伦散去绛府邀

8
00:01:12,000 --> 00:01:16,800
朱丝缚绝烂柯樵

9
00:01:17,000 --> 00:01:21,000
雪泥鸿迹遥

10
00:01:22,000 --> 00:01:26,700
鹤归不见昔华表

11
00:01:26,900 --> 00:01:31,800
蛛丝枉结魂幡飘

12
00:01:32,000 --> 00:01:35,800
因果红尘渺渺

13
00:01:36,200 --> 00:01:40,000
烟消

14
00:01:41,700 --> 00:01:44,800
神女劈观到这里本该接近尾声

15
00:01:45,000 --> 00:01:47,300
但今日,我再添一笔

16
00:01:47,500 --> 00:01:51,300
唱与诸位听

17
00:01:52,500 --> 00:01:56,800
曲高未必人不识 

18
00:01:57,000 --> 00:02:01,800
自有知音和清词

19
00:02:02,000 --> 00:02:06,800
红缨猎猎剑流星

20
00:02:07,000 --> 00:02:19,500
直指怒潮洗海清

21
00:02:21,000 --> 00:02:22,300
彼时鹤归

22
00:02:22,500 --> 00:02:25,500
茫茫天地无依靠

23
00:02:25,700 --> 00:02:27,500
孤身离去

24
00:02:27,700 --> 00:02:28,700
今日再会

25
00:02:28,850 --> 00:02:31,700
亲朋好友坐满堂

26
00:02:31,850 --> 00:02:35,500
共聚此时

subtitle-zho.ass

[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Song,Arial,20,&Hffffff,&Hffffff,&H575757,&H0,0,0,0,0,500,500,0,0,1,3,0,2,10,10,50,0
Style: Narrative,Arial,20,&Hffffff,&Hffffff,&H878700,&H0,0,0,0,0,500,500,0,0,1,3,0,2,10,10,50,0

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:05.70,0:00:12.50,Song,{\be1}可叹
Dialogue: 0,0:00:13.50,0:00:23.00,Song,{\be1}秋鸿折单复难双
Dialogue: 0,0:00:23.50,0:00:33.00,Song,{\be1}痴人痴怨恨迷狂
Dialogue: 0,0:00:33.80,0:00:44.00,Song,{\be1}只因那邪牲祭伏定禍殃
Dialogue: 0,0:00:44.50,0:00:55.00,Song,{\be1}若非巾幗拔劍 人皆命喪
Dialogue: 0,0:01:01.55,0:01:06.50,Song,{\be1}凡缘朦朦仙缘滔
Dialogue: 0,0:01:06.60,0:01:11.50,Song,{\be1}天伦散去绛府邀
Dialogue: 0,0:01:12.00,0:01:16.80,Song,{\be1}朱丝缚绝烂柯樵
Dialogue: 0,0:01:17.00,0:01:21.00,Song,{\be1}雪泥鸿迹遥
Dialogue: 0,0:01:22.00,0:01:26.70,Song,{\be1}鹤归不见昔华表
Dialogue: 0,0:01:26.90,0:01:31.80,Song,{\be1}蛛丝枉结魂幡飘
Dialogue: 0,0:01:32.00,0:01:35.80,Song,{\be1}因果红尘渺渺
Dialogue: 0,0:01:36.20,0:01:40.00,Song,{\be1}{\fad(0,500)}烟消
Dialogue: 0,0:01:41.70,0:01:44.80,Narrative,{\be1}神女劈观到这里本该接近尾声
Dialogue: 0,0:01:45.00,0:01:45.80,Narrative,{\be1}但今日
Dialogue: 0,0:01:45.90,0:01:47.30,Narrative,{\be1}我再添一笔
Dialogue: 0,0:01:47.50,0:01:51.30,Narrative,{\be1}唱与诸位听
Dialogue: 0,0:01:52.50,0:01:56.80,Song,{\be1}曲高未必人不识 
Dialogue: 0,0:01:57.00,0:02:01.80,Song,{\be1}自有知音和清词
Dialogue: 0,0:02:02.00,0:02:06.80,Song,{\be1}红缨猎猎剑流星
Dialogue: 0,0:02:07.00,0:02:17.00,Song,{\be1}{\fad(0,800)}直指怒潮洗海清
Dialogue: 0,0:02:21.00,0:02:22.30,Narrative,{\be1}彼时鹤归
Dialogue: 0,0:02:22.50,0:02:25.50,Narrative,{\be1}茫茫天地无依靠
Dialogue: 0,0:02:25.70,0:02:27.50,Narrative,{\be1}孤身离去
Dialogue: 0,0:02:27.70,0:02:28.70,Narrative,{\be1}今日再会
Dialogue: 0,0:02:28.85,0:02:31.70,Narrative,{\be1}亲朋好友坐满堂
Dialogue: 0,0:02:31.85,0:02:36.00,Narrative,{\be1}{\fad(0,500)}共聚此时

何かおかしなところがあるでしょう

そりゃ、わたしは中国語が上手なわけではないので、至らないところもあるでしょう。 そこは、こそこそこそっとなおしてやってくださいm(_ _)m

それでは、お幸せに…


ROG STRIX B560-I GAMING WIFI に ubuntu をインストール

2021年11月28日 | CPU

はじめに

mini-ITX のパソコンを組みました。組み合わせは、パーツ構成のようになります。 OS は、ubuntu 20.04.3 LTS をブータブルUSBからインストールしました。 2021年11月末までの状況について紹介します。

紹介はしますが、自己責任でお願いしますm(_ _)m。

インストールに関して大きく2つの問題点がありました。 有線LAN(RTL8125)のドライバモジュールに関する問題とグラフィックボードのドライバモジュールに関する問題です。

結論から wifi でインターネットに接続できない環境では、簡単にインストールは無理です。

パーツ構成のあとに問題点と対処方法、つぎに組み立てとインストールの Tips を紹介します。

パーツ構成

ケース
Fractal Design Era ITX
電源ユニット
Corsair SF600 -PLATINUM- 600W
M/B
ROG STRIX B560-I GAMING WIFI
メモリ
CFD販売 PC4-21300 DDR4-2666 16GB Panram D4U2666PS-16GC19
SSD
Western Digital NVMe WDS100T2B0C
グラフィックボード
ASUS NVIDIA GeForce GT730 2GB
CPU
Intel Corei5-11400
ストレージデバイス
Hitachi HGST Deskstar 3.5inch 1TB 0S02601 Serial ATA300

インストール時のネットワーク接続

ubuntu 20.04 LTS (以下 ubuntu) をインストールするときにネットワークに接続することで、 最新のパッケージをインストールすることができます。

インストールでは wifi での接続が選択できます。必ず接続して、インストールしながら最新のパッケージを取得するようにしてください。有線接続はできません。

インストール時にネットワークに接続しておかないと、LAN接続に関するドライバモジュールの取得ができなくなります。 結果として、RTL8125 を使用している有線接続はできません。 無線接続についても、オンボード、USBで接続した無線LANアダプタも不安定な状態で apt できないでしょう。

もしくは事前に有線LANか wifi の適切なドライバモジュールを用意してください。

わたしは、Buffalo の WLI-UC-G301N を挿して接続しました。 15分程度でインストールは完了します。

GT730 のグラフィックボードのドライバモジュールについて

今回の組み合わせでは、Core i5 11400 の GPU を内蔵した CPU を使用しているので、グラフィックボードがなくても映像・音声とも出力が可能です。

ASUS GT730-SL-2GD5-BRK-E を使用する場合は、別段の手順と注意点があります。

絶対に注意するべき点は、グラフィックボードのドライバモジュールが間違いなくインストールされる前に

「自動ログイン」をオンにしない!!

ブータブルUSBからインストールした直後は、「ソフトウェアとアップデート」ー>「追加のドライバ」で「手動でインストールしたドライバ」が表示されています。"nvidia-driver-470" を選択したいのですが、できないでしょう。 そこで、つぎの手順を踏みます。

1.DisplayManagerを無効

「DisplayManagerを無効」にすると GUI からCUI のみに切り替わります。

$ systemctl isolate multi-user.target

2.nvidia のドライバモジュールをいったん削除

CUI でログインして、つぎのコマンドを実行して、nvidia のドライバを削除します。

$ sudo apt --perge autoremove nvidia*

3.nvidia-driver-470 のインストール

$ sudo apt update
$ sudo apt install nvidia-driver-470
$ reboot

これで、あなたは幸せになれるかもしれません。あとはあなたの好みのままです。(CUDA以外はな。。。)

mini-ITX は程よいサイズ

トラブルシューティングが終わると、あなたはたいして興味をなくすかもしれませんが、10年ぶりにPCを更新したので、その驚きと時代の変化についていけなかったことを記しておきます。

これまでは Shuttle の SH55J2 を使用していました。ベアボーンです。キューブ型のPCがほしかったのですが、拡張性や機能性、将来性を検討すると mini-ITX にしようと結論しました。ただ、mini-ITX の規格は台湾のメーカーが提唱している規格らしくて、どこまで維持されるのか心配です。拡張性、機能性、サイズは素人目ですがピカイチだと思います。あと値段の方が…

電源ユニットは、SFX/規格 のものを使いました。ATX12V だとちょっと大きすぎるんですよね。 SFX/規格の電源ユニットを選択することで PCケース Era では、3.5インチベイが2つ確保できます。 2.5インチだと4つです。ATX12Vだと、3.5インチベイが1つ。2.5インチが2つになります。 あと、グラフィックボードを設置して配線するのにかなり余裕が取れます。

静かだよ

静音性についてですが、これもこだわりました。Era のケースファンは 92mm と大きく静かです。 グラフィックボードの ASUS NVIDIA GeForce GT730 もファンレスなので静かです。 電源ユニットのCorsair SF600 も低出力時はファンが停止して静かです。 総じて、静かです。

温度も適温だよ

温度も 通常使用で CPU が 45℃、G/B が30℃、NVMe が 40〜50℃、wifi が 40℃程度で、 オーバークロックなどしなければ問題ないと思います。 Era ケース は強力なファンを増設できるので、そういうのもありです。

CPU クーラは、BOX 付属の純正品を使用しています。 CPUファン電源が M/B の上部についているので、ファンの配線の向きを考慮しないと配線がファンに引っかかります。 グラフィックボードをはずしたときにひかかって、起動時にUEFI(BIOS)から警告がありました。 おそらく System のBeeper がないので あっ ってなったりして。。。

Core i5-11400

このへんは一般的で有名な仕様だと思います。 使用したところ、CPU の使用率が 50%未満と性能がフルで使えないようです。 なんででしょうねぇ。。。

メモリはケチったよ

メモリは DDR4 です。 M/B の要求が Non-ECC UNbuffered DIMM なので、Non-ECC です。 高いのが ECC なので、安いのを買いました。 増設を考えて16GB を 1枚としました。 意外にこれが性能を左右してたりするんですかね?

Western Digital NVMe WDS100T2B0C

はじめての SSD です。M/B の前面に取り付けるには 11世代の CPU を載せる必要があるそうです。 そのようにしています。

前は HDD がカリカリ鳴っていたのですが、静かで、OS、アプリの起動は速いです。 ホームディレクトリは HDD を使用しているので、.config を読み込むと凄く遅く感じます。 僅かなんですがね。

旧BOIS が UEFI というものに変わっていてビックリしました。 昨今の ゲーミングなんたらって言うのは、こういうことだったんだと思い知らされました。

パーティションを区切るのに EFIシステムというものを先頭に取らないとならないらしいです。 「EFIシステムパーティションの最も一般的なサイズガイドラインは100MBから550MBの間」 [fixes.pub] だそうです。878MBをゲットしました。実際の消費は 33MB だったのですが...知りませんよ。

吾に動画を!

これまで観れなかった AV1 コーディックの動画が見れるようになりました。 2つの動画再生も余裕でした。これで 11年は戦えます。

グラフィックボードのオトシマエ

GT730 は GK208B というらしいのですが、CUDA をインストールすると1画面しか表示されなくなります。 これからサポートされると問題が解決するのかは不明です。期待して終わります。

じゃねぇ。


PCケース Fractal Design Era ITX のレポです

2021年11月28日 | CPU

はじめに

PCケース Fractal Design Era ITX のレビューです。 Fractal Design Era ITX は Fracta の mini-ITX 用のPCケースです。 Era シリーズというシリーズで、感動するところはダンボールの包装から出すと塗装が素晴らしいところです。次の通り、パーツを取り付けてみましたので、参考になればと思います。

OGPイメージ

Era シリーズ Archives

アルミニウムと木材または強化ガラス製天板パネルで包まれたEraはあらゆる風景に溶け込みます。小ぶりな16リットルのサイズにも関わらず、デュア...

Fractal Design

 

パーツ構成

電源ユニット
Corsair SF600 -PLATINUM- 600W
M/B
ROG STRIX B560-I GAMING WIFI
メモリ
CFD販売 PC4-21300 DDR4-2666 16GB Panram D4U2666PS-16GC19
SSD
Western Digital NVMe WDS100T2B0C
グラフィックボード
ASUS NVIDIA GeForce GT730 2GB
CPU
Intel Corei5-11400
ストレージデバイス
Hitachi HGST Deskstar 3.5inch 1TB 0S02601 Serial ATA300

この構成では、ケースの中にかなりの余裕ができました。起動しているときの静音性は抜群です。

値段としては、総額で 100k ちょっとで全体的に値段のするパーツでの構成です。 参考にならないかもしれません。

なお、OS は Linux(ubuntu 20.04.3 LTS) を入れたので、あとで報告できればと思います。


Ubuntu 20.04 LTS で waifu2x-converter-cpp

2021年01月29日 | CPU

はじめに

waifu2x は深層畳み込みニューラルネットワークによる二次元画像のための超解像度システムです。簡単に言うと、あまり綺麗でない画像を綺麗にしたり、画像を拡大するときに綺麗に拡大してくれたりします。そのサービスはネットでも提供されていて、Webサイトにファイルをアップロードすることで使用することができますが、好きに使うにはローカルで使用できた方がいいですよね。

そこで、自宅のLinux(Ubuntu 20.04 LTS) でwaifu2xを利用する方法を紹介します。waifu2x から変換のみの機能を切り出した waifu2x-converter-cpp を動作させます。

waifu2x-converter-cpp には、異なるいくつかの種類があるようですが、今回は DeadSix27 氏 のものを使わせていただきました。
I express my heartfelt thanks.

以前、Ubuntu 18.04 LTS でも使用していたので 20.04 LTS でも使用できると思ったのですが、ちょっとハマったのでメモを残しておきます。また、絶対にこうじゃなければダメというのではなく、 こうすれば動いたというメモです。

パッケージのインストール

コンパイルに必要なパッケージを準備します。

waifu2x-converter-cpp のソースコードを取得するために git をインストールします。

$ sudo apt git

次に、コンパイルに必要な基本的なパッケージを用意します。

$ sudo apt install build-essential pkg-config libc6-dev libssl-dev libexpat1-dev libavcodec-dev libgl1-mesa-dev zlib1g-dev
$ sudo apt install cmake

OpenCV と OpenCL 関連のパッケージをインストールします。

$ sudo apt install libopencv-dev python3-opencv
$ sudo apt install opencl-headers
$ sudo apt install ocl-icd-opencl-dev
$ sudo apt install beignet-opencl-icd

次のパッケージは不要かもしれません。

$ sudo apt install lsb

ソースコードの取得

テンポラリ(適当なディレクトリ)に waifu2x-converter-cpp のソースコードを取得します。次のコマンドを実行すると、カレントディレクトリに waifu2x-converter-cpp というディレクトリができます。

$ git clone "https://github.com/DeadSix27/waifu2x-converter-cpp"

コンパイル・インストールと動的リンカの実行

取得したソースコードのディレクトリ(waifu2x-converter-cpp の中)で次のコマンドを実行します。

$ mkdir out && cd out
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig

cmake はコンパイラに依存しないでコンパイルするためのツールです。Ubuntu では gcc用の Makefile を作成してくれているのだと思います。 cmake があるということで、Windows などでもコンパイルできるのではないかと想像できるんです。

cmake の Config summary を示しておきたいと思います。CUDA を使用することもできるようです。

-- Config summary:
-- OpenCV: 4.2.0
-- OpenCL: 2.2
-- CUDA: Not found
-- Unicode: TRUE
-- Installing models to: /usr/local/share/waifu2x-converter-cpp
-- Not building test binaries
-- Building for: Unix Makefiles-x86_64

make のオプション -j は、コンパイル時に同時に実行するジョブの数です。私の環境では CPU のスレッド数が 4 なので 4 を指定しました。コンパイルする環境に合わせて変更してください。 分からなければ、普通に make すればよいと思います(知らないけど)。

今回ハマったところは OpenCV 関連のパッケージを用意していなくて "Built target w2xc" でエラーも表示されないで make が終了してしまいました。 ”Built target waifu2x-converter-cpp” と表示されれば成功です(多分)。 ぜひ、ハマってみてください。

動的リンカ(ldconfig)を実行しないで waifu2x-converter-cpp を実行するとライブラリがないと表示されてプログラムが終了します。

画像の処理

参考までに実行例を載せておきます。入力ファイル、出力ファイルは任意に変更してください。

$ waifu2x-converter-cpp -p 0 -m noise-scale --scale-ratio 2 --noise-level 2 -i 入力ファイル -o 出力ファイル

比較画像を掲載しておきます。左がオリジナル画像で、右が処理後の画像です。JPEG圧縮により劣化した画像などは比較的綺麗になります。 また、拡大処理をする場合も綺麗に拡大できます。

比較画像
比較画像(左:オリジナル 右:処理後)

使い方の詳細は、次のコマンドで表示されます。

$ waifu2x-converter-cpp --help

それではごきげんよう…


ノーチラスのスクリプト

2020年09月27日 | CPU


waifu2x-converter-cpp で圧縮により劣化した画像ファイルを綺麗にすることができますが、コマンドを打ち込むのは面倒なので、Ubuntu の nautilus のプルダウンメニューからコンバートできるようにシェルスクリプトを書いてみました。



waifu2x-converter-cpp にはいくつかの種類があるようですが、nagadomiさんのものを使用させていただいています。



次に nautilus で使用する シェルスクリプト(bash) を紹介します。



#!/bin/bash

exstr=_waifu2x

# 引数に複数のファイルが渡されている場合
# コンバートの実行を確認
if [ $# -gt 1 ]; then
zenity --question --no-wrap --title="確認" --text="$#個 のファイルを処理します"
if [ $? -ne 0 ]; then
exit 1
fi
fi

# ノイズ除去レベルを設定
#nois=$(zenity --entry \
#--title="ノイズ除去レベル" \
#--text="ノイズ除去レベルを入力してください:" \
#--entry-text "2")

nois=$(zenity --list \
--title="ノイズ除去レベル" \
--text="ノイズ除去レベルを選択してください:" \
--column="ノイズ除去レベル" --column="説明" \
3 "のっぺら" 2 "普通" 1 "荒い" 0 "そのまま")

if [ $? -ne 0 ]; then
exit 1
fi

case $nois in
[0-3]) md="-m noise"
;;
*)
zenity --error --no-wrap --text="${nois}ノイズ除去レベルの設定は 0 〜 3 です"
exit 1
;;
esac

exstr=${exstr}_n${nois}

# 倍率(スケール)を設定
scal=$(zenity --entry \
--title="スケール" \
--text="スケールを入力してください:" \
--entry-text "1")

if [ $? -ne 0 ]; then
exit 1
fi

BC_RESULT=`echo "$scal" | bc 2>&1`

if [ $BC_RESULT == 0 ]; then
zenity --error --no-wrap --text="スケールの設定は数値です"
exit 1
elif [ $BC_RESULT == 1 ]; then
:
else
exstr=${exstr}_x${scal}
md="-m noise-scale"
fi

# 引数で渡されたファイルをループで処理
for arg
do
ifile=${arg}
ofile=`echo ${arg} | sed 's/\.[^\.]*$//'`${exstr}.png

# 処理したファイルが渡されていた場合
# スキップの確認
if [ "`echo ${ifile} | grep '_waifu2x'`" ]; then
zenity --timeout=5 --question --ellipsize \
--title="確認" --text="既に処理されているファイルです\n スキップしますか?\n${ifile}"
if [ $? -ne 1 ]; then
continue
fi
fi

# 出力ファイルが重複する場合は次のファイルを処理
if [ -f ${ofile} ]; then
zenity --notification --text="${ifile}は既にコンバートされています"
continue
fi

# ファイル形式の確認
if [ "`file ${ifile} | grep -E '(JPEG|PNG) image data'`" ]; then
:
elif [ "`file ${ifile} | grep 'Web/P image'`" ]; then
:
else
zenity --notification --text="${ifile}は対応していないファイル形式です"
continue
fi

# waifu2x-converter-cpp の実行
zenity --notification --text "${ifile}を処理します"
gnome-terminal -- waifu2x-converter-cpp ${md} --scale-ratio ${scal} --noise-level ${nois} -i ${ifile} -o ${ofile}
#waifu2x-converter-cpp -p 0 ${md} --scale-ratio ${scal} --noise-level ${nois} -i ${ifile} -o ${ofile}

# ターミナルを表示して処理をするとプロセスの終了がわからないので
# プロセスを監視
#while [ `ps -ax | grep -E "[o] ${ofile}" | wc -c` != 0 ]
while [ "`ps -ax | grep -E 'waifu[2]x-converter-cpp'`" ]
do
sleep 2
done
done

zenity --notification --text "waifu2x は完了しました"




ノイズ除去レベルと倍率を zenity で設定できるようにしました。
zenity は簡単なダイヤログを表示するためのプログラムですが、ざまざまなことができてシェルスクリプト生活を大いに改善することでしょう。



ショルスクリプトの大まかな流れは


  1. ファイルが複数選択されている場合は実行を確認

  2. ノイズ除去レベルを選択

  3. 倍率(スケール)を入力



ここからあとは引数で渡さわたファイルの処理で、ループ処理されます。



  1. 入力ファイルが既にコンバートされている場合はスキップ

  2. 出力ファイルが重複する場合はスキップ

  3. 入力ファイル形式の確認

  4. waifu2x-converter-cpp の実行



以上です。プロセスを監視してみたりとちょっと工夫してみました。こうしたらいいよというアドバイスなどありましたら、コメントにてお知らせ頂けると嬉しいです。


日産カーナビ MP311D-W エンコード設定

2019年06月10日 | CPU

日産のカーナビ MP311D-W では、MP3の他にMPEG4が利用できると取扱説明書にあります。ここ以外のブログ(ウエブサイト)でもエンコード方法が紹介されていますが、 PC環境を Ubunto 18.10 に変更したので、CUI で ffmpeg を利用して、h.264(MPEG4 AVC) でエンコードする場合にハマった。よって、ここにメモを残しておきます。

次のコマンドで MP311D-W で再生できる h.264(MPEG4 AVC) に変換できます。

ffmpeg -i "${INPUT_FILE}" -vcodec libx264 -profile:v baseline -level 2.1 -s 400x240 -crf 21 -refs 1 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -f mp4 "${OUTPUT_FILE}"

まず、転載ではありますが、MP311D-W で利用可能な規格について触れておきます。 次のサイトを参考にさせていただきましたが、いくつか追加情報があります。

表-1 映像部分
コーデック ビットレート フレームレート 最大解像度 プロファイル フレーム参照距離
MPEG4 216 kbps ~ 2.5 Mbps 15 fps、30 fps *1 400 × 240 Simple Profile Level 3 Unknown
H.264 216 kbps ~ 1.5 Mbps 15 fps、30 fps *1 400 × 240 Baseline Profile Level 2.1 1 Ref Frame(s)
表-2 音声部分
コーデック ビットレート サンプリングレート
AAC-LC 8 kbps ~ 320 kbps 16 kHz、22.05 kHz、24 kHz、32 kHz、44.1 kHz、48 kHz
表-3 ファイル
拡張子 サイズ制限
.MP4、.MKV、.m4v 1 GB未満 *2

  1. *1 30fps 以下だと任意の値を取れるかもしれない
  2. *2 1GB以上のファイルも再生できた

表が見づらいですが、話しを進めます。すべて重要なのですが、特筆すべき(ハマるところ)は、プロファイルとフレーム参照距離です。 特にオプションの "-refs" フレーム参照距離については、他のサイトでは触れられておりません。

えっ?まだわからないことがある?

次に ffmpeg の基本的な使い方が紹介されているサイトがあったので、紹介しておきます。

そこで気になるのが
-pix_fmt yuv420p
もしくは
-vf format=yuv420p
というオプションです。ちょっと気にとめておこう。

今回紹介したコマンドでは、明示的にオプションを指定しなかったけど、ちゃんと yuv420p で出力されていました。 参考までに "ffprobe" の出力を載せておきます。

ffprobe version 4.0.4-0ubuntu1 Copyright (c) 2007-2019 the FFmpeg developers
  built with gcc 8 (Ubuntu 8.2.0-7ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=0ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4.m4v':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
  Duration: 00:04:00.07, start: 0.000000, bitrate: 302 kb/s
    Chapter #0:0: start 0.000000, end 33.992000
    Metadata:
      title           : Intro
    Chapter #0:1: start 33.992000, end 63.939000
    Metadata:
      title           : Credits
    Chapter #0:2: start 63.939000, end 229.980000
    Metadata:
      title           : Episode
    Chapter #0:3: start 229.980000, end 239.948000
    Metadata:
      title           : Preview
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 400x240 [SAR 16:15 DAR 16:9], 232 kb/s, 23.98 fps, 23.98 tbr, 11988 tbn, 47.95 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(jpn): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 64 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      handler_name    : SubtitleHandler
えっ?もっとためになる情報が見たい?仕方ありませんねぇ。
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 59.5 MiB
Duration                                 : 23 min 59 s
Overall bit rate                         : 347 kb/s
Writing application                      : Lavf58.12.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L2.1
Format settings                          : 2 Ref Frames
Format settings, CABAC                   : No
Format settings, ReFrames                : 2 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 23 min 59 s
Bit rate                                 : 278 kb/s
Width                                    : 400 pixels
Height                                   : 240 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.121
Stream size                              : 47.7 MiB (80%)
Writing library                          : x264 core 152 r2854 e9a5903
Encoding settings                        : cabac=0 / ref=2 / deblock=1:1:1 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / psy_rd=0.40:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=21.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:0.60

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : mp4a-40-2
Duration                                 : 23 min 59 s
Duration_LastFrame                       : -9 ms
Bit rate mode                            : Constant
Bit rate                                 : 64.4 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 11.1 MiB (19%)
Language                                 : Japanese
Default                                  : Yes
Alternate group                          : 1

えっ?もっと実用的なものがほしい?それでは、シェルコマンドを残しておきます。

これは、引数で得たファイルをエンコードして、実行ディレクトリに拡張子を ".m4v" に変更して保存するシェルスクリプトです。かなり危険なものとなっておりますので、自己責任でお願いします。

#/bin/bash

for P in "$@"; 
do
VAL1=`echo $P | awk -F/ '{print $NF}'`
VAL2=`echo $VAR1 | sed -e "s/\.[^\.]*$/\.m4v/g"`
echo -en '\e[34m'
echo -en $VAL2 
echo -e '\e[m'

#ffmpeg -y -i "${P}" -vcodec libx264 -profile:v baseline -level 2.1 -tune animation -s 400x240 -crf 22 -refs 2 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -f mp4 "${VAL2}"
ffmpeg -i "${P}" -vcodec libx264 -profile:v baseline -level 2.1 -s 400x240 -crf 21 -refs 1 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -preset veryslow -f mp4 "hoge-${VAL2}"

done


VBScript から OOo Calのデータを読み込む

2011年03月26日 | CPU

VBScriptでOpenOffice.orgのodsファイルへアクセスするための簡単なサンプルプログラムです。ファイルへのパスは引数から得ています。loadComponentFromURLを使用するにはファイル名にConvertToUrlの処理が必要です。




Option Explicit
Dim oSM
Dim oDesktop
Dim oIntroSpection
Dim oDispatchHelper
Dim oCalcDocDim oSheet
Dim oCellDim OpenPar(1)
Dim myFileNameSet
oSM = Wscript.CreateObject("com.sun.star.ServiceManager")
Set oDesktop = oSM.createInstance("com.sun.star.frame.Desktop")
myFileName = ConvertToUrl(WScript.Arguments(0))
Set OpenPar(0) = MakePropertyValue("ReadOnly", False)
Set OpenPar(1) = MakePropertyValue("Hidden", False)
'Set OpenPar(1) = MakePropertyValue("Hidden", True)
Set oCalcDoc = oDesktop.loadComponentFromURL(myFileName, "_blanks", 0, OpenPar)
Set oSheet = oCalcDoc.Sheets.getByName("Sheet1")
Set oCell = oSheet.getCellByPosition(1,2)
Wscript.echo oCell.Value
Call oCalcDoc.close(true)







Function ConvertToURL(sFileName)
Dim fso 
Dim sTmpFile
Set fso = CreateObject("Scripting.FileSystemObject")
If Left(sFileName, 7) = "file://"
Then
ConvertToURL = sFileName
Exit Function
End If
ConvertToURL = "file:///"
sTmpFile = fso.GetAbsolutePathName(sFileName)          'replace any "\" by "/"
sTmpFile = Replace(sTmpFile,"\","/")          ' replace any % by %25
sTmpFile = Replace(sTmpFile,"%","%25")          'replace any " " by "%20"
sTmpFile = Replace(sTmpFile," ","%20")
ConvertToURL = ConvertToURL & sTmpFile
End Function




MakePropertyValue は事前にoSMに"com.sun.star.ServiceManager"がセットされていないといけません。



Function MakePropertyValue(byval cName, byval uValue)         
Dim oPropertyValue          
Set oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")        oPropertyValue.Name = cName
oPropertyValue.Value = uValue 
Set MakePropertyValue = oPropertyValue
End Function




なんか草稿があったから適当にアップしとくね


間違いあったから、直してみた



MA-50J-

2007年09月30日 | CPU

2005年に日本橋にて8000円で購入された中古のPC、NEC MateNX MA50Jは順調に稼動を続けており,本日2007年9月30日 午前11時31分 にcronによるweather.shの起動を確認しました.

このスクリプトはbashにより動作し,Japan Meteorological Agencyよりwgetにより特定地域のアメダスデータを取得するという簡単なデータ蓄積システムです.

# cat /var/spool/cron/rabbit

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.8873 installed on Sun Sep 30 11:37:11 2007)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
#SHELL=/bin/bash
#PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=rabbit
#HOME=/home/rabbit

05 5 * * *  /home/rabbit/.cron/weather.sh


$ less /home/rabbit/.cron/weather.sh

#!/bin/bash
spath=/mnt/hippo/weather/
tt=$(date +%Y%m%e)
fl=${tt%.+}.html
filename=${spath}${fl}

lg=log.${tt}
log=${spath}${lg}

geturl="http://www.jma.go.jp/jp/amedas_h/yesterday-**121.html?areaCode=000&groupCode=46"


if [ ! -e "$filename" ]; then
	wget -O $filename $geturl -o $log
else
	echo -e "Exist $fl"
fi