2020年12月4日:一部の環境で本ページの「前進する社会主義 」の映像,ならびにAV1の動画が再生されない事象について追記しました.
2021年1月20日 :mp4に対応していないブラウザ向けにmkv での動画を再生できるよう追加しました。
この記事はTokyo City University Advent Calendar 2020 の3日目の記事です!
昨日はたっくんさんの「2DDのフロッピーに“聴ける”音楽を入れてみる 」でした!今日もフロッピーです
1970年,8インチという超巨大サイズで登場した"それ"は,10年後にはソニー *1 の手によって,3.5インチまで小型化した.しかし,その小さすぎる容量によって今ではほとんど使われなくなった"それ"が,今蘇える‒‒‒
こんにちは.日夜何かしらと格闘しているらぴーとです.今日はフロッピーに動画を入れてみようということでやっていきたいと思います.
もくじ
1.基礎知識
まずはこれを見ましょう.
麻生太郎「フロッピー1枚で全部できるようになる」
今の副総理兼財務大臣 がフロッピー1枚で全部できるようにするって言ってたので動画も見れるようにしなければいけませんね(適当)
ということでまずはフロッピーについて知りましょう.下のニコニコ大百科 が詳しいです.
dic.nicovideo.jp
1.44MBとはいうものの1.44×10242 バイトでも1.44×10002 バイトでもない1,440×1024=1,474,560バイトが2HDフロッピーディスク の1.44MB物理フォーマットで保存できるデータ量の限界である。(1.44MBフォーマットでは512byte保存できるセクターが2,880個存在する)。
しかし、OSのファイル管理(論理フォーマット)のために、FAT領域やルートディレクト リのための領域が必要なので、ファイルの容量として実際使用できるのは1,457,664バイトである(そのため数%容量が大きく実際は入らない動画もかなり存在する)。
1.46MB≃1.38MiBくらいです多分(Windows 上だと1.38MBって表示されますね)
これがどれくらいの容量なのかっていうのを考えると,非圧縮音源の代表wavファイルだと,ビットレート が1411.2kbpsですから,およそ0.18MB/です.つまりだいたい8秒くらいですね(イントロクイズかな?)
しかしこれが圧縮音源の代表MP3になるとビットレート を256kbpsにすると0.032MB/sですので,45秒くらいまで聞くことができます(Bメロの途中かな)
大体7倍弱くらいにはなりましたね.
この圧縮という技術をいかに活用するかというのが重要になってきます.
ではここでアニメのOPの標準である90秒(1分30秒)を入れるのにはどれくらいのビットレート 以下であればいいのかを考えてみましょう.
単純ですね.
1.46MBを90sで割って,さらに8(bits/B)を乗算してやると大体126kbps って出てきます.
これの続きは第5章でやります.とりあえず126kbpsという数字を覚えておいてください.
2.フロッピーとフロッピーディスク ドライブってどこで売ってるの?
ところでフロッピーディスク ってまだ販売されているのでしょうか?
調べてみました!
がわかりませんでした!
まだどこかで売っていると良いですね!
って冗談はさておいて残念ながらもう生産されていないそうです.メルカリで1枚100円くらいでセット販売されてるんでそれとかおとなしく買いましょう.(どっかに売ってたら教えてください買いにいきます)
もしくは押し入れとかに眠っているかもしれませんよ
んで外付けフロッピーディスク ドライブ自体はアキバのツクモ eX.とかで500円で売ってるんで買いましょう. 最悪そこらへんのジャンクパーツ屋でも売ってそうですけど...
3. 動画を用意しよう!
どうにかこうにかして動画を用意しましょう
スクスタとかデレステ とかのMVを持ってくるのも良いですね
ここから2つのルートに分かれます.
4-1. とりあえずフロッピーに入ればいいやルート
ここから自分の環境に合わせてffmpeg をダウンロードしてください.
ffmpeg.org
ダウンロードした実行ファイルを変換元の動画と同じディレクト リに置く方が良いでしょう(人によるだろうけど)
4-2. フロッピーで360pが見たいんじゃルート
こちらのルートはコンパイル が必要となります.Linux を使うのが多分簡単です.
下記を参照してコンパイル してみてください,本当はArch Linux とかが一番早いんですが,Debian 系ディストロもそこまで手間ではありません.
trac.ffmpeg.org
今回はこれに従ってやっていきます.(なんか古いっぽいけどまあ動くからヨシ!)
Windows の人はWindows Subsystem for Linux (WSL)を使うのが手っ取り早いんじゃないでしょうか.下記がお勧めです(がWSL2だったり結構変わったりするのでそこらへんは頑張って)
qiita.com
今回はCompile FFmpeg for Ubuntu , Debian , or Mintに沿ってやっていきます.
まずは
mkdir -p ~/ffmpeg_sources ~/bin
をします.次に,
sudo apt update -qq && sudo apt -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev
を実行します.次からは,
sudo apt-get install nasm
(ryというようにGuideに従って進めていってください(投げやり)
最後は
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
...(省略)...
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r
を実行すればコンパイル が完了します.
ERROR: gnutls not found using pkg-config
と僕の環境では出てしまいましたが,なんかよくわかんないけど
sudo apt install libunistring-dev
をインストールしたら上も普通に通りました(結構時間かかった)1
5.動画をエンコード してみよう!
ffmpeg の基本のコマンドライン 引数はこんな感じです
ffmpeg -i input.mp4 -c:v hoge -vf scale=width:-1,fps=30 -strict -2 -c:a moge -b:v 100k -b:a 24k output.mp4
てなわけで解説します.
-i input.mp4
-c:v hoge
ここでビデオの圧縮方法(コーデック)を指定します.この場合hogeというコーデックを指定しています.
-vf scale=width:-1,fps=30
-c:a moge
ここでオーディオの圧縮方法を指定します.この場合はmogeを指定しています。
-b:v 100k
ビデオのビットレート を指定しています.数字に接頭辞(k,M)が使えます.この場合だと100kbpsです
-b:a 24k
オーディオのビットレート を指定しています.数字に接頭辞(k,M)が使えます.この場合だと24kbpsです
output.mp4
5-1. とりあえずフロッピーに入ればいいやルート
とりあえずコマンドライン で
ffmpeg -codecs >codecs.txt
ってやればコーデック一覧が見れるのでそれを見t
...え?見ても何がなんだか?訳がわからないよwww
ってことでコチラのページにコーデックがまとまっていますので見てみてください.
qiita.com
まあ適当なのを指定すればOKです.v:cはh264 or hevcじゃないかなぁ(GeForce 使ってる人は_nvencを付けるとcudaを使ってめっちゃ高速でやってくれます)
a:c はまあ...AAC とか色々試してみればいいんじゃないでしょうか(投げやり)
5-2. フロッピーでまともに360pが見たいんじゃルート
正直言ってブロックノイズが酷すぎてH.264 とかだとまともに360pが再生できません.
そこで今回用いるのがAV1 と呼ばれるフリーなコーデックです.
ja.wikipedia.org
んまあ詳細は見てもらうとして今までこんなコンパイル をしてきたのはこれとHE-AAC を使えるようにするためです.
上のHEVC(H.265)はライセンスとかでアレですけど,AV1は基本フリーに使うことができます.(HE-AAC もライセンスはry)
AV1は-c:v libaom-av1と指定することでエンコード できます. (ただめっちゃ遅いので,一緒に-cpu-used 5オプションを付けることをお勧めします.)
さあAV1でエンコード するのです,そして幸せになりましょう.
両ルート共通の事項
先程アニメのOPなら126kbpsと言いましたね。結局126kbpsの中であれば理論上どんなとり方をしても-b:vと-b:aの合計が126kbps以内であれば1.44MBに落ち付きます。なので、「よい音が欲しいんじゃ」って場合なら-b:aを上げたり、逆に「俺は脳内で再生されるが」って場合なら-an(オーディオなし)とかできます。
そこらは個人のセンスです。
6.各ビデオコーデックの比較
ほんへ
注意!!
フルスクリーンにした上で、各動画の画質を720pにすることを強く お勧めします
その1
スクスタのMVを拝借しています。
(サン◯イズさんと角◯とラン◯ィスさんすみません...あとブ◯ロードさんと木◯ごめんなさイエッタイガ-!)
VIDEO
ビデオ:
ソース@640x360 2.2Mbps 60fps
H.264 @640x360 100kbps 12fps
HEVC@640x360 100kbps 12fps
AV1@640x360 100kbps 12fps(1 Pass)
オーディオ
HE-AAC v2 22kbpsをAAC 128kbpsに変換
まあ見る限りHEVC or AV1ですが,今世界はAV1を軸に動いているのでみなさんffmpeg をコンパイル しましょう(暴論)(あと三船栞子を推せ)
その2
あおかなの2nd OPもエンコしてみました.こっちはソース,HEVC(H.265),AOM AV1 1 Pass,AOM AV1 2 Passの比較です.
HEVCは-preset slower,AV1はどちらとも-cpu-used 5にしてあります.
VIDEO
Video
ソース:640x360 12fps 1063kbps (H.264 )
HEVC:640x360 12fps 83kbps
AOM AV1:640x360 12fps 83kbps (1 Pass, 2 Passとも)
Audio
HE-AAC v2 24kbpsをAAC 128kbpsに再エンコード
あきらかに1 Passより2 Passの方が良くなっている気がする
HEVCとAV1は...良くわかりません()
...ところで蒼の彼方のフォーリズム High Resolutionが12/25に発売されるらしいので買ってあげてください(ステマ )(宣伝したから許して)
(広告に金出しすぎて潰れたのは忘れてねえからな今度こそ頼むぞ)
sprite.tokyo
7. さいごに
最後がクソ適当になってしまいましたが...
時代の進歩によってフロッピーにもまともに動画が入る時代になりました.
これから先ももっと活動の幅を広げていけるはずです!
フロッピー1枚で何でもできる時代が近いです
なのでみなさんもフロッピーを...あ,つかわない...ソウデスヨネ-...
BADEND
以上Tokyo City University Advent Calendar 2020の3日目の記事でした...
Windows 98 で再生したかったのですが、流石にAV1はキツそうです...(HEVCならいけるかもね)
あと今までの話はあくまで理論上の話です、ffmpeg のバージョンだったりでサイズだったりは変わる可能性もありますのでご注意を...
明日はましまさんの「フロピとかPCDPとかThinkPad を推す何か」です.明日もFloppy,みんなHappy!
追記(2020年12月4日)
Windows 10でのMicrosoft Chromium Edgeなど一部の環境でブラウザ上でAV1が再生できない環境があることを確認しました(自分がぶち当った)
↓のMicrosoft Storeのリンクなどから「AV1 Video Extension」をインストールしてください
www.microsoft.com
多分再生できる...はず...
もし駄目だったらDMでもリプでも下さい.
追記ここまで
おまけその1
どなたかのOpusに対抗してみました。
一応HE-AAC v2@33kbpsで聞くとこんな感じだよっていう疑似再現です(そのまま垂れ流すとライセンスがね...)
Your browser does not support the
audio element.
ちなみにここ から「공격전이다」と入力すると入手できます。
ついでにNK-POPでの僕の推しの曲、前進する社会主義 もどうぞ。
Video:AOM AV1 @36kbps→AV1 @500kbps
Audio:HE-AAC v2 @16kbps→AAC @128kbps
“動画を再生できない場合、ブラウザでvideoタグがサポートされていないかもしれません。”
親愛なる指導者金正恩 同志の共和国では、先進技術の発展によりフロッピーで動画が再生できる!
おまけその2
みなさんも楽しいフロッピーライフを!