[FFmpeg-trac] #1604(undetermined:new): Rtmp streaming fps continually drops
FFmpeg
trac at avcodec.org
Wed Dec 31 21:48:39 CET 2014
#1604: Rtmp streaming fps continually drops
-------------------------------------+-------------------------------------
Reporter: Pyriel0 | Owner:
Type: defect | Status: new
Priority: normal | Component:
Version: git-master | undetermined
Keywords: rtmp | Resolution:
Blocking: | Blocked By:
Analyzed by developer: 0 | Reproduced by developer: 0
-------------------------------------+-------------------------------------
Comment (by ctetrick):
I've been looking at this issue for the last couple of weeks and have some
observations.
If I stream to live-dwf.twitch.tv/app/ The frame rate does not drop. This
server is near my location, and has a very low RTT.
If I stream to live-prg.twitch.tv/app The frame rate drops as described.
RTT is around 147ms.
I'm using an ffmpeg build with librtmp enabled.
Some people have noted that a TPC Relay app seems to help. I got similar
results.
Now, in librtmp the function RTMP_SendPacket() packets are broken up by
the default outgoing chunksize (128 bytes) and these are sent to the
socket directly. However, I noticed this code:
{{{
/* send all chunks in one HTTP request */
if (r->Link.protocol & RTMP_FEATURE_HTTP)
{
int chunks = (nSize+nChunkSize-1) / nChunkSize;
if (chunks > 1)
{
tlen = chunks * (cSize + 1) + nSize + hSize;
tbuf = malloc(tlen);
if (!tbuf)
return FALSE;
toff = tbuf;
}
}
}}}
By forcing the use of buffering with
{{{
if(TRUE)
}}}
or
{{{
if ((r->Link.protocol & RTMP_FEATURE_HTTP) ||
(packet->m_packetType == RTMP_PACKET_TYPE_VIDEO) ||
(packet->m_packetType == RTMP_PACKET_TYPE_AUDIO))
}}}
The framerate improves considerably - limited by RTT.
rogerdpack mentioned on the ffmpeg forum that librtmp turns off Nagle.
I'm no expert on TCP, but I suspect that twitch.tv's RTMP ingestion
servers still has Nagle turned on so there is still some blocking.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/1604#comment:22>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list