我正在尝试创建一个.ts-file,并以特定偏移启动时间段。假设存在一个输入文件输入。在其上运行ffprobe说" start:8636.xxx"。现在,我喜欢创建一个具有额外开始时间偏移的副本,使用:
ffmpeg -i input.ts -someoption output.ts
我知道的选择时间,就像-Copyts-ss-timecode
行不通。是否有一个选项使我可以在视频流中添加额外的时间偏移?
编辑:
这是原始TS文件的FFProbe输出:
Duration: 00:06:03.52, start: 6204.163600, bitrate: 3880 kb/s
Program 12103
Metadata:
service_name : ?ProSieben
service_provider: ?Unitymedia
Stream #0:0[0x21f]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x220](ger): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 192 kb/s
Stream #0:2[0x222](ger): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
No Program
Stream #0:3[0x224]: Subtitle: dvb_teletext
Unsupported codec with id 94215 for input stream 3
,这是运行ffmpeg -i input.ts -copyts -output_ts_offset 2428.6 output.ts
之后新创建的文件的FFProbe输出:
Duration: 00:06:03.36, start: 8634.319544, bitrate: 4372 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x101](ger): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
我对流格式本身并不了解。但是,我可以看到,新创建的输出文件包含较少数量的流,并且一些细节已更改,例如" TV,Progessiv",而不是" TV,Top first"。
除了还有其他时间戳记,我想拥有一个精确的原件副本。这可能吗?
使用
ffmpeg -i input.ts -copyts -output_ts_offset 5 output.ts
由于ffmpeg会添加,默认情况下为1.4s开始时间,因此上面的参数应减去1.4,因此3.6
。
或者您可以使用
ffmpeg -i input.ts -copyts -muxdelay 0 -muxpreload 0 -output_ts_offset 5 output.ts
应用5秒的偏移。
我需要为output.ts
文件设置自己提供的开始时间。我刚刚删除了coptyts
选项。
ffmpeg -i input.ts -muxdelay 0 -muxpreload 0 -output_ts_offset 5 output.ts
更新
但是使用上述命令,hls stream
无法正常工作。所以我使用了以下命令。
ffmpeg -i input.ts -muxdelay 0 -c:v copy -c:a copy -muxpreload 0 -output_ts_offset 5 output.ts
不要使用音频和视频编解码器-c:av copy
的组合参数。它无法正常工作。因此,请改用-c:v copy -c:a copy
。