2 votes

Transférer les images vidéo par morceaux, puis les recombiner ?

J'espère que tout le monde va bien. J'ai vraiment besoin de votre aide. Mon scénario est donné ci-dessous.

1-Je reçois des données continues (tableau d'octets[]) de ma caméra. 2-J'envoie maintenant ces byte[] par UDP mais je dois diviser ce tableau par deux car je ne peux pas envoyer un tableau aussi grand. (P.S. Je ne peux pas utiliser JMF car il n'est pas supporté par mon appareil (côté serveur) donc je dois envoyer les byte[] manuellement par UDP). 3-Je reçois ces morceaux d'octets [] du côté client.

J'ai maintenant le besoin suivant.

-Je veux un lecteur côté client qui joue mes morceaux d'octets [] mais de manière continue (côté client, je peux utiliser JMF).

Maintenant, je ne sais pas comment combiner tous ces morceaux de byte[] du côté client pour que ma vidéo soit lue en continu.

Aidez-moi, comme vous le faites toujours.

Meilleures salutations ZB

0voto

barti_ddu Points 5423

En option, vous pouvez envisager vlcj pour le streaming vidéo.

Exemples comment diffuser des médias à partir d'une caméra avec le lecteur VLC, qui pourrait également vous intéresser.

0voto

JamieDainton Points 155

Si vous transmettez par UDP, je suppose que vous êtes au courant des avertissements standard concernant les paquets ordonnés et abandonnés.

J'enverrais les données de la manière suivante.

Définir un format de datagramme comportant un en-tête et une charge utile, l'en-tête étant quelque chose d'assez simple, tel que

<packetnumber><timestamp><payloadlength>
<payload>

Vous créez donc un chunk qui est un tableau d'octets, vous calculez la longueur de la charge utile, le numéro du paquet en cours et l'horodatage avant d'ajouter le chunk. Puis vous transmettez l'ensemble du tableau et lorsqu'il est reçu, vous pouvez supprimer le numéro de paquet, l'horodatage et utiliser la longueur de la charge utile pour récupérer les données.

Puis charger la charge utile dans le tampon. Je serais tenté de créer un objet ayant le numéro de paquet comme clé et un tableau d'octets, puis d'avoir une liste doublement liée de ces objets comme tampon. Vous utilisez le numéro de paquet pour voir où insérer dans la liste et pour la lecture, vous récupérez l'objet avec le numéro de paquet le plus bas.

Vous devrez définir certaines données de contrôle pour la réinitialisation du numéro de paquet, etc. et le contrôle de flux.

J'ai peut-être rendu les choses plus complexes en ignorant les bibliothèques communes, mais c'est la logique que je suivrais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X