2010-09-24 4 views
7

J'essaie de construire une application dans laquelle je dois diffuser les fichiers multimédias (audio et vidéo) dans le navigateur. Je lis le fichier par php et envoie les données au navigateur. J'utilise le code suivant.Comment diffuser un fichier multimédia en utilisant PHP?

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header("Content-Type: {$file->getMimetype()}"); 
header("Content-Disposition: inline; filename=".$filename.";"); 
header("Content-Length: ".strlen($file_content)); 

echo $file_content; 

Tout fonctionne bien, sauf quand je tente de transmettre la vidéo ou audio, (je veux dire supposons que l'emplacement de jeu en cours est 00h15 et directement aller à 01h25), arrête les médias et quand i appuyez à nouveau sur le bouton de lecture, cela recommence depuis le début.

Je pense que le problème est avec la mise en mémoire tampon, mais ne peut pas comprendre. Est-ce que je fais quelque chose de mal en en-tête ou autre chose est nécessaire.

Merci.

+0

Je préfère Flash-streaming;), moins filesize = chargement plus rapide .. Aussi plus facile à intégrer dans un site Web. – Jordy

+3

@Jordy AFAIK Flash ne fait pas la diffusion en continu du serveur. Vous avez toujours besoin d'un script côté serveur pour diffuser un flv sinon vous devrez attendre que le fichier entier soit chargé avant de pouvoir l'afficher. –

+1

suite que vous pouvez avancer rapidement: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

Répondre

5

Je pense que vous devez implémenter l'en-tête Range, afin que le client puisse passer à une position spécifique dans le fichier. Vous pouvez probablement savoir ce qui ne va pas par sniffing the request le joueur envoie.

+0

Est-ce la propriété des joueurs pour envoyer quelle position chercher, je veux dire dois-je mettre le script dans le joueur doit spécifier la position de recherche et l'envoyer ensuite au serveur. –

+0

le lien est mort maintenant. –

+0

Mais l'archive fonctionne: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

je suis tombé sur cette récemment qui peut vous aider:

http://www.jasny.net/articles/how-i-php-x-sendfile/

Plutôt que de passer le fichier entier par PHP (qui mange de la mémoire), vous pouvez utiliser x-sendfile. C'est un module Apache qui vous permet d'exécuter un programme PHP, mais de transmettre le contrôle au serveur web pour gérer le téléchargement du fichier une fois que votre code a fait ce qu'il doit faire (authentification, etc).

Cela signifie que votre code PHP n'a pas à s'inquiéter de la façon dont le fichier est servi; Laissez le serveur Web faire ce pour quoi il est conçu.

Espérons que ça aide.

Questions connexes