保護されてない Blu-rayに格納されたm2tsをチャプター毎に分割したい。出来れば無劣化で。
もう、ffmpeg
についてはありとあらゆるサイトがあるのが、以下を参考にした。
まずはチャプター毎に分割したいので BDInfoで、以下のようなチャプター情報を抽出する。
FILES:
Name Time In Length Size Total Bitrate
---- ------- ------ ---- -------------
00000.M2TS 0:00:00.000 2:43:25.295 0 0
CHAPTERS:
Number Time In Length Avg Video Rate Max 1-Sec Rate Max 1-Sec Time Max 5-Sec Rate Max 5-Sec Time Max 10Sec Rate Max 10Sec Time Avg Frame Size Max Frame Size Max Frame Time
------ ------- ------ -------------- -------------- -------------- -------------- -------------- -------------- -------------- -------------- -------------- --------------
1 0:00:00.000 0:03:31.444 0 kbps 0 kbps 00:00:00.000 0 kbps 00:00:00.000 0 kbps 00:00:00.000 0 bytes 0 bytes 00:00:00.000
・・・中略・・・
これで、分割する時分秒が分かるので-ss
でトリミングの開始位置、-t
で開始位置からの時間の長さを指定すれば良い。ミリ秒単位で指定できるのか不安だったが、以下のサイトにあるとおり、可能だった。
無劣化で分割したければ-c copy
を付ければ良い。分割にかかる時間やCPUの使用率を見る感じ、再エンコードなどされずに済んでいるようだ。
ffmpeg -i /mnt/iso/BDMV/STREAM/00000.m2ts -ss 2:36:07.124 -t 0:07:18.171 -c copy /home/arimasou16/Videos/bd01.m2ts
ただ、何故か分割されたファイルを再生するとジィーとホワイトノイズが入ってしまう。なので、音声だけエンコードする。-c:v copy
とすれば動画は無劣化となる。
ffmpeg -i /mnt/iso/BDMV/STREAM/00000.m2ts -ss 0:00:00.000 -t 0:03:31.444 -c:v copy -c:a aac -b:a 320k /home/arimasou16/Videos/bd01_320.mp4
ただ、やはり、これだとファイル容量が大きいので、- ffmpegで動画をH.265エンコードして容量を大幅に節約する - 丁寧に手を抜くを参考にH.265でエンコードする。
Apple標準と互換性を持たせるために-tag:v hvc1
1を付与する。
ffmpeg -i /mnt/iso/BDMV/STREAM/00000.m2ts -ss 0:00:00.000 -t 0:03:31.444 -c:v libx265 -tag:v hvc1 /home/arimasou16/Videos/bd01_iphone.mp4
ただ、HEVC/H.265ビデオフォーマットは HEVC/H.265 video format | Can I use… Support tables for HTML5, CSS3, etcにあるとおり、全ブラウザと互換性があるわけではない。Apple製は別とし、WindowsやAndroidではハードウェアサポートによる一部な互換性となる。
ということで、オープンソースでロイヤリティフリーのビデオコーデックとして
Encode/AV1 – FFmpegがあるのだけど、配布されているffmpeg
は、著作権的な問題なのか、
SVT-AV1のコーデックlibsvtav1
を有効にしていない。
$ ffmpeg -i "/media/arimasou16/CDROM/BDMV/STREAM/00000.m2ts" -ss 0:00:00.000 -t 0:03:31.444 -c:v librav1e "/mnt/hdd1/My Videos/新体操/output/output01.mp4"
Unknown encoder 'librav1e'
$ ffmpeg -help encoder=libsvtav1
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Codec 'libsvtav1' is not recognized by FFmpeg.
libaom-av1
2は有効になっていたので、試したら劇遅で、とても実用に耐えれるレベルではない。
ffmpeg -i "/media/arimasou16/CDROM/BDMV/STREAM/00000.m2ts" -ss 0:00:00.000 -t 0:03:31.444 -c:v libaom-av1 -strict -2 /home/arimasou16/Videos/bd01_av1.mp4
なので、
AV1全部盛りFFmpegのビルド (2021年6月版) - 鴨川のはりねずみのように、
CompilationGuide/Ubuntu – FFmpegを参考に、頑張って--enable-libsvtav1
にしてビルドするしかないのかなぁ。
私は面倒というか環境が汚れるのが嫌で3、試していない。 libsvtav1を使ったらffmpegでのAV1エンコードが超高速になった話 | nexryai.logを見ると
ArchやDebianの公式リポジトリでも有効
とあるけど、どいうことだろう?気が向いたらビルドしてみる。以上。