live555直播时如何使用流中的采样时间当做时间戳

hanzhi08160306 2016-08-03 09:01:29
怎么把音视频的采样时间赋值成时间戳????在得到音视频流是对fPresentationTime进行赋值了,但是MPEGVideoStreamFramer::continueReadProcessing()把这个值丢了,使用parse()中自己算的时间戳,如何才能把流里面的时间赋值给真正的时间戳
...全文
2625 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
天之灬饺子 2019-08-27
  • 打赏
  • 举报
回复
说的有点问题哈,没有直接赋值直接赋值给fPresentationTime了,需要把那个注释打开,然后赋值一下,然后再继承setPresentationTime,重写一下就行
天之灬饺子 2019-08-27
  • 打赏
  • 举报
回复
这个其实 (*(source->fAfterGettingFunc))(source->fAfterGettingClientData,
source->fFrameSize, source->fNumTruncatedBytes,
source->fPresentationTime,
source->fDurationInMicroseconds);已经将时间直接赋值给fPresentationTime了,但是后面被覆盖了setPresentationTime,这个函数是可以继承的,只要继承这个函数,不让他工作即可
秃头胖胖怪 2017-11-29
  • 打赏
  • 举报
回复
群主搞定了吗 我也遇到这个问题 如果可以 请您加一下我QQ 892868304
yuanzhenhai 2016-09-22
  • 打赏
  • 举报
回复
上面的回复有个乱码, 把 -> 识别成 >了, 我传的duration = 当前帧的gettimeofday - 上一帧的gettimeofday。
yuanzhenhai 2016-09-22
  • 打赏
  • 举报
回复
在视频帧率不稳定的时候有必要自己算时间戳,我的是这样算的,通过传duration过去,重新计算fFrameRate。 1. 在class StreamParser 添加一个公有的数据成员 unsigned duration。 2. duration的赋值:

void StreamParser::afterGettingBytes(void* clientData,
				     unsigned numBytesRead,
				     unsigned /*numTruncatedBytes*/,
				     struct timeval presentationTime,
				     unsigned durationInMicroseconds){
  StreamParser* parser = (StreamParser*)clientData;
  if (parser != NULL)
  {
	  parser->duration = durationInMicroseconds;
	  //parser->fFrameRate = 1000000/durationInMicroseconds;
	  parser->afterGettingBytes1(numBytesRead, presentationTime);
  }
}
3. 重新计算fFrameRate:

void MPEGVideoStreamFramer::continueReadProcessing() {
	fFrameRate = 1000000/fParser->duration;
  unsigned acquiredFrameSize = fParser->parse();
  if (acquiredFrameSize > 0) {
hanzhi08160306 2016-08-05
  • 打赏
  • 举报
回复
之前的有问题,如果只有视频的话是正常的,但是加上音频后播放几秒就会出现视频卡死,音频播放正常的问题,客户端使用的是音频同步视频,现在就是想把音频加上,大神你们都是怎么添加音频的,或者音视频同步的
rightorwrong 2016-08-05
  • 打赏
  • 举报
回复
若之前播放没问题,就按默认的好了
hanzhi08160306 2016-08-05
  • 打赏
  • 举报
回复
就是有点问题,我修改了continueReadProcessing的接口把时间戳传递进来用来代替根据帧率计算的时间戳,但是音视频播放几个小时就会出现视频卡死的问题,再重新连接也连不上。那么问题来了,咨询一下大神你们都是怎么来传递音视频并且进行同步的
rightorwrong 2016-08-05
  • 打赏
  • 举报
回复
就应该是根据帧率计算的,你自己把哪里程序改成自己想要的。然后编译 按照你设置的时间错播放可能会有问题
hanzhi08160306 2016-08-04
  • 打赏
  • 举报
回复
直接在MPEGVideoStreamFramer::continueReadProcessing里把传进来的值丢弃了,在H264or5VideoStreamParser::parse()中根据当前帧率计算出来的,现在想把码流中采集的时间传进来,不用计算出来的时间戳,这个应该怎么做?
rightorwrong 2016-08-04
  • 打赏
  • 举报
回复
调试下看哪里重新赋值的,是不是有if条件判断语句

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧