Jouer h265 HEVC dans un client JavaFX


J'avais une petite application JavaFX pour lire des vidéos GoPro sur un client Windows / linux. Dans le passé, j'avais en utilisant une GoPro 4. J'ai téléchargé la vidéo sur le client et l'ai lue à partir du stockage local. Comme ceci:

    File file = new File("AnyVideo.MP4");
    Media m = new Media(file.toURI().toString());
    MediaPlayer mp = new MediaPlayer(m);
    mp.setAutoPlay(true);
    mediaView.setMediaPlayer(mp);

Je vais essayer de passer à la nouvelle GoPro 6 maintenant. Mais il n'a pas fonctionné comme prévu.

Le problème est probablement que le MediaPlayer JavaFX ne supportait pas le codec de la nouvelle GoPro 6.

  • GoPro 4: h264 AVC codec vidéo
  • GoPro 6: h265 Codec vidéo HEVC

Le MediaPlayer JavaFX ne prend en charge que le codec h264 .

Est-ce que quelqu'un connaissait un moyen de lire une vidéo h265 HEVC avec mon application JavaFX. Dans le meilleur des cas, une solution qui peut lire la vidéo immédiatement à partir de la caméra sans télécharger la vidéo au client. La GoPro dispose d'un serveur multimédia smal pour obtenir la vidéo via HTTP. à titre d'exemple: http://10.5.5.9:8080/videos/DCIM/100/GPR10973.MP4

Author: mr springer, 2018-01-30

1 answers

Solution JavaFX native

Peut-être s'agit-il d'un doublon ou du moins lié à:

Voir ma réponse à cette question pour les liens vers les demandes de fonctionnalités associées dans le système de suivi des bogues JavaFX.

Solutions utilisant une technologie non JavaFX de JavaFX

Il y a d'autres solutions que celles discutées dans les réponses à cette question qui peuvent fonctionner pour vous. Surtout si votre principale préoccupation est juste d'obtenir une sorte de lecture, même si elle n'a pas d'intégration profonde avec le système multimédia JavaFX.

Par exemple, d'autres approches que la lecture JavaFX native pourraient être:

  1. En utilisantVLCJ avec une sorte d'intégration Swing (comme un SwingNode, bien que cela puisse ou non fonctionner).
  2. Rendu de la vidéo VLCJ dans une image ou une toile JavaFX.
  3. Lancez un lecteur vidéo natif si vous n'avez pas besoin de la vidéo intégrée.
  4. Appelez ffmpeg pour convertir h265 en h264.
    • Je ne sais pas grand-chose à ce sujet, mais un rapide google du sujet montre des références au xuggle projet.
    • L'état actuel du projet xuggler est:

      Xuggler est en pause car plus personne ne le développe activement. Désolé. Cela dit, vous pouvez toujours trouver le code source et commencer à vous pirater. Bonne chance!

    • Alors je vous souhaite bonne chance avec cela; -)
  5. Lancer le navigateur natif via un HostServices.showDocument () appel pour afficher la vidéo.
  6. Utilisez un composant de navigation tiers qui peut être intégré dans JavaFX et inclut la prise en charge du type de média que vous souhaitez lire, par exemple JxBrowser:

Parmi les options décrites ci-dessus, personnellement, je recommanderais d'utiliser HostServices pour lire la vidéo dans le navigateur natif si ce type de solution fonctionnera peut-être pour vous.

Entrer en détail sur diverses options est probablement hors de portée pour StackOverflow (même la liste ci-dessus commence à ressembler à un parfois mal vu recommandation de la bibliothèque).

 3
Author: jewelsea, 2018-01-30 00:56:51