Open3
地デジ放送録画データのffmpegエンコード

ベストプラクティス(暫定)
ffmpeg -i input.m2ts \
-vf yadif=mode=1:parity=-1:deint=1 \
-c:v libx264 -preset slow -crf 23 \
-c:a aac -map 0:v:0 -map 0:a:0 \
output.mp4
上記コマンドがやっていること
- インターレース解除
- 映像コーデックをH.264に変換
- 音声コーデックをAACに変換
可能であれば追加で実現したいこと
上記コマンドの処理の内容を欠かすことなく、以下を実現したい。
- 字幕情報の維持
- メタ情報の維持
使用している動画のストリーム情報
Input #0, mpegts, from 'input.m2ts':
Duration: 00:05:05.85, start: 44758.894833, bitrate: 15499 kb/s
Program 1032
Metadata:
service_name : NHKE?F?l1?El5~
service_provider:
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Side data:
cpb: bitrate max/min/avg: 20000000/0/0 buffer size: 9781248 vbv_delay: N/A
Stream #0:1[0x110]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 255 kb/s
Stream #0:2[0x130]: Subtitle: arib_caption (Profile A) ([6][0][0][0] / 0x0006)
Stream #0:3[0x138]: Data: bin_data ([6][0][0][0] / 0x0006)
Stream #0:4[0x140]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:5[0x160]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:6[0x161]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:7[0x162]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:8[0x163]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:9[0x164]: Unknown: none ([13][0][0][0] / 0x000D)
Stream #0:10[0x165]: Unknown: none ([13][0][0][0] / 0x000D)
Program 1033
Metadata:
service_name : NHKE?F?l2?El5~
service_provider:
Program 1034
Metadata:
service_name : NHKE?F?l3?El5~
service_provider:
Program 1416
Metadata:
service_name : NHK?7HBS?2
service_provider:
No Program
Stream #0:11[0x12]: Data: epg
ファイルサイズ
- 処理前: 565MB
- 処理後: 161MB

arib_caption
がmp4コンテナで対応していないので、mp4のまま字幕情報を維持するのはそもそも難しそう?
以下はffmpegでのarib字幕の扱い方についての引用。
FFmpeg 4.2 以降、TS 内に含まれる字幕は今まで bin_data として認識されていたのですが、これが arib_caption という字幕ストリームとして認識されるようになりました。ただし、その変更のおかげで、ARIB 字幕をエンコード先の TS にそのままコピーすることができなくなってしまいました。
FFmpeg に libaribb24 を組み込んでビルドすると ARIB 字幕をデコードして srt や ass などの他の形式に変換することができるようにはなりますが、それらの問題は変わらないようです。
arib字幕を外部のsrtファイルとかに出力する方法が一番丸い気がする。
libaribb24はこの辺り見ると導入のヒントになりそう?

メタ情報(放送局・番組情報)はいくら調べても手動で移植する話しか出てこないので、ffmpeg単体でコピーするのは厳しいのかもしれない...。
ログインするとコメントできます