Kezdőoldal » Számítástechnika » Programozás » Miért így töltődik be a videó?

Miért így töltődik be a videó?

Figyelt kérdés

Ha érkezik egy http kérés mondjuk GET /video.mp4 én így visszaküldöm a videót:

int fdimg = open("video.mp4", O_RDONLY);

write(fd_client, "HTTP/1.0 200 OK\r\nContent-Type: video/mp4\r\n\r\n", 44);

fstat(fdimg, &fbuf);

sendfile(fd_client, fdimg, NULL, fbuf.st_size);

close(fdimg);


És az lenne a probléma ezzel, hogy míg a böngésző meg nem kapja a teljes videót ami pl. 300MB addig nem indítja el a videót sem.

Ez miért lehet?

Úgy, hogy lehetne megoldani mint ahogy youtubeon is van, ha rámegyek egy videóra nem kell megvárni míg teljesen betöltődik a videó hanem elkezdi lejátszani amit már betöltött.



2018. jan. 16. 18:47
 1/2 anonim ***** válasza:
Mert a sendfile egy egész file átküldésére való. Streameléshez részletekben kell beolvasnod és kiírnod az adatot, minden szakasz után ürítve a puffert (flush).
2018. jan. 16. 19:08
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

Valahogy így kellene?


int fdimg = open("video.mp4", O_RDONLY);

char file_data[512]="";

int bytes = 0;

write(fd_client, "HTTP/1.0 200 OK\r\nContent-Type: video/mp4\r\n\r\n", 44);

while((bytes = read(fdimg, file_data, sizeof(file_data))) > 0)

{

write(fd_client, file_data, bytes);

}

close(fdimg);

2018. jan. 16. 23:51

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!