kazeno memo

メモとか

ffmpeg MP4に字幕(.srt)を追加

字幕を追加

ffmpeg -i <動画ファイル.mp4> -i <字幕.srt> \
    -c copy \
    -c:s mov_text -metadata:s:s:0 language=jpn \
    <動画と字幕.mp4>

-metadata:s:s:0は字幕ファイルのメタデータMetadata>Stream>Subtitle>#0

language=jpnを指定するメリットは、OS(もしくは再生ソフト)の言語設定に合わせて適切な字幕ファイルを読み込んでくれること。

-movflags faststartが有効なのかffmpegで調べる

ffmpeg-movflags faststartオプションを付けると、moov atomを先頭に含めることが可能ですね。

ただ、ffprobeでfaststartが有効になっているのか確認することはできません。

これは-v traceで確認することができるようです。

$ ffmpeg -v trace -i <動画ファイル.mp4> 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'

mdatよりmoovが先に出力されたらfaststartが有効になっています。

VPN業者とレビューサイトは同一企業?

Peter Sundeのツイートを見ていたらWindScribeのブログ記事に言及していました。

VPNサービスがレビューサイトを所有している事は問題です。私がVPNサービス(現在はnjallaの一部)を始めたのは、他のVPNサービスをどんな人が運営しているかよくわからないからで、今も知らないままです。VPNの目的が安全であると考えるなら、無名の人が運営するサービスを利用することには意味がありません。

https://twitter.com/brokep/status/1439319931137531908

ということで、その記事を翻訳しました。

この記事を読む上で、「WindScribeもまたVPN業者である」という点には留意しておくべきでしょう。

  • 2022/02/14 追記
    今度は、SurfsharkがNord Security(NordVPN親会社)との合併を発表しました。発表の少し前には、Surfshark創業者がリトアニアメディアのインタビューに対し、NordVPNやProtonVPNとの関係が取り沙汰されていたベンチャーキャピタルTesonetとの関係を明らかにしていました。

  • 2022/02/24 追記
    2021年10月、j2GlobalはZiff Davisへと社名を変更しています。Speedtest.netやDowndetectorでおなじみのOoklaも傘下に収めているようです。


繰り返される買収

有名なVPN業者とレビューサイトが、「j2Global」と「Kape Technologies」の2社に相次いで買収されているのです。

j2Global

j2Globalは、IGNMashablePCMagなど有名なテック系メディアを所有するメディア企業で、いくつかのVPN業者を傘下に収めています。

WindScribeはj2Globalの利益相反を指摘しています。というのも、IGN・PGMagなどのメディアはよくVPN業者のレビューを行っているのです。これらのレビューでは、グループ企業である旨が開示されていますが、自らのグループ企業を"レビュー"するのは不誠実だとWindScribeは批判しています。(確かに、「レビュー」と言われると中立的な批評というイメージを持ってしまいます)

Kape Technologies

Kapeは悪名高いことで有名ですよね。以前の社名は「Crossrider」と言い、アドウェアやブラウザ乗っ取りソフトを製作している企業でしたが、2018年サイバーセキュリティ企業に転身しました。Kape・Crossriderの投資家はイスラエル出身のTeddy Sagiという人物で、1996年には贈収賄と詐欺で服役していたこともある曰く付きの人物。

Kape Technologiesへと転身した後、有名VPN業者を相次いで買収し始めます。

怪しいのはここからです。2021年、KapeはWebSelenceという会社を買収しました。この会社は2つのサイトを保有しているマーケティング企業です。

  • vpnMentor ― VPNレビューサイト
  • Safety Detectives ― VPNレビューサイト

買収額は14億9100万ドルで、すでに買収したVPN企業を全て合わせた買収額1より高いです。

KapeがVPNレビューサイトを必要とする理由は明白で、セルフプロモーションのため。ということで、vpnMentorによる「ベストVPN」トップ3を見てみましょう。

第一位がExpressVPN、第二位がCyberGhostVPN、第三位がPrivateInternetAccess

Kape所有のVPN企業がトップ3を独占しています。

どうせ、一部の企業が不誠実なことをやっているだけ、と思っているならそれは間違いです。別のレビューサイト、VPNRanks.comは「ベストVPN」としてPureVPNを挙げていますが、このサイトのオーナーは誰でしょうか? 正解はPureVPN。最近このランキングを取り下げたようですが。


この後WindScribeの宣伝が続くので省略しましたが、最後にいいことを言っていました。

簡単なVPNの選び方、というかババを引かない簡単な方法があります。VPNの広告や、アフィリエイトの為に宣伝している人を見たら、そのVPNを使わないということです。トラッキングからの保護を謳う一方、シェア獲得のため積極的にトラッキングを利用しているのであれば、それは偽善的で不誠実なのです。


  1. ExpressVPNの買収はWebSelenceの後なので「全て合わせた買収額」に含みません

Linuxでアニメのエンコード

HDDの容量が少なくなってきたので、アニメをH.265(HEVC)で圧縮したい!

プロファイル

動画

  • H.265
  • 1280x720

古いデバイスばかり使っているので、H.265は若干重い(CPU使用率が目に見えて上がる)のですが、容量とのトレードオフということです。

音声

オーディオまわりには全く拘りがありません。1MBのFLACと200KBのAACであれば後者以外の選択肢はありえません(そもそも、音質を聞き分けられるオーディオ機器持っていません)。

AACエンコードライブラリは、FDK-AACAppleのCoreAudio(qaac)の二強らしい。品質はApple (QAAC) ≒ fdk-aac > nero ≒ ffmpegとのこと。

FDK-AACは、--enable-libfdk-aacフラグを付けてffmpegをビルドする必要がある。

qaacはWindows用ソフトウェアだし、必要なDLLはiTunesに含まれている。つまりLinuxでは動かすことができないが、Wineを使えばどうにかなる。

ffmpegのビルド

libx264、libx265、libfdk-aacを有効にしたffmpegをビルドする。AV1やVP9などのライブラリが必要な場合は適宜追加してください。

まずソースコードをダウンロードし、GnuPGで検証します。

// ffmpeg本体と署名をダウンロード
$ wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.gz{,asc}

// 公開鍵をインポート
$ curl -s https://ffmpeg.org/ffmpeg-devel.asc | gpg --import -

// 検証
$ gpg --verify ffmpeg-4.4.tar.gz.asc

// 展開
$ tar xf ffmpeg-4.4.tar.gz

必要なパッケージをインストールします。(公式ドキュメントには無いlibunistring-devが必要でした)

# apt install -y \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libtool \
  libvorbis-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev \
  nasm \
  libx264-dev libx265-dev libnuma-dev libfdk-aac-dev libmp3lame-dev libopus-dev \
  libunistring-dev

ビルドします。

$ cd ./ffmpeg-4.4
$ ./configure \
  --pkg-config-flags="--static" \
  --extra-libs="-lpthread -lm" \
  --ld="g++" \
  --enable-gpl \
  --enable-gnutls \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree

// コンパイル
$ make -j$(nproc)

// インストール(/usr/local/binにffmpegなどがコピーされるので注意)
$ make install

qaac

FLACをm4a(aac)へ

動画をH265・1280x720へエンコード

.ISO(DVD Rip)をチャプタ付き.MKV(もしくは.MP4)へ変換する

DVDをリッピングしたISOファイルをMKV(もしくはMP4)へ変換する際、チャプター情報が欠落してしまいます。

そのため、dvdxchapというソフトウェアを使い、ISOファイルからチャプター情報を書き出し、動画ファイルと結合していきます。

DVD original one-file rip, deinterlace and add chapters with FFmpeg - BenHup.com

必要なソフトウェア

  • cmake
  • ffmpeg
  • g++
  • git
  • libdvdread
  • mkvtoolnix

Debianの場合、以下のパッケージをインストールしておきましょう。

# apt install build-essential cmake git libdvdread-dev mkvtoolnix ffmpeg

ISOをMP4へ変換

ffmpegでISOファイル内のmpegを、単一のmp4ファイルに変換します。

$ ffmpeg -i ISOファイル.iso -c copy -movflags faststart source.mp4

dvdxchapのビルド

チャプタ情報の抽出にはdvdxchapというソフトウェアを使用します。このソフトは自分でビルドする必要があります。

ここでは、Debian Busterでビルドする例を紹介します。

// 必要なパッケージのインストール
# apt install build-essential cmake git libdvdread-dev

// 公式リポジトリのクローン
$ git clone https://github.com/Tatsh/dvdxchap.git
$ cd dvdxchap/

// ビルド用のディレクトリを作成
$ mkdir ./build
$ cd ./build

// ビルド
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ make

// (必要に応じて)インストール
# make install

dvdxchapというファイルが生成されているはずです。dvdxchap -hなどで正常に動作するか確認してみましょう。

チャプタ情報の抽出&統合

チャプタ情報をchapters.txtへ書き出し、mkvmergeコマンドで動画ファイルとチャプタ情報を統合します。

$ dvdxchap ISOファイル.iso > chapters.txt
$ mkvmerge source.mp4 --chapters chapters.txt -o output.mkv

mkvをmp4へ変換(任意)

mkvをmp4へ変換したい場合、以下のコマンドを実行します。(チャプタ情報も保持されます)

$ ffmpeg -i output.mkv -c copy -movflags faststart output.mkv

DebianにAnboxをインストールする

インストール

# apt update
# apt install anbox

カーネルモジュールをロード

# modprobe ashmem_linux
# modprobe binder_linux

Androidのイメージファイルをダウンロード

# wget -O /var/lib/anbox/android.img https://build.anbox.io/android-images/2018/07/19/android_amd64.img

ファイル名がandroid.imgじゃないとanbox-container-manager.serviceが起動しません。

Systemdサービスの起動

# systemctl start anbox-container-manager.service
$ systemctl --user start anbox-session-manager.service

anbox-session-manager.serviceは一般ユーザー権限で起動していることに注意してください。

これでAnboxを起動することができます。

ターミナルからルート権限で/usr/share/anbox/anbox-shell.shを実行することで、Anbox内のルートシェルを触れます。

SR-IOVに対応しているNICのリスト

(I350T2 I350T2BLK I350T2G1P20 I350T2V2 I350T2V2BLK I350T4 I350T4BLK I350T2G1P20 I350T4V2 I350T4V2BLK I350F2 I350F2BLK I350F4 I350F4BLK K9CR1 PE2G4i35 ST4000SPEXI SE-PCIE-LAN-1Gx4-INT-LP THGMP 9YD6K XP0NY 7MJH5 YG4N3 D3045 NC361T 00D1998 00AG510 00AG520 0C19506 4XC0F28731 7100477 7100479 AOC-SGP-I4 AOC-SGP-I2)