Hydra69 2023-10-14 10:45 采纳率: 0%
浏览 3

js获取非mp4格式时长

问题遇到的现象和发生背景
Vue获取视频文件的时长
网上搜索出来的结果大多是这个使用 new Audio() 返回HTMLAudioElement ,再获取其时长。

我想要达到的结果
使用这个方法确实能实现,但是只能获取到mp4格式的视频长度。avi、ts等其他格式获取不到

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 12:52
    关注

    【以下回答由 GPT 生成】

    如何在Vue.js中获取非mp4格式视频的时长?

    这个问题需要使用一些第三方库来获取非mp4格式视频的时长。下面是一种可能的解决方案:

    1. 安装ffmpeg:使用ffmpeg可以获取视频的时长信息。你可以根据操作系统的不同,选择合适的安装方式。可以通过以下命令验证是否安装成功:ffmpeg -version

    2. 安装依赖:为了在Vue.js中使用ffmpeg,我们需要安装fluent-ffmpeg@ffmpeg-installer/ffmpeg这两个库。在终端中执行以下命令:

    npm install fluent-ffmpeg @ffmpeg-installer/ffmpeg
    
    1. 创建一个工具类:在Vue.js中创建一个DurationUtils.js文件,用来封装获取视频时长的方法。
    import ffmpeg from 'fluent-ffmpeg';
    
    export default {
      getVideoDuration(videoPath) {
        return new Promise((resolve, reject) => {
          ffmpeg.ffprobe(videoPath, (err, metadata) => {
            if (err) {
              reject(err);
            } else {
              const durationInSeconds = metadata.format.duration;
              resolve(durationInSeconds);
            }
          });
        });
      }
    }
    
    1. 在Vue组件中使用工具类:假设你有一个VideoComponent.vue组件,需要获取视频时长。你需要在这个组件中引入DurationUtils.js和视频文件路径,然后调用工具类的方法来获取视频时长。
    <template>
      <div>
        <video ref="videoPlayer" controls>
          <source :src="videoPath" type="video/avi">
        </video>
        <p>视频时长{{ videoDuration }}</p>
      </div>
    </template>
    
    <script>
    import DurationUtils from './DurationUtils.js';
    
    export default {
      data() {
        return {
          videoPath: '/path/to/your/video.avi',
          videoDuration: null
        };
      },
      mounted() {
        const videoElement = this.$refs.videoPlayer;
        videoElement.addEventListener('loadedmetadata', () => {
          DurationUtils.getVideoDuration(this.videoPath)
            .then(duration => {
              this.videoDuration = duration;
            })
            .catch(error => {
              console.error(error);
            });
        });
      }
    }
    </script>
    

    这样,在Vue.js中就可以获取非mp4格式视频的时长了。如果你使用了其他格式,只需将<source>标签中的type属性改成对应的视频格式。

    需要注意的是,这个解决方案需要安装ffmpeg并调用命令行 ffprobe 方法来获取视频时长,因此可能对服务器资源有一定需求。如果你的服务器资源有限或者有其他限制,可能需要考虑其他解决方案。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月14日

悬赏问题

  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi
  • ¥15 ue2.6.12版本用的若以,安装gojs,引入import * as go from 'gojs';报错
  • ¥15 服务器上的网站安装php5.6版本
  • ¥15 ModuleNotFoundError: No module named 'torch.utils._import_utils' 是缺少什么
  • ¥15 请大咖一起探索iptv 直播源的hls通过反向代理解密
  • ¥100 寻找技术员 云闪付tn转h5输入卡号付款的链接 重酬!