Maison interface Web Questions et réponses frontales Comment ajouter du texte aux clips de vue

Comment ajouter du texte aux clips de vue

May 08, 2023 am 09:44 AM

Vue est un framework JavaScript populaire qui peut être utilisé pour développer des applications Web hautement réactives. L'édition et l'ajout de texte sont des processus essentiels à la création de vidéos et d'animations. Dans Vue, ces fonctions peuvent être facilement implémentées à l'aide de plugins tiers ou de composants personnalisés. Ci-dessous, nous expliquerons comment utiliser le plug-in Vue-Video-Player et les composants Vue personnalisés dans Vue pour réaliser les fonctions d'édition et d'ajout de texte.

1. Utilisez le plug-in Vue-Video-Player pour modifier et ajouter du texte

Vue-Video-Player est une bibliothèque de lecteur vidéo HTML5 facile à utiliser qui fournit une API flexible et des composants d'interface utilisateur. Nous pouvons utiliser Vue-Video-Player pour éditer et ajouter du texte. Voici les étapes spécifiques :

1. Installez Vue-Video-Player

Dans le projet Vue, nous pouvons utiliser le gestionnaire de packages npm pour installer Vue-Video. - Joueur. Entrez la commande suivante dans le terminal pour installer :

npm install --save vue-video-player

2 Introduisez Vue-Video-Player dans le composant Vue

Dans le composant Vue, nous devons utiliser l'instruction d'importation. pour importer des fichiers Vue -Video-Player et CSS. Voici le code de référence :

<template>
<div>

&lt;video-player ref=&quot;videoPlayer&quot; :options=&quot;playerOptions&quot;&gt;&lt;/video-player&gt;
Copier après la connexion

</div>
</template>

<script>
importer VideoPlayer depuis 'vue-video-player'
import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css'

export par défaut {
composants : {

VideoPlayer
Copier après la connexion

},
data() {

return {
  playerOptions: {
    controls: true,
    autoplay: false,
    sources: [{
      src: 'your_video_url.mp4',
      type: 'video/mp4'
    }]
  }
}
Copier après la connexion

}
}
</script>

3. Utilisez Vue-Video-Player pour implémenter la fonction d'édition

Vue-Video-Player fournit une fonction de capture d'écran, que nous pouvons utiliser pour implémenter l'édition. Voici le code de référence :

this.$refs.videoPlayer.shoot()

Ce code intercepte l'image vidéo actuelle et renvoie une URL de capture d'écran. Nous pouvons définir une variable pour stocker cette URL.

4. Utilisez Vue-Video-Player pour ajouter une fonction de texte

Vue-Video-Player fournit également un composant contextuel, qui peut ajouter du texte à la vidéo. Voici le code de référence :

<template>
<div>

&lt;video-player ref=&quot;videoPlayer&quot; :options=&quot;playerOptions&quot;&gt;&lt;/video-player&gt;
<popup :show.sync="showPopup">
    <textarea v-model="text"></textarea>
    <button v-on:click="addText">Add</button>
</popup>
Copier après la connexion

</div>
</template>

<script>
import { Popup } from 'vue-video-player '

export default {
composants : {

Popup
Copier après la connexion
Copier après la connexion

},
data () {

return {
  playerOptions: {
    controls: true,
    autoplay: false,
    sources: [{
      src: 'your_video_url.mp4',
      type: 'video/mp4'
    }]
  },
  showPopup: false,
  text: '',
  style: {
    position: 'absolute',
    top: '50%',
    left: '50%',
    fontSize: '30px'
  }
}
Copier après la connexion

},
méthodes : {

addText () {
  const video = this.$refs.videoPlayer.video
  const canvas = document.createElement('canvas')
  canvas.width = video.videoWidth
  canvas.height = video.videoHeight
  const ctx = canvas.getContext('2d')
  ctx.drawImage(video, 0, 0)
  ctx.font = this.style.fontSize + ' Arial'
  ctx.fillStyle = '#fff'
  const x = canvas.width / 2 - ctx.measureText(this.text).width / 2
  const y = canvas.height / 2 + this.style.fontSize / 2
  ctx.fillText(this.text, x, y)
  const imgUrl = canvas.toDataURL('image/png')
  this.$refs.videoPlayer.addText(imgUrl, this.style)
  this.showPopup = false
}
Copier après la connexion

}
}
</script>

Dans le code ci-dessus, nous utilisons le composant contextuel pour créer une boîte contextuelle pour modifier le texte et lier des variables de texte à l'aide de textarea. Dans la méthode addText, nous ajoutons du texte à l'image vidéo à l'aide de l'élément canvas et transmettons l'URL de l'image générée à la fonction addText de Vue-Video-Player.

2. Utilisez des composants Vue personnalisés pour implémenter l'édition et l'ajout de texte

En personnalisant les composants Vue, nous pouvons réaliser l'édition et l'ajout de texte de manière plus flexible. Voici les étapes spécifiques :

1. Créer un composant Vue

Dans le composant Vue, nous pouvons utiliser l'élément vidéo pour lire la vidéo et l'élément canevas pour éditer l'image vidéo. Voici le code de référence :

<template>
<div>

&lt;video ref=&quot;video&quot; :src=&quot;videoUrl&quot; controls&gt;&lt;/video&gt;
&lt;canvas ref=&quot;canvas&quot; :width=&quot;videoWidth&quot; :height=&quot;videoHeight&quot; v-on:mousedown=&quot;onMouseDown&quot; v-on:mousemove=&quot;onMouseMove&quot; v-on:mouseup=&quot;onMouseUp&quot;&gt;&lt;/canvas&gt;
&lt;button v-on:click=&quot;shoot&quot;&gt;Clip&lt;/button&gt;
&lt;button v-on:click=&quot;showPopup = true&quot;&gt;Add Text&lt;/button&gt;
&lt;popup :show.sync=&quot;showPopup&quot;&gt;
  &lt;textarea v-model=&quot;text&quot;&gt;&lt;/textarea&gt;
  &lt;button v-on:click=&quot;addText&quot;&gt;Add&lt;/button&gt;
&lt;/popup&gt;
Copier après la connexion

</div>
</template>

<script>
import { Popup } from './Popup.vue '

export par défaut {
composants : {

Popup
Copier après la connexion
Copier après la connexion

},
accessoires : {

videoUrl: {
  type: String,
  required: true
}
Copier après la connexion

},
data () {

return {
  showPopup: false,
  text: '',
  startX: 0,
  startY: 0,
  endX: 0,
  endY: 0,
  videoWidth: 0,
  videoHeight: 0
}
Copier après la connexion

},
Mounted () {

const video = this.$refs.video
video.addEventListener('loadedmetadata', () =&gt; {
  this.videoWidth = video.videoWidth
  this.videoHeight = video.videoHeight
})
Copier après la connexion

},
méthodes : {

onMouseDown (event) {
  const canvas = this.$refs.canvas
  const rect = canvas.getBoundingClientRect()
  this.startX = event.clientX - rect.left
  this.startY = event.clientY - rect.top
},
onMouseMove (event) {
  const canvas = this.$refs.canvas
  const rect = canvas.getBoundingClientRect()
  this.endX = event.clientX - rect.left
  this.endY = event.clientY - rect.top
},
onMouseUp () {
  const canvas = this.$refs.canvas
  const ctx = canvas.getContext('2d')
  ctx.clearRect(0, 0, canvas.width, canvas.height)
  const video = this.$refs.video
  ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
  ctx.beginPath()
  ctx.rect(this.startX, this.startY, this.endX - this.startX, this.endY - this.startY)
  ctx.stroke()
},
shoot () {
  const canvas = this.$refs.canvas
  const ctx = canvas.getContext('2d')
  const video = this.$refs.video
  ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
  const imgUrl = canvas.toDataURL('image/png')
  window.open(imgUrl)
},
addText () {
  const canvas = this.$refs.canvas
  const ctx = canvas.getContext('2d')
  ctx.font = '30px Arial'
  ctx.fillStyle = '#fff'
  const x = canvas.width / 2 - ctx.measureText(this.text).width / 2
  const y = canvas.height / 2 + 30 / 2
  ctx.fillText(this.text, x, y)
  const imgUrl = canvas.toDataURL('image/png')
  window.open(imgUrl)
  this.showPopup = false
}
Copier après la connexion

}
}
</script>

2. Créer un composant Popup

Le composant Popup peut créer rapidement une boîte contextuelle composée d'un élément div contenant un emplacement et un bouton de fermeture. Voici le code de référence :

<template>
<div class="popup" v-show="show">

&lt;div class=&quot;popup-content&quot;&gt;
  &lt;slot&gt;&lt;/slot&gt;
  &lt;button v-on:click=&quot;$emit('update:show', false)&quot;&gt;Close&lt;/button&gt;
&lt;/div&gt;
Copier après la connexion

</div>
</template>

<script&gt ;
export default {
props : {

show: {
  type: Boolean,
  required: true
}
Copier après la connexion

}
}
</script>

Ci-dessus sont deux façons d'utiliser le plug-in Vue-Video-Player et les composants Vue personnalisés pour réaliser le découpage et l'ajout de texte. Nous pouvons choisir différentes méthodes pour mettre en œuvre les fonctions de montage vidéo en fonction des besoins réels. Grâce à ces technologies, nous pouvons créer de superbes vidéos et animations Web, offrant ainsi une expérience de montage vidéo plus flexible et personnalisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez le concept de chargement paresseux. Expliquez le concept de chargement paresseux. Mar 13, 2025 pm 07:47 PM

Expliquez le concept de chargement paresseux.

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Mar 19, 2025 pm 03:58 PM

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires?

Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Mar 18, 2025 pm 01:44 PM

Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable?

Comment fonctionne le currying en JavaScript et quels sont ses avantages? Comment fonctionne le currying en JavaScript et quels sont ses avantages? Mar 18, 2025 pm 01:45 PM

Comment fonctionne le currying en JavaScript et quels sont ses avantages?

Comment fonctionne l'algorithme de réconciliation React? Comment fonctionne l'algorithme de réconciliation React? Mar 18, 2025 pm 01:58 PM

Comment fonctionne l'algorithme de réconciliation React?

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Mar 19, 2025 pm 03:59 PM

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants?

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Mar 19, 2025 pm 04:10 PM

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements?

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Mar 19, 2025 pm 04:16 PM

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés?

See all articles