Avconv 无法生成 PTS 时间戳



我正在从静止图像生成H264流,如下所示:

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

当尝试多路复用到马特罗斯卡时

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 流。 我到底该怎么做到!?

我还在处理从经常丢失/错误 PTS 信息的 IP 摄像头录制的视频,因此我应该能够在将它们放入 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 9.16-6:9.16 上运行 avconv 14.04。

开始变得绝望。

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

尝试

mkvmerge -o output.mkv in.mkv

相关内容

  • 没有找到相关文章

最新更新