【问题标题】:Avconv fails to generate PTS timestampsAvconv 无法生成 PTS 时间戳
【发布时间】:2015-03-13 20:37:51
【问题描述】:

我正在从这样的静止图像生成 H264 流:

avconv -y -r 25 -i dummy_%d.tif dummy.h264

当尝试使用

多路复用到 matroska 时
avconv -i dummy.h264 -c:v copy dummy.mkv

我收到以下错误:

[matroska @ 0x8c1860] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument

所以,avconv 没有为帧生成时间戳,并且由于 matroska 需要它们进行索引,所以多路复用失败了,对吧?

股票视频播放器在尝试生成流时同样发疯:

mplayer dummy.h264

No pts value from demuxer to use for frame!
Video pts after filters MISSING
V: ???     0/  0 ??% ??% ??,?% 0 0 

mpv dummy.h264

No video PTS! Making something up.
V: 00:00:00 / 00:00:00 (77%)

现在,如果我这样做:

avconv -i dummy.h264 dummy.mkv

这确实有效,但 matroska 容器内的原始 H264 流仍然缺少 PTS 信息..!可以通过“avconv -i dummy.mkv test.h264”等来确认这一点。

对于我正在做的特定项目,我需要具有正确 PTS 信息的原始 H264 流。我到底怎么才能做到这一点!?

我还在处理从 IP 摄像头录制的视频,这些视频经常丢失/错误的 PTS 信息,所以我应该能够在将它们放入 matroska 容器之前更正它们的 PTS - 否则多路复用失败,即问题是相同的到这里描述的用于从静止图像生成视频的方法。

到目前为止,我已经尝试过视频生成:

avconv -y -fflags +genpts -r 25 -i dummy_%d.tif dummy.h264

avconv -y -fflags genpts -r 25 -i dummy_%d.tif -fflags genpts dummy.h264

对于多路复用:

avconv -y -r 25 -i dummy.h264 -r 25 -fflags genpts -filter:v "setpts=PTS-STARTPTS" dummy2.h264

avconv -fflags +genpts -i dummy.h264 -c:v copy dummy.mkv

avconv -y -r 25 -fflags +genpts -i dummy.h264 -c:v copy dummy.mkv

.. 以及更多的排列方式。

没有任何作用! ..它开始对我来说似乎是一个错误。我在 Ubuntu 14.04 上运行 avconv 9.16-6:9.16。

开始绝望了。

有没有人成功地用 avconv 生成 PTS?

【问题讨论】:

    标签: timestamp h.264 avconv multiplexing matroska


    【解决方案1】:

    试试

    mkvmerge -o output.mkv in.mkv
    

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多