Convertir HTML5 Canvas Séquence d'un Fichier Vidéo
Je voudrais convertir une animation en HTML5 canvas pour un fichier vidéo qui peut être téléchargée sur YouTube. Est-il une sorte de capture d'écran de l'API ou quelque chose qui pourrait me permettre de le faire par programmation?
Vous devez vous connecter pour publier un commentaire.
Il existe le revers de la bibliothèque qui prétend produire des vidéos webm à partir d'images fixes à l'aide de JavaScript:
http://antimatter15.com/wp/2012/08/whammy-a-real-time-javascript-webm-encoder/
Remarque qu'il y a des limitations (comme attendu). Ce codeur se base sur le format d'image webp qui est actuellement pris en charge uniquement dans Chrome (peut-être le nouvel Opéra de trop mais je n'ai pas vérifié). Cela signifie que vous ne pouvez pas encoder dans d'autres navigateurs, à moins de trouver un moyen de coder l'image que vous voulez utiliser comme image webp (voir ce lien pour solution possible pour que).
Au-delà qu'il n'y a aucun moyen de créer un fichier vidéo à partir d'images à l'aide de JavaScript et de la toile à l'aide de navigateur natif Api.
Firefox dispose d'une fonctionnalité expérimentale (désactivé par défaut) qui est appelée HTMLCanvasElement.captureStream()
Essentiellement, il saisit la toile de l'élément de flux vidéo qui peut ensuite être envoyé à un autre ordinateur à l'aide de RTCPeerConnection() ou peut-être vous pouvez utiliser le YouTube Live Streaming API stream directement.
Voir: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/captureStream
Aussi: https://developers.google.com/youtube/v3/live/getting-started
Cela devrait vous aider, il vous permet de déposer des images qui se converti en HTML5 CANVAS et ensuite converti en vidéo webm: http://techslides.com/demos/image-video/create.html
FileSaver.js + ffmpeg en ligne de commande
Avec FilSaver.js on peut télécharger chaque toile image comme PNG: Enregistrer sur un Fichier Local de Blob
Alors que nous venons de convertir le format Png pour n'importe quel format vidéo avec ffmpeg en ligne de commande: Comment créer une vidéo à partir d'images avec FFmpeg?
Chrome 75 vous demande si vous souhaitez autoriser à enregistrer plusieurs images. Ensuite, une fois que vous dites oui, il télécharge automatiquement les images une par une, en vertu de votre dossier de téléchargement, nommé
0.png
,1.png
, etc.Il a également travaillé dans Firefox 68, mais moins bien, parce que le navigateur ouvre un tas de "voulez-vous enregistrer ce fichier" windows. Ils ont un "faire la même chose pour les mêmes téléchargements" popup, mais vous devez être rapide pour le sélectionner et appuyez sur entrée, ou bien un nouveau popup vient!
Pour l'arrêter, vous devez fermer l'onglet, ou ajouter un bouton d'arrêt et un peu de JavaScript logique.
JS:
HTML:
GitHub en amont.
Voici une image au format GIF en utilisant ceci à la place: https://askubuntu.com/questions/648244/how-do-i-create-an-animated-gif-from-still-images-preferably-with-the-command-l
Obtenir des images ignorées si le FPS est trop élevé
Cela peut être observé par la réduction de la taille de la toile dans la démo ci-dessus pour accélérer les choses. Au 32x32, mon Chrome 77 télécharger en morceaux d'environ 10 fichiers et des sauts d'environ 50 fichiers entre...
Malheureusement, il n'y a aucun moyen d'attente pour les téléchargements à la fin... fermer la fenêtre après l'enregistrement du fichier dans FileSaver.js
Donc la seule solution que je peux voir si vous avez une haute fréquence d'images framerate limite... Le contrôle de fps avec requestAnimationFrame?
Peut-être qu'un jour quelqu'un va répondre:
et ensuite, nous serons en mesure de télécharger la vidéo directement!
Ici est une version d'OpenGL si vous décidez que le navigateur n'est pas pour vous 🙂 Comment utiliser GLUT/OpenGL pour le rendu d'un fichier?
Testé sur Ubuntu, 19.04.