首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Live555 fMaxSize和FFMPEG

Live555 fMaxSize和FFMPEG
EN

Stack Overflow用户
提问于 2013-12-11 04:25:45
回答 1查看 2.6K关注 0票数 2

我已经构建了一个版本的Live555,它使用FFMPEG对视频进行编码并在RTSP上进行流。

基本上,它可以工作,但RTSP流非常紧张。

我进一步研究了它,结果发现Live555的最大缓冲区大小(fMaxSize)太小,而Live555正在截断帧,如下所示:

代码语言:javascript
复制
/* This should never happen, but check anyway.. */
if (newFrameSize > fMaxSize) {
  fFrameSize = fMaxSize;
  fNumTruncatedBytes = newFrameSize - fMaxSize;
} else {
  fFrameSize = newFrameSize;
}

现在,我几乎无法控制来自FFMPEG的数据包有多大,我可以设置较低的比特率,但是质量很高,而且数据包仍然太大!

基本上,FFMPEG决定每个帧在这里有多大:

代码语言:javascript
复制
int reti = avcodec_encode_video2(m_c, &pkt, m_frame, &got_packet);

如果pkt.size > fMaxSize,那么该帧将被截断,Live555将填充视频流,这一直是这样做的。另外,FFMPEG有时决定对帧进行缓冲,这样数据包就可以大于一个帧。

我可以试着告诉Live555增加它的缓冲区大小,但是它完全忽略了它:

代码语言:javascript
复制
OutPacketBuffer::maxSize = 100000;

还有其他人有办法正确地传输编码视频吗?我已经尝试过分解数据包并将它们以较小的块传递给Live555,但是它不起作用,如果我发送更多的数据包,Live555就会降低它的fMaxSize。

我的密码在这里:

https://dl.dropboxusercontent.com/u/15883001/Code.zip

在这里可以看到RTSP流正在发生的一些图像,您可以在更详细的图像中看到LIVE555很难正确发送数据包:

https://dl.dropboxusercontent.com/u/15883001/vlcsnap-2013-12-12-09h34m30s225.zip

在黑白图像中,帧大小为117000字节,小于最大帧大小300000。

在铁彩色图像中,帧大小为212000字节。

在彩虹彩色图像中,帧大小为322000字节,大于最大帧大小300000,并且被截断,从而导致在示例图像中看到的结果。

任何帮助都将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 08:11:29

您需要对数据进行正确的打包。Live555已经拥有了一切。看看它是如何工作的,方法是从一个文件中读取,将它打包到rtp,然后发送它。这里唯一的区别是,您从编码器而不是文件中获取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20510484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档