h264流混叠:产生的文件持续时间比录制时间短。

问题描述 投票:2回答:1

我正在使用下面概述的方法将H264流从v4l设备转到avi容器中。stackoverflow问题

结果文件是可以播放的,但是(比如说)30秒的录音,结果文件只有10秒长。换句话说,一旦我按下 "开始录制 "按钮,直到我按下 "停止 "录制,已经过了30秒,但文件只有10秒长(如Windows媒体播放器所示)。一旦我按下 "开始录制 "按钮,Muxing就立即开始。

有什么办法可以解决这个问题吗?

h.264 muxer
1个回答
0
投票

问题出在fps参数上。

AVStream *pst = avformat_new_stream(fc, 0);
  vi = pst->index;

  AVCodecContext *pcc = pst->codec;
  _M;
  avcodec_get_context_defaults3(pcc, AVMEDIA_TYPE_VIDEO);
  pcc->codec_type = AVMEDIA_TYPE_VIDEO;

  pcc->codec_id = codec_id;
  pcc->bit_rate = br;
  pcc->width = w;
  pcc->height = h;
  pcc->time_base.num = 1;
  int fps = 30; // problem here
  pcc->time_base.den = fps;

事实证明,H264流产生13帧fps。一旦我让fps=13,文件的持续时间变得与预期时间一致。

© www.soinside.com 2019 - 2024. All rights reserved.