mirror of https://git.ffmpeg.org/ffmpeg.git
rtmp: Implement check bandwidth notification.
According to the behaviour of librtmp, it is recommended to send this message to the server after receiving the 'onBWDone' callback in order to do bandwidth checking and improve compatibility with some servers.
This commit is contained in:
parent
05945db9ce
commit
d55961fa82
|
@ -372,6 +372,25 @@ static void gen_server_bw(URLContext *s, RTMPContext *rt)
|
|||
ff_rtmp_packet_destroy(&pkt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate check bandwidth message and send it to the server.
|
||||
*/
|
||||
static void gen_check_bw(URLContext *s, RTMPContext *rt)
|
||||
{
|
||||
RTMPPacket pkt;
|
||||
uint8_t *p;
|
||||
|
||||
ff_rtmp_packet_create(&pkt, RTMP_SYSTEM_CHANNEL, RTMP_PT_INVOKE, 0, 21);
|
||||
|
||||
p = pkt.data;
|
||||
ff_amf_write_string(&p, "_checkbw");
|
||||
ff_amf_write_number(&p, ++rt->nb_invokes);
|
||||
ff_amf_write_null(&p);
|
||||
|
||||
ff_rtmp_packet_write(rt->stream, &pkt, rt->chunk_size, rt->prev_pkt[1]);
|
||||
ff_rtmp_packet_destroy(&pkt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate report on bytes read so far and send it to the server.
|
||||
*/
|
||||
|
@ -691,6 +710,8 @@ static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt)
|
|||
if (!t && !strcmp(tmpstr, "NetStream.Play.Stop")) rt->state = STATE_STOPPED;
|
||||
if (!t && !strcmp(tmpstr, "NetStream.Play.UnpublishNotify")) rt->state = STATE_STOPPED;
|
||||
if (!t && !strcmp(tmpstr, "NetStream.Publish.Start")) rt->state = STATE_PUBLISHING;
|
||||
} else if (!memcmp(pkt->data, "\002\000\010onBWDone", 11)) {
|
||||
gen_check_bw(s, rt);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue