2021年6月25日金曜日

フォルダー内の動画ファイルをすべて H.265 で再エンコードする

常時撮影型のドライブレコーダーで旅の記録を残している方もいらっしゃるかと思いますが、Google Photo の無料枠が廃止されたこともあって、保存に頭を悩ませている方もいらっしゃるかと思います。

最近のドラレコは、HD はもはや当たり前、WQHD や 4K のものもどんどん増えていて、録画された動画のクオリティが向上する一方で、当然ながらファイルサイズもどんどん大きくなっています。この動画を、クオリティをそれほど下げずにサイズを縮小しよう……というのがこの記事の狙いです。

必要なもの

ffmpeg(パスの通ったところに配置してください。コマンド プロンプトの初期ディレクトリである %USERPROFILE% にコピーする形でも良いかと思います)
Windows 10

手順

  1. ドライブレコーダーが作成したファイルを C:\Drive_Recorder_Work\Source\ にコピーする
  2. 以下のバッチファイルを実行する
バッチファイルの実行が終了すると、C:\Drive_Recorder_Work\Output\ に再エンコードした動画ファイルが作成されている……筈です。

バッチファイル

※ 表示環境によっては、予期しない位置で改行されてしまう場合があります。
c:
mkdir "C:\Drive_Recorder_Work\" > nul 2>&1
mkdir "C:\Drive_Recorder_Work\Source\" > nul 2>&1
mkdir "C:\Drive_Recorder_Work\Output\" > nul 2>&1

cd "C:\Drive_Recorder_Work\Source"
for %%i in (*) do (
        ffmpeg -copyts -i "C:\Drive_Recorder_Work\Source\%%i" -c:v libx265 -r 18 "C:\Drive_Recorder_Work\Output\%%i" -n
)

ただ、これだとファイルの「作成日時」と「更新日時」が ffmpeg で再エンコードした日付になってしまいます。実害はないのですが、なんとなく元の日時に合わせたい……という場合は、以下の PowerShell スクリプトを実行すると良いです(あ、たぶん動くと思いますが、ものすごく汚いスクリプトなので、その点はご容赦ください)。

PowerShell スクリプト(change_timestamp.ps1)

※ 表示環境によっては、予期しない位置で改行されてしまう場合があります。
$location = Get-Location

$SourcePath = 'C:\Drive_Recorder_Work\Source'
$TargetPath = 'C:\Drive_Recorder_Work\Output'

Set-Location $SourcePath
$filelist = Get-ChildItem -Recurse | Select FullName, CreationTime, LastWriteTime

foreach( $item in $filelist )
        $FileName = $Item.FullName
        $FileName = $FileName.Replace( $SourcePath, $TargetPath )

        $CreationTime = $Item.CreationTime
        $LastWriteTime = $Item.LastWriteTime

        Write-Output $FileName

        Set-ItemProperty "$FileName" -name CreationTime -value $CreationTime
        Set-ItemProperty "$FileName" -name LastWriteTime -value $LastWriteTime
}

Set-Location $location

先程のバッチファイルの最後に、以下の行を追加しても良いかもですね。
※ 表示環境によっては、予期しない位置で改行されてしまう場合があります。
powershell -NoProfile -ExecutionPolicy Unrestricted C:\Users\username\change_timestamp.ps1


Blogger の小枝

2019年12月22日日曜日

0 バイトのファイルを削除する

もろもろのファイル処理をバッチファイルで行っていると、稀に処理に失敗して 0 バイトのファイルが残ることがあるのですが、0 バイトのファイルだけを綺麗に除去するのは実は結構面倒くさい……ような気がします。

以前、for 文を使ってこんなコマンドを書いたことがありました。

for /r C:\hoge %%f in (*.jpg) do if %%~zf==0 del %%f

これでも多分動くと思うのですが、なにしろ for 文は謎作法が多く(個人の感想です)、いざと言う時にすぐにこの書式を思い出せないのが難点です。

ただ、もっと簡単な方法があったことに今頃気づきました。

robocopy C:\hoge\ C:\hoge_backup\ /S /MAX:1 /DCOPY:DAT /MOVE

MAX:1 オプションを指定することで、「1 バイト以下」のファイルが対象となり、MOVE オプションを指定することで「C:\hoge_backup」にファイルが移動されます(結果的に C:\hoge 配下のファイルは削除されます)。

これだったら、おなじみの robocopy コマンド一発で行ける上に、万一の事故の際にもファイルが移動されるだけなので安心です。

Blogger の小枝

2018年12月23日日曜日

Windows 10 の Google Chrome で https サイトの表示が遅い

OS を Windows 10 にしたところ、Chrome で SSL のサイトを開く際にめちゃくちゃ遅くなる(下手をすればタイムアウトする)という問題があったのですが、レジストリで Cryptographic Services (CryptSvc) 関連のキーを再作成することで改善できます。

手順はこんな感じです。

  1. Chrome を終了する(見た目上終了していても常駐している場合があります。タスクトレイに Chrome のアイコンが無いことを確認して、あとタスク マネージャーでも Chrome.exe がいないことを確認しましょう)
  2. [ ファイル名を指定して実行(R) ] で services.msc を起動する(管理者のパスワードが必要かも)
  3. Cryptographic Services を停止する
  4. [ ファイル名を指定して実行(R) ] で regedit.exe を起動する(管理者のパスワードが必要かも)
  5. HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root を選択する
  6. (オプション)[ ファイル(F) ] → [ エクスポート(E) ] でレジストリをエクスポートする(いざと言うとき、レジストリに再インポートできます)
  7. HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root 配下にある ProtectedRoots を右クリックして [ アクセス許可(P)... ] を選択する
  8. 「ProtectedRoots のアクセス許可」が開くので、[ 詳細設定(V) ] をクリックする
  9. 所有者が「SYSTEM」になっている場合があるので、[ 変更(C) ] をクリックする
  10. 「選択するオブジェクト名を入力してください」に自身の Windows ユーザー名を入力して [ 名前の確認(C) ] をクリックする
  11. 入力したユーザー名が確認された(アンダーラインが表示された)のを確認して [ OK ] をクリックする
  12. 「ProtectedRoots のセキュリティの詳細設定」に戻るので、[ 継承の有効化(I) ] をクリックする(普通は自身の Windows ユーザーが HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root のフル コントロール権限を持っているので、その権限を継承する設定)
  13. レジストリ エディタに戻り、HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root を右クリックして [ 削除(D) ] を選択する(Root 配下のレジストリの内容は CryptSvc を再起動したタイミングで自動的に再生成されます)
  14. OS を再起動する

「なんでこんなに時間がかかるんだろう……変な拡張機能でも入れたかな」と悩んでいたのですが、これでスッキリです。

Blogger の小枝

2018年6月18日月曜日

USB メモリに保存された楽曲を全て網羅するプレイリスト(m3u8)を作成する

MINI (F56) には CD プレーヤーが無いため、USB メモリに保存した音楽を聞くのが一般的ですが、標準状態では特定の曲を検索するか、アルバム、またはアーティストを選んで再生する必要があります。

自分の場合は、保存された楽曲をアーティストごとにまとめて、ずっと順番に再生するという聞き方をしているので、一つのアルバムをリピートされてしまうとちょっと困ってしまいます。

どうやら、全ての曲を順番に再生するためには、プレイリストを作成する必要があるらしいのですが、プレイリストを作成するフリーソフトでしっくり来るものが見つからなかったので、ささっと Perl スクリプトを作成することにしました。

#!/usr/bin/perl
open( INFILE, "F:/dir.txt" );
while( <INFILE> ) {
if( $_ =~ /F:\\(.*)\\(.*) のディレクトリ/ ) {
$_ =~ /F:\\(.*)\\(.*) のディレクトリ/;
$Artist = $1;
$Album = $2;
$key = "$Artist\/$Album";
push ( @Album, $key );
undef $Index;
}
if( $_ =~ /.*\.m4[ab]{1}/ ) {
$_ = /[0-9]{4}\/[0-9]{2}\/[0-9]{2}  [0-9]{2}:[0-9]{2}[ ]{1,}[0-9\,]{1,} (.*\.m4[ab]{1})$/;
$Song = $1;
$Index++;
$Song{$key}{$Index} = $Song;
$NumOfIndex{$key} = $Index;
}
}
close( INFILE );
my @order = sort { $a cmp $b } @Album;
foreach my $i ( $[ .. $#order ) {
$Album = $order[$i];
foreach my $j ( 1 .. $NumOfIndex{$Album} ) {
print "$Album\/$Song{$Album}{$j}\n";
}
}

使い方は次の通りです。

  1. USB メモリを PC に接続する
  2. コマンド プロンプトを起動し、USB メモリのドライブ(F: を想定)に移動する
  3. dir /s > F:\dir.txt [Enter]
  4. 上記の Perl スクリプトを保存したディレクトリに移動し、スクリプトを実行する。例)mkplaylist.pl > F:\playlist.m3u8 [Enter]
  5. USB メモリに作成された playlist.m3u8 をメモ帳で開き、UTF-8 で上書き保存する(だっさ……)



Blogger の小枝

2017年11月24日金曜日

ダイナースクラブのカード切り替え手続きが変更に

ふと Diners Club の Web を眺めていたところ、「カード切替の際の注意事項について」というページが 10/2 付で更新されていることに気が付きました。

今までの切替方法

これまでは、たとえば「ANA ダイナースカード」ホルダーが「ダイナースカード」(プロパー)に変更を希望する場合、クラブ・オンラインでの「オンラインコンシェルジュ/お申込みフォーム」から申し込むことが可能でした。このフォームから申し込んだ場合、

  • 年会費の差額は月割り精算
  • 入会年・入会月はそのまま
  • ポイントは移行されない

という優遇措置?が適用されていました。一番気になる「審査」については、おそらく CIC をチェックする程度で、あとは事実上フリーパスだったのでは、と思われるフシがありました。

これからの切替方法

ところが、「カード切替の際の注意事項について」によると、これまでの「お申込みフォーム」からの変更はできなくなったようで、新たに入会申請を行う(審査もバッチリ行われる?)しか方法が無くなったように読めます。また入会年・入会月の引き継ぎも行われないとのことで、これはちょっと寂しい感じがしますね。

実は、数ヶ月前に「お申込みフォーム」を使って ANA ダイナースからダイナースに切り替えたばかりだったので、「早めに切り替えておいてよかった……」というのが正直な気持ちです。

マイルはどうなる?

なお、ANA ダイナースからプロパーのダイナースに切り替えた場合、自動的に ANA マイレージクラブも退会することになります(参考ページ)。これは後で知って「うわぁお」と思ったのですが、ある条件を満たせばマイルを引き継ぐことができます。

ANA ダイナースを取得した際に同時に「ANA マイレージクラブ」に入会した方は、残念ながらマイルを引き継ぐのは難しいかもしれませんが、そうでない場合、つまり ANA ダイナースを取得する前から ANA マイレージクラブの会員だった場合、取得前の会員番号にマイルが引き継がれることになります。

ANA ダイナースを取得した際に、ANA マイレージクラブの番号も変わったのをご記憶でしょうか? 実は、取得前に使用していた ANA マイレージクラブの会員番号もずっと有効だったとのこと。ANA ダイナース退会後は以前に使用していた ANA マイレージクラブの会員証を再び使えば良いとのことでした。

実は昨年に JAL Card Suica も退会したんですが、JAL Mileage Club からはわざわざ新しいカードを送ってくれたので、ANA ダイナースもてっきり同じだと思っていたんですよね。ANA マイレージクラブが自動退会になるというのはちょっと想定外でした。事前にちゃんと調べておかないといけませんね……(汗)。

Blogger の小枝

2017年11月20日月曜日

MINI Cooper D に DCT 導入、Cooper SD に 8AT 導入(国内では?)

来年 3 月に生産が開始されると見込まれている、MINI F56 (3 ドア) の LCI(Life Cycle Impulse)に先立ち、今月(2017 年 11 月)から MINI Cooper D と Cooper SD の 6AT が、7DCT と 8AT に変更されることが BMW から公式発表されました。

日本国内においては、排気量が拡大された Mini ONE が 7DCT に変更されましたが、Cooper D については 6AT のままだったようです。Cooper と Cooper S については 3 月以降の生産分から 7DCT に変更されるようですが、Cooper D については、3 月以降の生産分についても 6AT のままのようです。(2018/2/24 追記) 

ギアの枚数が増えると何がどう変わるのだろう……ということで、ギアレシオから速度を算出してみることにしました。205/45 R17 のタイヤを履かせたと仮定して、タイヤの直径は 616.3 mm で計算しています。

6AT

まず、これまでの 6AT のギアレシオですが、次のようになっていました。

1000 rpm1500 rpm2000 rpm
14.4598.05 km/h12.08 km/h16.10 km/h
22.50814.32 km/h21.47 km/h28.63 km/h
31.55523.09 km/h34.63 km/h46.18 km/h
41.14231.44 km/h47.16 km/h62.88 km/h
50.85142.19 km/h63.28 km/h84.38 km/h
60.67253.43 km/h80.14 km/h106.85 km/h
Final3.234

実際にはトルコンで多少なりともロスがある筈なので、ぴったりこの速度にはなりません。理論上の最高速だとご理解ください。100 km/h で巡航する場合は、6 速で 1880 rpm となります。さすが 6AT、悪くない数字ですね。

7DCT

続いて、今回 Cooper D に搭載される DCT です。プレスリリースのギア比は変な数字になっていたのですが、Final を乗じた数字に見えるので、一旦その想定で計算しています。

1000 rpm1500 rpm2000 rpm
116.3857.09 km/h10.63 km/h14.17 km/h
29.66412.01 km/h18.02 km/h24.03 km/h
36.18118.79 km/h28.18 km/h37.57 km/h
44.32726.83 km/h40.25 km/h53.67 km/h
53.34934.67 km/h52.01 km/h69.34 km/h
62.66343.60 km/h65.40 km/h87.20 km/h
72.15853.80 km/h80.71 km/h107.61 km/h
Final3.357

100 km/h 巡航の場合、7 速で 1860 rpm となります。つまり、ほとんど 6AT と違いがないということになりますね。6AT における 1 速から 6 速のレンジにもう 1 速ねじ込んだ、という感じのレシオに見えます。

DCT はトルコンと比べて伝送ロスが少ないとされていて、ギアも 1 速増えているので、燃費が悪くなる要因は見当たらないのですが、ところが公式の 100 km 換算燃費だと、以前の 6AT が 3.7-3.8 リットルだったのに対し、今回の 7DCT は 3.8-3.9 リットルと、ごく僅かに悪化しています。スペック表を良く眺めてみると、重量が 35 kg ほど増えているので、それが原因かもしれませんが……。

8AT

最後に、Cooper SD に搭載される 8AT を見てみましょう。

1000 rpm1500 rpm2000 rpm
15.5197.89 km/h11.84 km/h15.78 km/h
23.18413.68 km/h20.52 km/h27.36 km/h
32.05021.25 km/h31.87 km/h42.49 km/h
41.49229.19 km/h43.79 km/h58.38 km/h
51.23535.27 km/h52.90 km/h70.53 km/h
61.00043.55 km/h65.33 km/h87.10 km/h
70.80154.37 km/h81.56 km/h108.75 km/h
80.67364.71 km/h97.07 km/h129.43 km/h
Final2.666

なんと、1550 rpm で 100 km/h 巡航できる……という計算になります。6AT と比較して 7DCT はクロスレシオに振ったのに対して、8AT は 7DCT と比較して純粋に 8 速を追加したレシオになっています。この追加された 8 速が高速でクルーズする際に効きそうな感じでしょうか。

正直、この 8 速のためだけに Cooper SD が欲しくなると言っても過言ではありません。100 km 換算の燃費でも 4.1-4.2 リットルですから、差もごく僅かなんですよね。


This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.

Blogger の小枝

2017年11月11日土曜日

MINI (F56) のマイナーチェンジ

もはや全然 Blogger とは関係ない話ですが……(汗)


MINI (F56) のマイナーチェンジについて

独 BMW が展開するブランド "MINI" の主力製品である 3-door Hatch (F56) について、2018 年にマイナーチェンジ(LCI: Life Cycle Impluse)が予定されているようです(2018 年 3 月に生産を開始するのではとのこと。一部で 2018/3/18 という話が出ていますが、海外サイトの "3/18" という表記を誤読している可能性があるかと)。
(2018/3/3 追記)MINI のオックスフォード工場でマイナーチェンジ車の生産を開始した、との tweet を見かけました。やはり 2018/3/1 から生産開始だったようです。

個人的には、

  • カーナビのタッチスクリーン化+Apple CarPlay の導入

が最大のトピックだったりするのですが、世間的には

  • DCT(Dual Clutch Transmission)の導入

が大きな話題のようです。確かに既存の AT を全とっかえするのですから、話題になるのも当然ではありますが……。

しかも、この DCT の導入については、大方の予想の斜め上を行く形で、ハイパフォーマンスモデルの John Cooper Works と Cooper SD のみ対象から外されるとのこと(Motoring File のリーク記事による)。DCT は主にスーパーカーや高級志向のスポーツカーを中心に導入が進んでいただけに、この方針は驚きを持って迎えられたようです。
(2018/2/24 追記)日本市場では、Cooper D にも DCT は導入されず、6AT のままになるようです。また Cooper と Cooper D も「ナビゲーション パッケージ」が標準装備となる一方で、CarPlay については「追加オプション」となるようです。

MINI F56 に搭載される DCT についての推測

Motoring File の記事によると、John Cooper Works と Cooper SD の AT は、従来のアイシン製 6AT から、同じくアイシン製の 8AT に変更されるのではとのこと。DCT の導入が見送られた背景として、JCW と SD は最大トルクが 300 Nm を超えるからではないかとの憶測が出ています(ガソリンモデルの Cooper S には DCT が導入されて、ディーゼルモデルの Cooper SD には DCT が導入されない合理的な理由は、最大トルク以外に無さそうなので)。

このことから、MINI One、Cooper、Cooper D、Cooper S に導入される DCT について「乾式 DCT ではないか」との憶測も一部では出ているようですが、それは間違いで、MINI F56 にはゲトラグ社製の 7DCT300(湿式 DCT)が導入されるのでは無いかと想像しています(2018/2/24 追記:Cooper D については、3 月以降も当分の間は 6AT で残るとのこと)。そう推測する理由としては、

  • ゲトラグ社 7DCT300 は 300 Nm までの入力に耐えられる(つまり Cooper SD と John Cooper Works には搭載できない)
  • MINI F56 の MT はゲトラグ社製である

という点に加え、

  • 7DCT300 は中国で生産する予定もある

という点も挙げられます。これは BMW が将来的に中国で MINI の生産を計画しているという話(参考)とも符合するので、結構可能性があるのではないかと思うのですが……。
(2018/3/4 追記)MINI One に先行導入された DCT は、やはりゲトラグ社製の 7DCT300 だったようです。

追加オプション・廃止オプション

(2018/3/4 追記)今回のマイナーチェンジでの(日本国内での)変更点をリストアップします。

  • CarPlay オプションが追加。マルチファンクション・ステアリング(JCW レザー・ステアリングあるいは MINI Yours レザー・ステアリングとの組み合わせも可)が必須
  • リアビュー・カメラ + PDC リアの組み合わせが廃止され、パーキング・アシスト・パッケージだけに
  • Cooper および Cooper D もナビゲーション・パッケージが標準装備に変更
  • アームレストが標準装備として復活(!)
  • MINI ドライビングモードは One、Cooper および Cooper D では選択不可に(Cooper S または Cooper SD では選択可能)
  • ダイナミック ダンパー コントロールは名称が変更され、ドライビング モードと同じく One、Cooper および Cooper D では選択不可に
  • クローム・ライン・インテリアやカラー・ラインのカスタマイズが不可に(?)
  • 以前は Cooper S と Cooper SD 専用だった「スタイル」のいくつかが、Cooper および Cooper D にも適用可能に

【ご注意ください】これらの内容は、誤りを含む可能性があります。詳しくはお近くの MINI 正規ディーラーでご確認ください。

Blogger の小枝