●目 的
TVer, NHK+などのインターネット上のts動画ファイルをBlu-rayディスクで再生可能なm2tsファイルに変換する。
●動画ファイルの変換に必要なプログラム
・ffprobe : 動画情報の取得に必要。ffmpegをインストールすると同封されている。
・ffmpeg:動画ファイルの変換に必要。
※ffmpegの取得
最新のffmpegは,m2tsファイルへの動画変換では音声aacをサポートしていないので,音声をaacに指定すると作成したm2tsファイルは音声が出ない。
しかしながら,m2tsファイルでaacをサポートするようにビルドされた古いffmpegが存在する。
ただし,Linux版ではなく,Windows版である。
以下のURLより古いffmpegをダウンロードする。
https://webradio.hinekure.net/ffmpeg/ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20200403-52523b6-win64-static.zip
m2tsファイルでaacをサポートしているヴァージョンのffmpegだとわかるように,
ffmpeg.exeの名前をffmpeg-20200403-52523b6-win64-static.exeに変更しておく。
●Blu-rayディスク作成に必要なプログラム
・BDAVMaker:Blu-rayディスクに格納するBDAVフォルダの作成に必要。
・ImgBurn:BDAVフォルダをBlu-rayディスクに焼き付けるために必要。
●インターネット上のts動画ファイルのダウンロードに必要なプログラム
・gyao_down.jar:TVer,NHK+等の動画ファイルのダウンロードに必要。
・Abema-DL1.bat:AbemaTV(無料)の動画ファイルのダウンロードに必要。
・4K Video Downloader:YoutubeのHD画質での動画ファイルのダウンロードに必要。
●動画の取得
(1) TVer
・gyao_down.jarをクリックする。
[メイン] ”動画単体を落とす”と”master.m3u8を直接入力”にチェックを入れる。
[設定2] ”変換後の拡張子”を”ts”に書き換え,”ffmpegで直接mp4に落とす”のチェックを外す。
[設定保存] ”設定保存”をクリックする。
[メイン] 動画サイトのURL(https://tver.jp/episodes/epzdeu10dy など)をURLに張り付けると,TVerが自動的に開き,すぐ閉じることによってts動画のダウンロードが始まる。
※TVerが自動的に開いたまま閉じない場合
・開いたTVerの動画の窓の右上のXをクリックして閉じる。
・動画サイトのURLを4K Video Downloaderに張り付けてダウンロードする。
●各種動画ファイルの情報
ffprobeを使って,各種動画ファイルの情報を見よう。
【地上デジタルm2ts】
$ ffprobe -i TV.m2ts
Input #0, mpegts, from 'TV.m2ts':
Duration: 00:04:32.54, start: 11288.727611, bitrate: 12084 kb/s
Program 161
Stream #0:0[0x111]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1440x1080 [SAR4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x112]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 195 kb/s
Stream #0:2[0x114]: Subtitle: arib_caption (Profile A) ([6][0][0][0] / 0x0006)
【NHK+】
$ ffprobe -i nhk.ts
Input #0, mpegts, from 'nhk.ts':
Duration: 00:58:59.57, start: 1.400000, bitrate: 1645 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 960x540 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 66 kb/s
【TVer】
$ ffprobe -i TVer.ts
Input #0, mpegts, from 'TVer.ts':
Duration: 00:19:29.03, start: 1.400000, bitrate: 3002 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709/unknown/unknown, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 71 kb/s
【AbemaTV】
$ ffprobe -i Abema.ts
Input #0, mpegts, from 'Abema.ts':
Duration: 00:02:47.16, start: 1.443511, bitrate: 4322 kb/s
Program 1
Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9],
29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 204 kb/s
Stream #0:2[0x102]: Data: timed_id3 (ID3 / 0x20334449)
【Youtube】
$ ffprobe -i Youtube.ts
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Youtube.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:20:50.84, start: 0.000000, bitrate: 3126 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2991 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
【古いbilibili】
$ ffprobe -i Bilibili.flv
Input #0, flv, from 'Bilibili.flv':
Metadata:
description : Packed by Bilibili XCoder v1.0(fixed_gap:False)
metadatacreator : Yet Another Metadata Injector for FLV - Version 1.9
hasKeyframes : true
hasVideo : true
hasAudio : true
hasMetadata : true
canSeekToEnd : false
datasize : 87843630
videosize : 77677451
audiosize : 10049363
lasttimestamp : 400
lastkeyframetimestamp: 392
lastkeyframelocation: 85960158
Duration: 00:06:39.85, start: 0.067000, bitrate: 1757 kb/s
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 1280x720 [SAR 1:1 DAR 16:9], 1551
kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 23976 tbc
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 197 kb/s
【現在のbilibili】
残念ながら,現在,Chromeでダウンロードできない仕様とされている。
以上の情報をまとめると,以下の表のようになる。
(1) TVer, NHK+, AbemaTV, Youtubeからダウンロードしたts(mp4)ファイルをBlu-rayディスク用のm2tsファイルに変換する場合
TVer, NHK+のtsファイルのVideo の fps, tbr, tbn, tbc, Audio の周波数の数値が,地デジTVのm2tsファイルのそれらと同じであることがわかる。
以下のコマンドでBlu-rayディスク用のm2tsに変換する。
.\ffmpeg-20200403-52523b6-win64-static -i TVer.ts(youtube.mp4) -vf scale=-1:1080 -vb 17000k -acodec ac3 -b:a 192k -ar 48k -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv TVer.m2ts(youtube.m2ts)
(2) TVer, NHK+, AbemaTV, Youtubeからダウンロードしたts(mp4)ファイルを地デジm2tsと同じピクセルに変換する場合
.\ffmpeg-20200403-52523b6-win64-static -i TVer.ts -vf scale=1440:1080 -vb 17000k -acodec ac3 -b:a 192k -ar 48k -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv -r 29.97 -framerate 29.97 Tver.m2ts
(参考,いまのBiliBiliはflvではない。)
古いBiliBiliでの動画ファイルはたいてい,複数のflvファイルに分割されている。
したがって,複数のflvファイルを結合して,1つのflvファイルを作成する必要がある。
まず,以下のようなテキストファイルを上から結合する順番でflvファイル名を記述して作成する。
テキストファイル flv.txt を以下のように作成し,ffmpegと複数のflvファイルと同じディレクトリに保存する。
file 'Bilibili-1.flv'
file 'Bilibili-2.flv'
file 'Bilibili-3.flv'
以下のコマンドによって,複数のflvファイルを無劣化結合する。
ffmpeg -safe 0 -f concat -i flv.txt -c:v copy -c:a copy -map 0:v -map 0:a Bilibili.flv
[オプションのだいたいの意味]
-vf : ピクセルの変更時に使用する。-1はオリジナルのアスペクト比を維持することを意味する。
-vb : ビットレート変更時に使用する。単位はb/sであり,kはキロ,つまり*1000という意味である。
-acodec:
copy ⇒ 元の音声がaac(LC)でm2tsの音声がaac(LC)であるので,"-acodec copy"でよいと考えられるが,m2tsを作成すると,ブルーレイディスクの番組の音声が出ない。理由は不明。
aac ⇒ "-acodec aac"としてm2tsを作成すると,若干音ズレが起きる場合がある。
ac3 ⇒ "-acodec ac3"としてm2tsを作成すると,音ズレが解消される場合が多い。
↑-acodecは,framerateとも関係するため,このオプション単独では何とも言えない。
-pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv: このオプションは動画の色情報の指定であり, 元の動画ファイルのyuv420p(progressive)から地デジとBSデジタルの yuv420p(tv, bt709, progressive)への変換の設定である。
-r 29.97 -framerate 29.97 : fps, tbr, tbn, tbc の数値を地デジのそれらに一致させる設定である。
-
●BDAVフォルダの作成
BDAVMakerを使って,Blu-rayディスク用のフォルダ構造を作成する。
NHK+とTVerの動画の場合には,番組名,番組放送日時,内容をあらかじめインターネットで検索して,メモ帳にでも張り付けておく。
BDAVMakerで各m2tsファイルのタイトル(番組名),放送日時などをさきほどのメモ帳からコピー&ペーストで張り付ける。
「作成」ボタンをクリックすると,BDAVフォルダを作成してくれる。
●Blu-rayディスクへの焼き付け
ImgeBurnを使って,Blu-rayディスクへBDAVフォルダを焼き付ける。
BDAVフォルダを指定して,4回ほどEnterキーを押すと,焼き付けが始まる。
焼き付けが終わると,勝手にBlu-rayディスクからディスクが吐き出される。
●コメント
インターネット上の動画からBlu-rayディスクを作成する情報はあまり書かれていない。
そこで,既存のフリーソフトウェアを使って,試みたことをここに記述した。
なお,動画変換で一番問題となる音ズレについては言及していないが,tsとm2tsの相性がよいのか上述の方法で明らかな音ズレは起きていない。
ffmpegは非常に強力な道具であり,自身の仕事でも数千枚のグラフの画像ファイルを結合して,アニメーションを作成するために使っている。