複数ストリームある時よくわからなかったのでメモ。
結論
45分30秒経ったところから200秒カット、音声は2ストリーム。
$ ffmpeg -i input.ts -ss 0:45:30 -t 200 -vcodec copy -acodec copy -map 0:0 -map 0:1 -map 0:2 output.ts
解説
たまに二ヶ国語放送などで音声が2ストリームになっていることがあります。
$ ffmpeg -i "[151231-1915][GR37][PT3-T1]NHK紅白歌合戦「ザッツ、日本!ザッツ、紅白!」〜NHKホール〜.m2ts" Input #0, mpegts, from '[151231-1915][GR37][PT3-T1]NHK紅白歌合戦「ザッツ、日本!ザッツ、紅白!」〜NHKホール〜.m2ts': Duration: 04:29:57.61, start: 53684.809400, bitrate: 14186 kb/s Program 25600 Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709), 1440x1080 [SAR 4:3 DAR 16:9], max. 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0:1[0x110]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 117 kb/s Stream #0:2[0x111]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 137 kb/s Stream #0:3[0x130]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:4[0x138]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:5[0x140]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:6[0x160]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:7[0x161]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:8[0x162]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:9[0x170]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:10[0x171]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:11[0x172]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:12[0x150]: Unknown: none ([13][0][0][0] / 0x000D)
この時にストリームを選択できるようです。
例えば#0:0と#0:1、#0:2のストリームを持ってきたい場合はこんな感じ。
$ ffmpeg -i input.m2ts -ss 0:45:30 -t 200 -vcodec copy -acodec copy -map 0:0 -map 0:1 -map 0:2 output_2.ts
さらにストリームを入れ替えたり言語をつけたりすることも可能です。
例えば#0:1を日本語に設定して#0:2に設定、#0:2を英語に設定して#0:1に設定。
$ ffmpeg -i input.ts -ss 0:45:30 -t 200 -vcodec copy -acodec copy -map 0:0 -map 0:1:0:2 language=jpn -map 0:2:0:1 language=eng output.ts
その他たくさんオプションがあります。ffmpegしゅごい。