【问题标题】:ffmpeg remove Non-Monotonous DTS framesffmpeg 删除非单调 DTS 帧
【发布时间】:2018-03-22 21:00:01
【问题描述】:

是否可以通过删除非单调 DTS 帧将 .ts 文件流式复制到另一个 .ts 文件?这些帧的分辨率通常也比我要复制的视频小。我尝试使用 VideoReDo 进行此操作,但没有成功,而且我似乎无法使其正常工作。

此外,视频重新混合到 Matrosks 后的 MediaInfo 显示如下:

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L3.2
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, RefFrames               : 2 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 2 h 35 min
Nominal bit rate                         : 6 000 kb/s
Width                                    : 896 pixels
Original width                           : 1 280 pixels
Height                                   : 504 pixels
Original height                          : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Original frame rate                      : 60.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.443
Writing library                          : x264 core 148 r2579M 73ae2d1
Encoding settings                        : cabac=1 / ref=2 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=4 / lookahead_threads=1 / sliced_threads=0 / nr=250 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=0 / weightp=1 / keyint=122 / keyint_min=12 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=2pass / mbtree=1 / bitrate=6000 / ratetol=1.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
Default                                  : Yes
Forced                                   : No

感谢您的帮助!

【问题讨论】:

  • 在进行流复制时,不能只从流的中间丢弃任何帧。充其量,您可以删除整个 GOP。
  • @Mulvya 我想删除一定大小的像素的 GOP,有没有办法检测并删除它们?
  • @MiGu3X 你是否使用多路复用的TS作为输入(多个程序)?
  • @aergistal 我下载了一个中间有 #EXT-X-DISCONTINUITY 的流(当有 ADS 时),这种不连续性似乎抛出了 Non-Monotonous DTS 警告消息并且帧大小更小(896x504) 而不是原来的 1280x720。当我尝试删除这些帧时,几乎每个程序都崩溃了,我尝试了 TSDoctor、VideoReDo、mpeg2repair,但它们似乎都没有解决这个问题。我想从原始 ts 流中删除这些较小的帧。
  • @MiGu3X 广告序列将以接近 0 的时间戳开始(因此是非单调 DTS 消息),并在原始流恢复时结束(另一个不连续性)。您可以使用此信息过滤掉超出初始时间戳范围的 TS 数据包。我不知道有任何程序可以自动执行此操作,但它相对容易编程。

标签: ffmpeg dts


【解决方案1】:

尝试通过翻录视频和音频流来修复视频文件,然后按照here的建议重新组装它们:

ffmpeg -i op.mp4 -ss 00:00:00.11 -t 00:00:06.00 -vn -y op.wav
ffmpeg -i op.mp4 -ss 0.010000 -t 00:00:06 -vcodec rawvideo -an -y op.avi
ffmpeg -i op.avi -i op.wav -b:v 590k -b:a 130k -t 00:00:06 -y op_fixed.mp4

【讨论】:

  • 通过这样做,我必须针对每个不连续性,准确检查我必须使用某些程序剪切的帧/毫秒,文件中间有很多不连续性(2 小时大约有 20 个间断的视频)。我不认为这是一个解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2019-09-18
  • 1970-01-01
  • 2014-11-06
  • 2017-08-10
相关资源
最近更新 更多