Υπολογισμός bandwidth για προβολή βίντεο

Ξεκίνησε από alkisg, 11 Μαρ 2009, 11:51:19 ΜΜ

« προηγούμενο - επόμενο »

alkisg

Αν παίξουμε κάποιο βίντεο με τον mplayer, θα δούμε να γράφει κάποια μηνύματα σαν τα παρακάτω:
Παράθεση
...
VIDEO:  [avc1]  640x272  24bpp  24.000 fps    0.0 kbps ( 0.0 kbyte/s)
...
VO: [xv] 640x272 => 640x272 Planar YV12
...

Εάν δούμε το [xv] σημαίνει ότι χρησιμοποιεί επιτάχυνση του υλικού για scaling της εικόνας - αυτό μας γλυτώνει και CPU αλλά και bandwidth. Εάν ΔΕΝ το δούμε, υπάρχει πρόβλημα με το module της κάρτας γραφικών που καλό θα είναι να το λύσουμε (μπορούμε να το επιβεβαιώσουμε τρέχοντας την εντολή xvinfo).

Το 640 είναι το πλάτος του βίντεο,
το 272 το ύψος του βίντεο,
το YV12 σημαίνει ότι χρειάζεται 12 bit για κάθε pixel,
και το 24 fps σημαίνει 24 εικόνες το δευτερόλεπτο.

Έτσι το συνολικό bandwidth για το συγκεκριμένο βίντεο είναι
640*272*12*24 = 50.135.040 bps (bit, όχι byte)

Εφόσον χρησιμοποιείται Xv, θα χρειάζεται 50 Mbps bandwidth ανεξάρτητα από την ανάλυση και το βάθος χρώματος της οθόνης του client, και ανεξάρτητα από το μέγεθος του παραθύρου (ακόμα κι αν το μικρύνουμε)!

Έτσι για να δουν ταυτόχρονα 10 clients αυτό το βίντεο σε πλήρη οθόνη χρειάζονται 500 Mbps - κάτι που επιτυγχάνεται εύκολα ακόμα και με αρχαίους Celerons @450 MHz και με παλιές 100Mbps κάρτες δικτύου.


Όμως, εάν πρόκειται για προβολή DVD, χρειάζονται
720*576*12*25 = 124.416.000 bps
και επομένως ακόμα και στο θεωρητικό μέγιστο να δουλεύει το δίκτυό μας, μόνο μέχρι 8 clients μπορούν να βλέπουν DVD χωρίς dropped frames.
Μπορούμε βέβαια να διπλασιάσουμε ή να τριπλασιάσουμε τον αριθμό των υποστηριζόμενων clients εάν βάλουμε 2 ή 3 κάρτες δικτύου αντίστοιχα στον server μας και τις ενώσουμε με ethernet bonding (αλλά να είναι PCI Express γιατί αλλιώς τερματίζει το bandwidth του απλού PCI bus).


Σημείωση: ο flash player συνήθως δεν χρησιμοποιεί Xv, έτσι χρειάζεται πολύ περισσότερο bandwidth για προβολή σε πλήρη οθόνη. Επομένως προβολή youtube καλύτερα να γίνεται με τον totem. :)