Question

Je regarde une émission de télévision sur Hulu.com (qui est d'ailleurs, le meilleur site de vidéo en streaming absolu autour) et si je ferme mon navigateur, vous déconnecter d'Internet, et même si je redémarrer mon ordinateur au milieu de regarder un spectacle, la prochaine fois que je vais à leur site, je peux reprendre la télé à partir exactement le moment où je l'ai laissé dans le spectacle.

Ma question est du point de vue de la programmation web détaillée, comment peuvent-ils y parvenir? Je suppose que ce n'utilise pas des séances parce que je ne pense pas que cela fonctionnerait si je redémarré mon ordinateur. S'il utilise les cookies, alors comment peuvent-ils mettre à jour constamment le cookie avec votre emplacement dans un spectacle?

Pour recevoir la prime ci-joint, s'il vous plaît inclure des exemples de code dans de préférence Java / JSP (PHP est ok aussi) de la façon de créer le cookie et un extrait de code côté serveur qui permettrait de la position du spectateur mis à jour.

merci!

Était-ce utile?

La solution

Une façon simple est que le joueur peut mettre à jour votre cookie (s) via JavaScript, et que la fonction JavaScript peut être appelé tous les n secondes par le lecteur Flash:

<script type="text/javascript">
    function UpdateViewData(videoId, time)
    {
        //for a video with id 12345, sets a cookie called:
        //hulu12345 with a value of the position
        var cookieData = 'hulu' + videoId + '=' + time + '; expires=' + getDate() + ';path=/';
        document.cookie = cookieData;
    }
</script>

Dans le lecteur Flash, ActionScript peut invoquer le JavaScript fréquemment pour obtenir une mise à jour assez précise de l'endroit où le joueur était la dernière fois que le cookie a été défini. Chaque fois qu'il est appelé, il remplace le cookie avec des données mises à jour:

import flash.external.ExternalInterface;

//in flash video player code,
//have variables for video ID and current player position
//every 5 seconds, call:
ExternalInterface.call("UpdateViewData", videoId, currentPlayerPosition);

//this will invoke a JS function on the host page named "UpdateViewData"
//and pass in the provided arguments

Lorsque vous revisitez la page, la première chose que le serveur n'est de vérifier pour voir si vous avez un cookie appelé « hulu {ID de vidéo} » et le cas échéant, la valeur de ce cookie est la position réglée dernière fois que vous étiez le visionnement.

Encore une fois (comme indiqué au début) c'est une façon très simple d'accomplir ce que vous demandez. Je trouve la meilleure façon d'apprendre est d'aller avec une simple mise en œuvre, puis ajouter de la complexité une fois que le cas le plus simple est bien comprise. Hulu fait probablement des mises à jour périodiques dans les coulisses en utilisant AJAX. (En fait, si vous regardez le trafic net tout en regardant une vidéo en utilisant quelque chose comme Firebug , vous verrez des appels occasionnels à http://t2.hulu.com/v3/playback/position?...).

Autres conseils

Flash dispose de son propre mécanisme comme cookie:. Local Shared Object

Il y a quelques ici . J'imagine que Hulu crée juste un LSO et il met à jour périodiquement la position dans le film. Lorsque le film est ensuite chargé, il peut obtenir le LSO et restaurer la position. Sinon, ils pourraient stocker un identifiant unique et enregistrez le côté serveur positions.

Ils peuvent écrire un cookie avec une pièce d'identité d'enregistrement, puis magasin où vous étiez lorsque votre session est parti sur le serveur. Ils peuvent savoir où vous êtes en ayant le client renvoyer un ack si souvent que chaque dit: « Oui, je l'ai joué jusqu'à temps T ».

Alors quand vous revenez, ils utilisent l'ID d'enregistrement dans le cookie de rechercher dans leur base de données où vous étiez. Peu importe comment vous déconnecter, ils savent encore la connexion est parti.

Je suis juste deviner, mais ils stockent probablement la position sur la fin du serveur. Quand vous allez à reprendre regarder quelque chose, il envoie la dernière position enregistrée en tant que CV-de timestamp?

La page que vous êtes en envoie probablement de temps en temps des paquets d'état au serveur, lui indiquant votre horodatage actuel. Lorsque la connexion est interrompue, la dernière valeur enregistrée est utilisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top