Avconv无法生成PTS时间戳

时间:2015-03-13 20:37:51

标签: timestamp h.264 avconv multiplexing matroska

我正在从静止图像中生成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?

1 个答案:

答案 0 :(得分:0)

尝试

mkvmerge -o output.mkv in.mkv