diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index ec4b0e73f3..77a801d11c 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -2213,7 +2213,7 @@ static int append_flv_data(RTMPContext *rt, RTMPPacket *pkt, int skip) bytestream2_put_byte(&pbc, ts >> 24); bytestream2_put_be24(&pbc, 0); bytestream2_put_buffer(&pbc, data, size); - bytestream2_put_be32(&pbc, 0); + bytestream2_put_be32(&pbc, size + RTMP_HEADER); return 0; } @@ -2363,8 +2363,9 @@ static int handle_metadata(RTMPContext *rt, RTMPPacket *pkt) bytestream_put_be24(&p, ts); bytestream_put_byte(&p, ts >> 24); memcpy(p, next, size + 3 + 4); + p += size + 3; + bytestream_put_be32(&p, size + RTMP_HEADER); next += size + 3 + 4; - p += size + 3 + 4; } if (p != rt->flv_data + rt->flv_size) { av_log(NULL, AV_LOG_WARNING, "Incomplete flv packets in " @@ -2554,7 +2555,7 @@ static int inject_fake_duration_metadata(RTMPContext *rt) // Finalise object bytestream_put_be16(&p, 0); // Empty string bytestream_put_byte(&p, AMF_END_OF_OBJECT); - bytestream_put_be32(&p, 40); // size of data part (sum of all parts below) + bytestream_put_be32(&p, 40 + RTMP_HEADER); // size of data part (sum of all parts above) return 0; }