2013-04-03 1 views
0

Je développe une application pour surveiller 20 flux vidéo à la fois. Je vais avoir JFrame, et 20 boîtes (par exemple JPanel) à l'intérieur de JFrame pour afficher 20 flux. Je suis capable de charger et de décoder en utilisant xuggler, mais maintenant comment puis-je l'afficher sur Swan JPanel?Rendu vidéo sur Swing

Je suis capable de jouer du son sur SourceDataLine, mon problème est seulement, comment afficher 20 * 30 = 600 images vidéo en seconde sur le composant Swing?

De même xuggler produit des trames décodées au format de pixel YUV420P, y a-t-il un surcoût dans la conversion en RGB, la création de BufferedImage et l'affichage sur Swing Component?

Veuillez me guider à ce sujet. Je veux afficher 20 flux vidéo à la fois dans les composants swing.

+0

Vous ne pouvez pas toujours obtenir ce que vous voulez. Mais si vous essayez parfois bien, vous trouverez peut-être ce dont vous avez besoin. –

Répondre

1

Voici un code que j'ai googlé qui va convert a YUV420 file to BufferedImage frames. Vous pouvez l'utiliser comme base pour ce que vous voulez.

Vous ne pourrez probablement pas non plus traiter 600 images vidéo par seconde sur un PC. Vous devrez voir combien de trames vidéo vous pouvez convertir par seconde, et laisser tomber le reste des images. Probablement, la meilleure façon de traiter 20 flux vidéo est d'avoir 20 threads saisissant une image vidéo, convertissant la trame vidéo en BufferedImage et passant le BufferedImage à l'Event Dispatch Thread (EDT) pour que Swing puisse dessiner sur l'image correspondante. JPanel. Lorsque le fil revient pour saisir la prochaine image vidéo, vous avez automatiquement supprimé les images que le PC n'avait pas le temps de traiter.

+0

Merci pour la réponse, je suis en train d'envisager de tomber le mécanisme des cadres – UDPLover

Questions connexes