pic 2022.01.22

今日の五条川。
雲一つない写真日和だけど夜勤明けで辛いので近所。

kisekirei

キセキレイ、今日も iso 800 のままでいってみる。
ブレやすいセキレイもいい感じになるね。

tsugumi

ツグミ、今年やっと撮れたけど遠い。
いや三月くらいになったらアホみたく簡単に撮れるはずだけど。

後は、イツメンしかいないなって。
でも前回に続いてトリミング無しでもイケるのが撮影できた。
ということで以下 5184x3888px そのまま付きで。

mozu
Full (5184x3888px 5.2MB

モズ、筆者に気がつかないのか近くにきてくれた。
ルミックスブルーが、いやそんなワードは無いけど空は綺麗です。

kawasemi
Full (5184x3888px 6.6MB

カワセミ、これまた凄く近い所に突如現れた。
あまり動かないんだからもっと iso 感度は下げてもよかったかな。

前回のメジロは顔ピンできなかったけど今日はイケた。
こんな日もあるから野鳥撮影は楽しいんです。

iso 800

今日の五条川。
久しぶりに涼宮ハルヒ緑地周辺へ。

突然ですが今日は iso 感度を 800 に固定して撮影する実験。
被写体ブレを減らしたいけどシャッター速度優先ではロクな写真にならない。
ならば iso 感度を許せる範囲まで上げて固定作戦、ということで。

yosigamo

ヨシガモ、こんな毛色が美しい鴨いるんだ。
あんまり綺麗に撮れなかったのが残念。

ooban

オオバン、おぉ羽が水を弾いているのも綺麗に撮れてます。
この鳥ずっとチョコマカ動いているのですぐ被写体ブレするんですよ。

hidorigamo

ヒドリガモとオオバンのコラボ、地上にいるのが目面しかったので。
うんいい感じ、iso 800 固定で何も問題ないな。

kawarahiwa

カワラヒワ、この鳥は警戒中だと動かないので楽です。
いや枝被りしてますけど、単なる次への前振り。

mejiro

メジロ、スゲェ久々に撮れたトリミング無し。
嬉しいのでこれまた久々にフルサイズ 2030万画素へ直リンク。
mejiro20220116.jpg (5184x3888px 5.6MB

しかし SILKYPIX でフルサイズ現像したらたったの 5.6MB って。
Lightroom の 20MB はいったい何の要素でこんなに巨大になるんだ?
同じ 5184x3888px なのに三倍も差が出るとは。

そんなこんなで、Adobe CC フォトプランを解約することにしました。
お金の問題ではなく上記とクラウドを使うメリットが筆者には無いのがさ。
てか、Photoshop をまったく使っていないという現実が一番の理由だけどね。
Lightroom のおかげで RAW 現像の勉強になりました、今までありがとう。

筆者は SILKYPIX の LUMIX 限定版でいいや。
E-M5 はそもそも Olympus Workspace でしか現像していないっていう。
この使用歩度で Abobe CC 会員を維持するのはちとオーバーかと。

mpv scripts

今日も mpv を Lua で弄る。

で、例によってディレクトリ内巡回機能なんですが。
筆者は再生終了で本体を終了しないように指定している。
再生中に「次のファイル」とすると普通に上手く切り替わるんだけど。
EOF 状態からだとファイルは切り替わるけどポーズされた状態で始まる。

GStreamer は EOS(End of Stream) という表現だったけど。
mpv では EOF(End of File) なんですね、同じ意味だしどうでもいいけど。

試しに途中でポーズして切り替えだと完全に同じだ。
つまり mpv の EOF は単にポーズされた状態。
もしポーズだったら解除する、というコードを追加すればいい。

mp.command('loadfile "file://'..directory..filename..'"')
-- これでもいい、true|false を yes|no の文字列で
--if mp.get_property('pause') == 'yes' then
if mp.get_property_bool('pause') then
    mp.set_property_bool('pause', false)
    -- これでもいい、true|false を yes|no の文字列で
    --mp.set_property('pause', 'no')
end
break

mpv の property アクセスは全部文字列。
UNIX 系を知っているなら macOS を含んでありがちだと解りますね。
コレを直接 Lua から使える BOOL 値で取り出せるのが _bool 付き関数。

ところで。
~/.config/mpv/scripts
にソースを放り込めば全部が起動時に読み込みされ適用されていくんだね。
これは機能ごとに分割したほうが色々と都合がいい。

そういえばアスペクト比変更もデフォルトでは割り付けされていない。
色々割り付けても筆者はキーを忘れるので Ctrl+2 でサイクルがいいな。
-1 を突っ込むとデフォルトになるので一周させるようにすれば完璧。
OSD(On Screen Document) で表示もあると良さげ。

-- ~/.config/mpv/scripts/mpv_aspect_rate.lua

aspect_num = 0
aspects = {'4:3', '16:9', '1:1'}

function on_change_aspectrate()
    aspect_num = aspect_num + 1
    if aspect_num > #aspects then
        aspect_num = 0
        mp.set_property('video-aspect', '-1')
        mp.osd_message('Aspect Rate @ Default')
    else
        mp.set_property('video-aspect', aspects[aspect_num])
        mp.osd_message('Aspect Rate @ '..aspects[aspect_num])
    end
end
mp.add_key_binding('Ctrl+2', 'aspectrate_func', on_change_aspectrate)

これを放り込んで、よし動いた。
グローバル変数はインスタンス毎に記憶してくれるようだ、助かる。
以降 mpv プログラミングはまとめたページを作るか。

いやープログラミングって面白いですね。
Lua は別に面白くないけど書いたら思った通りに動いてくれるのが面白い。
言語はただの道具で重要なのは完成品、実社会と同じ。

not =

Lua で凄い勘違いをしていた!
~= の演算子を bash の =~ と同じものだと思いこんでいた。
bash の != がコレなのね、何を今頃。

ちなみに。

#!/bin/sh

if [[ aaa.mp4 =~ \.(mov|mp4)$ ]]; then
    echo 動画ファイルです
fi

こんな感じで使います。
bash ですら複数拡張子のマッチを調べられるのに Lua ときたら…

いやまあ。
「Lua って != が無いのか、変わった言語だなぁ」
って思いこんで今まで not を使ってたよ。
それどころか。

#!/usr/bin/lua

if 1 ~= 2 then
    print('lua の ~= は bash の != と同じ意味です')
end

if not(nil) then
    print('nil は否です')
end

-- よく考えたら下記で良かった

--if not(extstr:match(ext) == nil) then
if extstr:match(ext) then

スゲェ無駄なコードを昨日まで書いていた。
もう少し勉強しなきゃとも思うけど。
mpv の拡張以外でこの言語を使うか疑問なんだよな。

Lua filename

前回 Lua スクリプトで mpv でのディレクトリ内巡回機能を作った。
まだ気に入っていない、拡張子 mp4 のファイルしか抜き出していない。
LUMIX で動画を撮影したものは mp4 だけど iPhone の動画は mov だ。

2022 年となった今ではこの二つだけでいいかもだけど他の形式も沢山ある。
Lua の正規表現を調べまくっているが複数の拡張子にマッチさせる手段が見つからない。
だからといって複数の拡張子全部の if 文を書くなんてまるで初心者だし。
後で簡単に書き加えなんかもできるようにしたいのでソレは絶対に避けたい。

しかたがない、別の方法でも考えよう。
配列に入れて if-in は、そんなの Python くらいしか出来ない。
Javascript の includes みたいなメソッドも無い、だめだ。

だったら文字列だ、ある文字列が長い文字列の中に含まれているかどうか。
おっとこれならできるみたいだぞ、よしまず拡張子を抜き出す手段を。

#!/usr/bin/lua

fullpath = '/home/testuser/動画/日本語 スペース.mp4'

dir = fullpath:match('.*/')
print(dir)
--> /home/testuser/動画/

file = fullpath:match('.*/(.*)')
print(file)
--> 日本語 スペース.mp4'

ext = fullpath:match('.*%.(.*)')
print(ext)
--> mp4

none = fullpath:match('.*%](.*)')
print(none)
--> nil

拡張子やファイル名を抜き出すにはコレでいいようだ。
どうでもいいけど Gedit では Lua でもシバンには色が付くんだね。

lua_gedit

Lua の # はコメントじゃないのに、Python の len() 相当です。

#!/usr/bin/lua

extstr = 'mp4,m4v,mov'

bool = extstr:match('mov')
print(bool)
--> mov

bool = extstr:match('wmv')
print(bool)
--> nil

とにかく存在しないなら nil になる、コレを利用しよう。

extstr = 'mp4,m4v,mov'

function on_nextfile()
    -- 略
    for filename in pfile:lines() do
        -- 拡張子を抜きだして小文字化して
        ext = filename:match('.*%.(.*)'):lower()
        -- 含まれていなければ nil になる
        if not(extstr:match(ext) == nil) then

ということで書き換え、上手くいったので前回の投稿も書き換えしました。