2011-01-02 1 views
1

J'ai une servlet java java qui, lorsqu'elle est demandée, démarre une conversion en direct d'un fichier vidéo en utilisant ffmpeg et l'envoie à mediastreamsegmenter pour le segmenter pour le streaming live http. Ce que je veux c'est que la servlet java retourne l'url du fichier index dès qu'il a été généré (après l'écriture du fichier du 4ème flux de transport) afin que l'utilisateur puisse commencer à regarder la vidéo sans attendre la fin de la conversion. Comment je pensais y parvenir était de passer une commande dans l'argument -file-complete-command de mediastreamsegmenter, et de l'appeler une sorte de commande qui pourrait dire au servlet java de renvoyer sa réponse si le dernier le fichier complété était le fichier d'index. Une autre idée que j'avais consistait à simplement segmenter les 30 premières secondes de la vidéo, puis renvoyer la réponse et ajouter le reste de la vidéo dans une sorte de tâche d'arrière-plan dans la servlet. Je ne suis pas sûr de savoir comment cela serait fait. Puis-je créer un thread séparé pour effectuer cette conversion qui continuera à s'exécuter après le retour du servlet? Je suis sûr qu'il doit y avoir une meilleure façon de faire. Toute réflexion sera apprécié.Dites à une servlet java quand revenir d'un appel de ligne de commande externe

Répondre

0

Je ne suis pas vraiment dans le streaming vidéo, mais pourriez-vous démarrer un Thread (appelé PARSE_THREAD) qui fait l'analyse et dire au servlet (vivant dans SERVLET_THREAD) d'attendre un temps raisonnable? Je pense que la conversion de ffmpeg prend environ le même temps pour analyser les 30 premières secondes, donc vous démarrez le PARSE_THREAD, puis dormez le SERVLET_THREAD pendant ce temps et laissez le servlet démarrer le streaming. L'utilisation d'un thread séparé est une bonne solution pour ce problème.

1

Je dirais que vous avez certainement besoin d'un fil séparé pour une telle tâche. Pourquoi "doit-il y avoir" un meilleur moyen?

+0

Cela ne semble pas être un comportement supporté par mediastreamsegmenter. Au cours de tous mes tests lorsque je segment la première partie d'un fichier, puis segmenter la seconde partie avec une commande différente, il écrase le fichier d'index généré par la première commande. Je pourrais théoriquement créer mon propre mediastreamsegmenter qui supporte ce comportement, mais je préférerais ne pas le faire si possible. – Morgan

Questions connexes