use-play.ts 833 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import flvJs from 'flv.js';
  2. import { onMounted, onUnmounted, ref } from 'vue';
  3. export function useFlvPlay() {
  4. const flvPlayer = ref();
  5. onMounted(() => {});
  6. onUnmounted(() => {
  7. if (flvPlayer.value) {
  8. flvPlayer.value.destroy();
  9. }
  10. });
  11. async function startPlay(data: {
  12. flvurl: string;
  13. videoEl: HTMLVideoElement;
  14. }) {
  15. if (flvPlayer.value) {
  16. flvPlayer.value.destroy();
  17. }
  18. if (flvJs.isSupported()) {
  19. const player = flvJs.createPlayer({
  20. type: 'flv',
  21. url: data.flvurl,
  22. });
  23. player.attachMediaElement(data.videoEl);
  24. player.load();
  25. try {
  26. await player.play();
  27. flvPlayer.value = player;
  28. } catch (err) {
  29. console.log(err);
  30. }
  31. } else {
  32. console.error('不支持flv');
  33. }
  34. }
  35. return { startPlay };
  36. }