ffmpeg -i "xxxxxxx" -c:v copy -c:a copy -c:s copy -y -f mpegts test.ts
只提供一个字幕流,我该如何录制它们全部?
Input #0, mpegts, from 'xx':
Duration: N/A, start: 24264.769756, bitrate: N/A
Program 111
Stream #0:0[0x83e]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x83f]: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:2[0x841]: Audio: mp3 ([4][0][0][0] / 0x0004), 0 channels
Stream #0:3[0x840]: Audio: mp3 ([4][0][0][0] / 0x0004), 0 channels
Stream #0:4[0x842]: Audio: mp3 ([4][0][0][0] / 0x0004), 0 channels
Stream #0:5[0x853](tai): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:6[0x854](may): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:7[0x855](vie): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:8[0x856](tha): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:9[0x857](ind): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:10[0x858](bur): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
答案1
-c
(选择编解码器) 和-map
(选择流) 选项的工作方式如下:
-c:a -> select best supported audio (transcoded)
-c:a copy -> best supported audio (copied)
-map 0:a -> all audio from 1st input file (transcoded)
-map 1:a:0 -> 1st audio stream from 2nd input file (transcoded)
-map 1:a:1 -c:a copy -> 2nd audio stream from 2nd input file (copied)
查看此链接用于流选择和处理。
要从第一个输入文件复制所有字幕流而不进行转码:
-map 0:s -c:s copy
您的代码没有问题,只是map
缺少选项。
答案2
如果没有任何-map
选项,ffmpeg 将仅选择一种受支持类型的流:视频、音频、字幕。
因此,添加地图选项来选择所需的流。
ffmpeg -i "xxxxxxx" -map 0:v:0 -map 0:a:0 -map 0:s -c copy -y -f mpegts test.ts