TSファイルをm2v+wavにDemuxするバッチファイル

TSファイルをm2v+wavにDemuxする…というのはBonTsDemuxを使えばいいんだけど、っていうか使うんだけど、バッチファイルにする意味は一応ある。

アプリケーションへのドラッグアンドドロップが使える時と使えない時があって死ぬほど面倒くさい(起動するたびに不安定に変化する)。BonTsDemuxもそうだし、tssplitterでもそうだし、aviutlでもそう。その場合でもExplorerの上ではきちんと動作する。このパソコンのシステムに何かしら不都合があるんじゃないかと思うんだけど、それを追求するのも、面倒だなぁと。

という訳で、ドラッグアンドドロップしたファイルごとにBonTsDemuxを呼び出すようなバッチを作れば良いねという判断になる。

@echo OFF

:LOOP
if "%~dpnx1" == "" goto END
echo Input: %~dpnx1
C:\dtv\BonTsDemux\BonTsDemuxC.exe -i "%~dpnx1"
if %ERRORLEVEL% == 0 echo completed.
if %ERRORLEVEL% == 1 echo error occurred.
echo;
shift
goto LOOP

:END
echo all jobs were completed.
timeout /t -1

いつもいつもWindows batはクソわかりにくいなって思って逃げてたからよくわかんなかったので、死ぬほどてきとうに書いた。

GUI版を使う必要もねーかなって感じなのでCUI版のBonTsDemuxC.exeを使った。

このままaucとか使って自動でaviutlに突っ込んで行くのもいいかなと思ったけれど、引数をshiftしていってるので、処理を戻せない(shiftは引数を右から左に移動させるけど、左から右に移動させる手は無いんだったはず)あたりがちょっと面倒かなぁといった感じ。引数を使わず自分で処理リストを作ればいいんだけど、それはそれでひたすらに面倒な気がして。

 

ひとまず今日のところはこんな感じで。

標準入出力からクリップボードを使う

Macではpbcopyとかpbpasteがあるらしいんだけど、Macじゃないので、無い。

 

xselというコマンドがあって、これがクリップボードを取り扱える。xselが入ってなかったので取り敢えずインストールしておいてから。

$ pacman -S xsel
$ echo "test" | xsel -i -b
$ xsel -o -b
test

こんな感じ。オプションは、-iが入力である事を示していて(-oは出力)、-bがクリップボードでの処理をするって感じ。

オプション毎度付けるの面倒なのでaliasを登録しておく。Macに習ってコマンド名はpbcopyとpbpasteにしてみた。Mac持ってないけど。

alias pbcopy='xsel -i -b'
alias pbpaste='xsel -o -b'

上記は $ echo .bashrc | grep xsel | pbcopy みたいにして拾ってきた。

今までTerminalからクリップボードへのコピーは、マウスで選択→右クリック→コピーってしてたけど(Shift+Ctrl+Cっていうショートカットキーあるけどいつも忘れてた)、範囲選択しないといけないのが面倒なところ、pipeでそのまま渡せばいいので楽ちんという感じ。

VPCS14AFJに入れたArchLinuxでNFCを使う

https://www.sony.jp/support/vaio/products/vpc/vpcs14afj.html

SONYだった時代のVAIOである。これにはNFCのリーダ/ライタがついているので、これをなんとか使って遊べないかなぁといじってみた。

 

「ついている」というのは、埋め込まれているという事で、きちんと認識しているのかどうか確認。

$ lsusb | grep FeliCa
Bus 001 Device 005: ID 054c:02e1 Sony Corp. FeliCa S330 [PaSoRi]

認識しているようだ。さて、使えるか?

それらしいライブラリ(libnfc)を発見するも、使えたり使えなかったりして不安定。S330が搭載されているのにS360として認識したり、使い物にならない。なんとか原因究明出来ないかと四苦八苦したが断念。

 

別のライブラリを使う。libpafe。毎度の事だがaur死ぬほどお世話になってる、ありがとうございます。

yaourt -S libpafe したら最後に

To use PaSoRi
# udevadm control –reload-rules
Make ‘plugdev’ group and add your user

と言われたので、やっておく。

$ sudo udevadm control --reload-rules
$ sudo groupadd plugdev
$ sudo usermod -G plugdev tea

さて、テスト。

$ pasori_test
PaSoRi (RC-S330)
firmware version 1.30

きちんと認識しているようだし、firmware version拾えてるからPaSoRi自体は使えているっぽい。さて本当にFeliCaを読めるかどうかチェック。

$ felica_dump
# lpdump : Tue Nov 10 11:33:52 2015
# --- IDm info (FeliCa) ---
# Manufacture Date = 2013/2/15
〜以下略〜

以下データが連なる。データの中身についてはこれから調査する予定。この時使用したのは学生証だが、Suicaを置いた時には何も出力されなかった。これは不明。

ネットで拾ったSuica残高を表示するスクリプトを実行してみる。https://gist.github.com/Akkiesoft/6450764

rubyで書かれているのでlibpafe-rubyをインストールしておくのも忘れずに。aur何でも揃ってるなといった感想(こなみ)

$ ruby iccard-check.rb
1226

Suica普通に取り扱えてるみたいだし、felica_dumpに何かしらのバグがあったりするんだろうか。

 

よし、C++からlibpafe触って見るぞ。ネットで拾ったコードを元に書いてみる(ほぼパクリ)

#include <iostream>
#include <string>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>

#include <iomanip>

#define hexformat(fill,wd) hex<<setfill(fill)<<setw(wd)

extern "C" {
#include <libpafe/libpafe.h>
#include <libpafe/pasori_command.h>
#include <libpafe/felica_command.h>
}

int main(){
using namespace std;
 pasori* p;

 if((p = pasori_open()) != NULL){
 felica* f;
 pasori_init(p);

 if((f = felica_polling(p, FELICA_POLLING_EDY, 0, 1)) != NULL) {
 uint8_t idm[16];

 felica_get_idm(f, idm);
 for(int n=0; n<7; n++){
 cout<<hexformat('0',2)<<unsigned(idm[n])<<":";
 }
 cout<<hexformat('0',2)<<unsigned(idm[7])<<endl;

 free(f);
 }
 }
 pasori_close(p);
 return 0;
}

これをコンパイルして実行してみる。

$ g++ ./felica.cpp -o ./felica /usr/lib/libpafe.so
$ ./felica
xx:xx:xx:xx:xx:xx:xx:xx

うまくいったっぽい。

 

あとはlibpafeのREADMEに書いてある事見ながら色々遊んでみようと思っているところ。FeliCaなカードは安く買えるっぽいので何かしら遊んでみよう。

 

普通に買うとRS-S330ってクソ高いのな、今。

ArchLinuxでLyra2REv2マイニング(CPU)

実際のところInstall Battleが面倒くさくてAntergos使っているので、ArchLinuxそのままではないんだけど。

 

https://blog.visvirial.com/articles/499#CPU

こちらを参考に。参考っていうかそのままなんだけど~

 

必要なパッケージを入れようってあるけど、実際どんな必要なパッケージがあるのかしらと思っても、ぶっちゃけわかんないので、取り敢えずビルドしたら何かしらエラー出るだろ、それに対処すればいいだろ…

と思って ./build.sh したら何のエラーもなくそのまま通ってしまった。

 

後はjsonで設定ファイル作って、それを食わせてcpuminerを実行するだけ。

 

何の問題も無かったし普通に動いた。何一つ有用な情報無し!!

 

 

 

追記:

文字見えねーよ!!!!!!

文字見えねーよ!!!!!!

pacmanで「無効または破損したパッケージ (PGP 鍵)」

久々に # pacman -Syuaした時に、

ファイル /path/to/pkg/hoge.fuga.tar.xz は破損しています (無効または破損したパッケージ (PGP 鍵))。

で軒並みパッケージが弾かれた。PGP鍵とあるし、だいぶ前からいじってなかったので、取り敢えず鍵を更新しましょう。

# pacman-key –refresh-keys

結構待っても(20分くらい?)かけらも進んでいる様子が無かった上に通信している様子も無いので、

# pacman-key –init
# pacman-key –refresh-keys

と、先にinitしてからにしたら普通に終わりました。

そのまま # pacman -Syua したらこれも普通に通った。問題無いですね。(たぶん)

Poderosaでssh接続出来なかった

別に全部の環境で接続出来なかった訳じゃなくて、Ubuntu使って家庭内鯖にしてるとこは接続できたんだけど、NASにしてるArchLinuxに接続出来なかった。

 

NASにしてるとは言え、何故かモニタもキーボードも付けてたので今までssh使ってなかったけれど、久しく触っていなかったらキーボードにほこりがだいぶ積もってしまっていたので、じゃあsshするか…と思い、有効にしてみた。宅内環境だし別に外からアクセスする必要もないし、取り敢えずパスワードでおkおkと思ったので以下な感じ。

$ systemctl start sshd
$ systemctl enable sshd

さて、意気揚々とメインマシンのWindowsからPoderosaでアクセスしようとすると……

 

何故か知らんが弾かれた

何故か知らんが弾かれた

 

取り敢えずエラーメッセージでぐぐってると以下のページに遭遇。

http://qiita.com/tukiyo3/items/a9b955f0fad03f6279d2

コメント欄でttdoda氏やtukiyo3氏がほむほむとしている側でclerk氏が「4.3.14bだと対応」と発言。どうやらPoderosaを更新すれば良いっぽい??

 

本当にバージョンでなんとかなるのか不安だったため今使っているPoderosaのバージョンを調べた所、4.1.0だった。これがいつリリースされたものなのかいまいちわからないけれど、4.3.0bが2010年末とかなので、やっぱりそれなりに古いんだなぁ。

これを入れた時はインストーラでいったっぽい(Program Files(x86)に入ってる)けど、今はただのzipアーカイブしか置いてない。好きなとこに置けて便利だけどね。

 

 

おまけ。

http://poderosa.sourceforge.net/index.html.ja

の最後のところにja.poderosa.orgへのリンクがあって、

(あまり更新されてない…)

とコメントがあるけど、

This domain may be for sale!

This domain may be for sale!

 

悲しいのう悲しいのう……

aviutlでバッチ出力中にバッチを追加するとどうなる?

バッチはaviutl本体と同じところに、batch0.aup, batch1.aup, batch2.aup, …と言った具合に順繰りに保存されていき、バッチ出力をするときにはこのaupを読み取って出力されていく。

正常に出力が完了したaupファイルは削除するというオプションがデフォルトでONになっているので、batch0.aupから消されていく。

さて、それではバッチ出力中に追加するとどうなるのか?

 

結論から言うと、特に意識する必要は無く、問題無い。(たぶん)

 

想像した懸念は、

・0~2を作る

・出力を始める

・0が完了する

・0が削除される

・1の処理が始まる

ここで追加すると、新たなaupファイルは3になるのか?それとも0になるのか?aviutlが認識しているバッチ出力リストは更新されるのか?0になっていた場合出力リストの頭に追加されるのか?

 

実験してみた所、

・追加したaupファイルは0として保存された

・1の処理が完了し2の処理が始まった時、aviutlのバッチ出力リストは0を認識

・0はバッチ出力リストの最後(2の後)に追加された

といった具合。

 

aviutlのバッチ出力リストは、てっきりファイル名から順番を作っているのかと思っていたけど、違うっぽい。作成日時とかかな。(未確認)

 

結局(最初に言ったけど)、特に意識しなくても、特に心配しなくても、大丈夫という事だ。うんうん。

 

 

aviutlを使ったエンコ鯖、データ突っ込んでaupは別環境で作ってとにかく放り込めばそれで後はひたすら出力してくれる感じに作れるのでは(aupの中でのファイルパスの取り扱いがよくわからないからそこをもうちょっと調べればデータ突っ込むのも不要にならないかな)。

どうせh265のトランスコードはめちゃくちゃ時間かかるし、深夜帯のアニメはほぼ全て録画している訳だから常に(ロスタイムなしに)処理させるつー事も可能なのでは…と妄想が広がる。

ただ、以前1クール分くらい一気にバッチ出力した時には、途中でffmpegがエラー落ちして処理が止まってしまっていたので、そういう所をなんとかできないかなぁ、と…

動画編集は大した事してなくて、aviutlを使っているのは、基本的には映像を見ながらCMの場所を探しているだけ。フレーム単位でカット場所が決められればffmpegでやれば色々良いのに、とは思う。Windowsである必要がなくなるし。

 

デスクトップPC、そろそろ新調したいなぁと思っているけれど、今使っているのをエンコ鯖にしちゃおっかなとか思っているのは前々からなので、こういうあたりから色々捗るかなーと(頭の中だけ)

Qweenを触ってみる

TweenというクライアントのQtによる実装がある。

Qween | NOSE Takafumi

TweenはWindows用のクライアントだが、Qtによる実装という事で、勿論Linux上でも使えるのではないかね!?と思い、4年ほど前に多少触ったのだけれど、当時は知識も無くまともに使えなかった。

 

ふと思い出して、もう一度触ってみよう、と思って先日調べてみたら、上記の最後の投稿は2010年の3月、何度も案内されているURLであるhttp://qween.tnose.net/もアクセスしても500エラーが返ってくる。

ところが、githubにはそのまま残していてくれていたのである。最終コミットは2010年5月22日と、ブログより少し新しいが、5年前である事に変わりはない。

 

  取り敢えずgit cloneしてきて、コンパイルして使ってみようと思ったけれど、通らない。それもそのはず、Qt4向けに書かれたコードである。我が家の環境はQt5…Qt4向けコードがそのまま通るはずない。 Qt4な開発環境を作っても良かったのだけど、遊びで勉強の一貫で5仕様に書き換えるのもいいかなと思って、弄ってみる事にした。

今もそうだけど、おなかすいた。ぴざたべたい。

1日では終わらない。 だが、数日の後に…

通った。随分日数がかかっているが、あまり作業出来てない日が多かったため #言い訳

 

ブログ記事から察するに、oAuthじゃなくてxAuthしか実装してないみたいだけど、Documentation | Twitter Developersの目次にはoAuthしか無い…xAuth廃止は確かしてなかった(BASIC認証は廃止だったよね)気がするけど、公式はoAuth使って欲しいんだろうなぁ…という事で、oAuthを自力で実装しなきゃダメかなーと。

それから、当時はTwitter APIは1.0だったろうけど(だから1.0に合わせて作られてるだろうけど)、2013年の6月12日未明に残念ながら廃止されちゃったのよね。今は1.1が動いているので、それに合わせて、諸々を書き換えないといけないだろうなぁ、と。

 

当時とは違う部分も他にも多くある(例えばTweetを引用出来るようになったとか)ので、そう簡単には行かないだろうけれど。

 

気長〜にやってこうと思います。うむうむ。

録画映像たちの処理についてぼやき

CMカットのためだけにaviutl呼んでffmpegに出力まわすの無駄な気がしてきた、切ない #切ないっつーかやる気が出ない感じ

音声の切れ目はあまり意識しなくてもなんとかなる事が多いので映像(画像)ベースで切れ目を判断してるけど、局ロゴとかで自動判別やれそう…だけれど出来ない事が常なんですよねぇ(やれるけど精度がよくない)(提供を見つけられなかったりする)(それを手作業でなんとか修正するなら最初から手作業にする)

出力にx265guiexとか使えばいい感はあるけど、aviutlのプラグインの設置方法がいまいちいつも覚えられない。ffmpegを使うなら、aviutl→ffmpegってできるような環境さえ作れれば、あとはアップデートされるたびにffmpegのバイナリだけ置き換えればそれで十分だし、もうそれでよくね…って思うでしょ、そりゃ(笑)

 

結局現状は手作業で頑張るしか無いんだけど…頑張るしか無いんだ…頑張るしか……

 

がんばろ。

Linuxでクロスコンパイル 〜その1〜

Linuxの上でWindows向けバイナリを吐き出してみるテスト

詳しいことは詳細が決まってから書くけれど、学校で「コンパイルサーバが欲しい」という話を持ちかけられて、そういえばやった事がないのでちょっくらやってみようって感じ。

とにかく取り敢えずで、それらしい感じになれば今回はそれでオッケーという事で。

 

ArchLinuxの上でWindows向けを吐くぞ!!ゲロロロ

 

何はともあれインストール

[tea@teaarch ~]$ yaourt -S mingw-w64-gcc
[sudo] tea のパスワード:
依存関係を解決しています…
衝突するパッケージがないか確認しています…

パッケージ (5) mingw-w64-binutils-2.25.1-1 mingw-w64-crt-4.0.4-1
mingw-w64-headers-4.0.4-1 mingw-w64-winpthreads-4.0.4-1
mingw-w64-gcc-5.2.0-1

合計ダウンロード容量: 136.10 MiB
合計インストール容量: 780.51 MiB

〜以下略

 

恒例のHello world.

$ cat hello.cpp

#include <iostream>

int main(){
std::cout <<“hello ” <<std::endl;
return 0;
}

 

さてコンパイル

$ g++ -o hello.out hello.cpp

$ x86_64-w64-mingw32-g++ -o hello.exe hello.cpp -static

$ ls

hello.cpp

hello.exe

hello.out

 

実行します。まずは普通のLinux用バイナリ

$ ./hello.out

hello

当然想定通りの結果。よろしい。

次はクロスコンパイルしたWindows向けバイナリ

$ ./hello.exe

bash: ./test.exe: cannot execute binary file: 実行形式エラー

実行できない。良さそう

Windowsに移動させるのがめんどかったからwineで実行してみる

$ wine ./hello.exe

fixme:service:scmdatabase_autostart_services Auto-start service L”Mobizen plugin” failed to start: 2
hello
fixme:ole:RemUnknown_QueryInterface No interface for iid {00000019-0000-0000-c000-000000000046}

なんかものっそいエラー吐かれたけど一応「hello」は出たし良いとするか(((

MobizenってこのMobizenかな??

 

クロスコンパイル自体はそりゃ出来るでしょうねって感じでした。

問題はこれにどういうフロントエンドを付けるのかっていうとこなんだけど、というかそもそも鯖にLinuxを使うのかどうかとか、色々決まってない部分があるし、加えて言うなら今回はCっぽい空気だったけど、求められているのはFORTRANなのであった……

 

 

ちなみに

上ではしれっと-static付けているけど、ダイナミックリンクでやるとlibstdc++-6.dllあたりが必要そうなエラーを吐いて実行できない。適切に用意してあげれば実行出来るんだろうけどね。

データの大きさを比べると、

  • test.cpp  84
  • test.exe  11206980
  • test.out  9192
  • test_d.exe 134968

みたいな感じ。スタティックリンクだと11MBくらいになる。(ただのHelloWorldである)