我有一些带有PGS(基于图像)字幕的Blu-ray片段。我的目标是将视频转码为低速率的H265,以节省空间并降低比特率,但是我需要字幕。我并不在乎容器是什么-它可以保留.mt2s或其他任何内容,但是我无法让FFmpeg用这种类型的视频做任何事情 不要丢弃字幕,或将其转换为“包含私人数据的PES数据包”,如VLC Player所述。
例如,如何做一个简单的事情,就像在现有.mt2s文件的第一分钟制作另一个.mt2s文件一样,逐字复制所有流,而将它们全部截断呢?我可以理解,也许您不能将PGS字幕流放入某些容器中,但是如果输出与输入是相同类型的容器,为什么会出现问题?
如果我使用FFmpeg列出原始文件中的流,它会显示:
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
如果我愿意
ffmpeg -i foobar.m2ts -c copy -t 1:00 test.m2ts
我最终在test.m2ts中获得了以下流:
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x101]: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, mono, fltp, 192 kb/s
Stream #0:2[0x102]: Data: bin_data ([6][0][0][0] / 0x0006)
我正在尝试创建一个非常短的文件,以便可以使用不同的选项来完成我真正想做的事情,即更多地压缩视频而不丢失字幕,并且我不想等待以便在我发现它不能正常工作之前将整个电影转换。