mpjpeg: video streaming will no longer break and stop on Firefox
mpjpeg video streamings would break and stop on Firefox after 1 - 30 seconds. In order to fix this, two changes were made: 1. Replaced all occurrences of '\n' character in mjpeg metadata with occurences of "\r\n". 2. Added "Content-length: <packet-size>" metadata entry for each sent frame. The change has been tested on Google Chrome 17.0.963.78 and Firefox 10.0.2 on lubuntu 11.10 and the streaming seems to work fine now.
This commit is contained in:
parent
2ff540a0fe
commit
0d2f4eedc8
@ -28,7 +28,7 @@ static int mpjpeg_write_header(AVFormatContext *s)
|
||||
{
|
||||
uint8_t buf1[256];
|
||||
|
||||
snprintf(buf1, sizeof(buf1), "--%s\n", BOUNDARY_TAG);
|
||||
snprintf(buf1, sizeof(buf1), "--%s\r\n", BOUNDARY_TAG);
|
||||
avio_write(s->pb, buf1, strlen(buf1));
|
||||
avio_flush(s->pb);
|
||||
return 0;
|
||||
@ -38,11 +38,14 @@ static int mpjpeg_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
{
|
||||
uint8_t buf1[256];
|
||||
|
||||
snprintf(buf1, sizeof(buf1), "Content-type: image/jpeg\n\n");
|
||||
snprintf(buf1, sizeof(buf1), "Content-type: image/jpeg\r\n");
|
||||
avio_write(s->pb, buf1, strlen(buf1));
|
||||
|
||||
snprintf(buf1, sizeof(buf1), "Content-length: %d\r\n\r\n", pkt->size);
|
||||
avio_write(s->pb, buf1, strlen(buf1));
|
||||
avio_write(s->pb, pkt->data, pkt->size);
|
||||
|
||||
snprintf(buf1, sizeof(buf1), "\n--%s\n", BOUNDARY_TAG);
|
||||
snprintf(buf1, sizeof(buf1), "\r\n--%s\r\n", BOUNDARY_TAG);
|
||||
avio_write(s->pb, buf1, strlen(buf1));
|
||||
avio_flush(s->pb);
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user