投稿者「sasakima-nao」のアーカイブ

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

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

mpv settings

Fedora 35 にしてから Celluloid がどうにも調子が悪い。
ブツブツとブラックアウトが入る、筆者自作の奴はもっと調子が悪いけど。

原因が解らない、mpv ライブラリが原因かな?
と思い確認のため素の mpv を入れてみた、dnf で普通に入れられる。
コチラはなんともない、てか mpv ってこんな感じだったっけ?
いや以前試しに使ってみたことはあるんだけど、もう何年も前だし。

今の筆者はコレで充分なんだけど、ということで乗り換えすることにした。
で、カスタムする方法を検索していたんですけど。

mpv – ArchWiki

日本語ページでは上記以外は情報が古過ぎで役に立たないな。
とにかく Linux でもハードウエア・アクセラレーションが使えると今頃知った。
あれ?と思ったけど筆者のその手の知識が古すぎるんだな。
それはそうと、Fedora では別途2つのライブラリを追加する必要がある。

Hardware decoding on Linux ? mpv-player/mpv Wiki ? GitHub

# Fedora dnf command
sudo dnf install libva-intel-driver
sudo dnf install libva-intel-hybrid-driver

Intel HD graphics の場合です。
AMD のグラフィックって元 ATI だし Linux への対応なんてお察しで。

準備はこれだけ、後は好みでカスタムしていくんですが拘りが二つ。
Esc はフルスクリーン解除、フルスクリーンでなければウインドウを閉じる。
ようするに Eye of GNOME の動作に合わせたい、筆者自作の奴もそうしていますし。
それとやはりディレクトリ内巡回機能が、プレイリスト化するのメンドイもん。
Ctrl+Down Ctrl+UP が標準では空いているのでココに割り付けしたい。

mpv.io

Lua や Javascript でなんとかなるっぽい。
こいつの js で ls する方法が解らないので Lua を久々に。
Lua の正規表現ってショボいな。
Javascript の /\.(mp4|m4v|mov)$/i を同様に定義できないんだが。
とりあえず *.mp4 だけでやってみた関数群。

ファイル名は何でもいい、場所は一行目に。
2022.01.12 複数の拡張子対応に書き換え、extstr 変数で指定

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

extstr = 'mp4,m4v,mov'

-- Esc 時にフルスクリーンなら解除、でなければ終了
function on_escape()
    if mp.get_property_bool('fullscreen') then
        mp.set_property('fullscreen', 'no')
    else
        mp.command('quit')
    end
end
mp.add_key_binding('Esc', 'esc_func', on_escape)

-- Ctrl+DOWN でディレクトリ内の次ファイルを再生
function on_nextfile()
    local ex = false
    local fn = mp.get_property('filename')
    local directory = mp.get_property('path'):match('.*/')
    local pfile = io.popen('ls  "'..directory..'"')
    for filename in pfile:lines() do
        ext = filename:match('.*%.(.*)'):lower()
        if not(extstr:match(ext) == nil) then
            if ex then
                mp.command('loadfile "file://'..directory..filename..'"')
                break
            end
            ex = filename == fn
        end
    end
    pfile:close()
end
mp.add_key_binding('Ctrl+DOWN', 'nextfile_func', on_nextfile)

-- Ctrl+UP でディレクトリ内の手前ファイルを再生
function on_prevfile()
    local prevfn = ''
    local fn = mp.get_property('filename')
    local directory = mp.get_property('path'):match('.*/')
    local pfile = io.popen('ls  "'..directory..'"')
    for filename in pfile:lines() do
        ext = filename:match('.*%.(.*)'):lower()
        if not(extstr:match(ext) == nil) then
            if filename == fn then
                if not(prevfn == '') then
                    mp.command('loadfile "file://'..directory..prevfn..'"')
                end
                break
            end
            prevfn = filename
        end
    end
    pfile:close()
end
mp.add_key_binding('Ctrl+UP', 'prevfile_func', on_prevfile)

ハードウエア・アクセラレーション

# ~/.config/mpv/mpv.conf

# ハードウエア・アクセラレーション
profile=gpu-hq
hwdec=vaapi
tscale=oversample
correct-pts=yes

# 下記を指定すると筆者の環境 (i5-6500) ではコマ落ちする。
#scale=ewa_lanczossharp
#cscale=ewa_lanczossharp
#video-sync=display-resample

# 再生終了で本体を終了しない
keep-open=yes

ショートカット、とにかく EoG に合わせる

# ~/.config/mpv/input.conf

# GtkApplication ではないので Ctrl+Q で全体終了はできないけど
Ctrl+q quit
Ctrl+w quit

# GNOME アプリのフルスクリーンは F11 です
F11 cycle fullscreen

# 小さい動画は Ctrl+1 で FullHD にリサイズ
Ctrl+1 set autofit 1920x1080

# 回転、マイナスにはできないようなので
Ctrl+r add video-rotate 90
Ctrl+Shift+r add video-rotate -90
Ctrl+e add video-rotate 270
Ctrl+Shift+e add video-rotate -270

オンスクリーンコントローラを小さく

# ~/.config/mpv/script-opts/osc.conf

# 動画に合わせた OSC リサイズを無効に
vidscale=no

# OSC のサイズを少し小さくしてシークバー領域を増やす
scalewindowed=0.75
scalefullscreen=0.75

で。

vaapi

vaapi が適用され動作も筆者の好みな環境ができあがりました。
もう筆者はプレイヤーを自作しなくていいな、そろそろ公開終了するか。
これからはスクリプトで拡張の時代ですよ。

いや、LUMIX らしく動画もやろうかなとも思ったんだけど。
手持ちじゃユラユラしちゃって、コレこそ三脚無しじゃ不可能でした。

Yurikamome

今日は天王川公園へ。

Tenno River | Paepoi Blog

冬になったのでユリカモメを見に行かなきゃ。

1

普通にいた、てかメッチャおる!
こんなことになっているとは思わなかった。

2

全然人を恐れないみたいね。
しかしコイツラとオオバンしかいない池も逆に目面しい。

パンくずを撒いている人がいるみたい。
もしかしてそれ目当てで毎年ココばかりに来ているのかな。

4

ハトがおこぼれ狙いでいるけど体格差がありますので。
てかこれじゃユリカモメはデッカいハトですね。

ここまで簡単に撮影できると逆に面白く無い、は贅沢か。
とにかく東海地方でユリカモメを見たいなら天王川公園へ。

pic 2022.01.08

今日の五条川。

1

セミ子、今日は五ヶ所で見つけたけど全部この子だったっぽい。

2

魚を咥えて飛んでいる所はやっぱり三脚無しじゃ無理だよな。

3

モズ子、そういえばモズって川で何を食っているんだろう?

4

モズ男、カワセミみたく川に飛び込んでいるわけじゃないし。

冬の定番ジョウビタキが今年は全然近寄らせてくれない。
去年はいつも向こうから近寄ってきたのになぁって。
後はコガモやカワラヒワやサギ類といつものメンバー。

いつも似たような鳥ばっかだなぁとか思ったりするけど。
電車を撮っている人達なんてもっと同じものばかりだよなって。
写真趣味なんてそんなもんだ、明日は遠征でもしようかな。

今回は SILKYPIX Developer Studio SEバージョンで現像。
LUMIX 限定のやつね、WQHD 環境になったのでどうかなと。
初めて使ってみたけど、なんかコレで十分な気がしてきた。
やっぱり Adobe だよと思ってまだ一度も使ったことが無かった。

いや、Lightroom で勉強したからなんとなく解るだけです。
最初からコレだと「ワカラン!」でブン投げていたかも。
Lightroom の UI は本当によくできているわい。
ああいうのが直感的に解るって本当の意味なんだろうな。

EIZO FrexScan EV2795

買ってしまった。
27 インチディスプレイ、EIZO FrexScan EV2795 を。

M1 Macbook Air の RAW 現像用外部出力に高性能ディスプレイが欲しかった。
Retina Display は凄い、この本体から安物の外部ディスプレイなんてありえない。
ということでメーカーは EIZO 一択、USB-C ケーブル一本でというのも魅力。
老眼に 4K は辛いので WQHD の EV2795 を、という感じで。

もちろんデスクトップの Fedora と供用で使う。
そう考えると Fedora のほうに問題が。

SKYLAKE on Fedora | Paepoi Blog

Fedora はコレを使い続けている、ハードには興味が無い。
ただ一度故障したのでマザーを AsRock B250 の奴に、電源を新品に。
その他 i5-6500 8GB 等はそのまま、又 5 年も使ったのか。

Intel HD Graphics 530 は 4K 60Hz 出力に未対応。
WQHD 60Hz はイケるみたいだけど、実際に繋いでみないとわからない。
ビデオカードという手もあるけど Linux では Intel しか使いたくない。

Ryzen だと Linux と相性が悪いなんて書くブログが多いけどさ、逆だよ。
Intel は Linux 関連にガシガシとコミットしているから問題が起こりにくいだけ。
何故最初からドライバーが入っているのかを考えれば解るだろ、と。

とにかく買ってきた、繋いでみよう。

fedora_c

WQHD イケた、i5-6500 のままでもまだまだ戦えるぞ。
そんなことより Mac と Fedora で全然色が違う問題が解決した!

manjyusyage | Paepoi Blog

Fedora は問題なくて古い Acer の TN ディスプレイだけが原因だったのか。
いや Macbook Air 2011 のは当時の Mac はこの程度だったってこと?まあいい。
ちょっと意外、画像を弄るならディスプレイはケチらないほうがいいと実感。

こんどは M1 Macbook Air と USB3 接続。
HDMI と USB3 の入力切り替えは手動のみなのね。
これなら両方に電源を入れたまま切り替えできるけど、筆者は自動認識がいいな。
Mac への充電もされる、拍子抜けするほど何事も起こらない。

Apple M1シリーズチップ搭載Macとモニターの互換性 | EIZO株式会社

階調飛び問題は解決していないみたいですけど。
USB-C で接続した筆者の環境では何もおかしく見えない、ド素人の感想です。

サブ画面は Windows 等と同じ右側に配置される、ミラーリングもできる。
マウスやキーボードをディスプレイに繋げば入力の切り替えで供用できる。
と書いていたけど Mac は認識するが Fedora は切り替えで無線マウスを見失った。
いや Mac はマウスいらないってか Fedora でこのトラックパッドを使いたいんだが。

でも Macbook に Fedora を入れると control と command を絶対に間違える問題が。
併用だと間違えないのよ何故か、両方で US 配列キーボードを使うのがコツです。
いやコレは今関係無かったね。

oriview

Olympus Workspace は編集画面を分離してこんなこともできるようだ。
これはいい、てかこのアプリはこうでもしないと狭くて使う気にならない。

lightroom

Lightroom は外部ディスプレイに移動するメニューが現われる。
うーん、広い編集画面が魅力だった Lightroom が微妙になったぞ。

さて Macbook Air を綺麗に掃除するか。
OM SYSTEM さん、解像するトコ違うんじゃないの。