代码之家  ›  专栏  ›  技术社区  ›  Subhojit

如何在react.js中上传后从onchange函数获取视频持续时间[重复]

  •  0
  • Subhojit  · 技术社区  · 5 年前

    这个问题已经有了答案:

    我想在react.js中上传后从onchange函数获取视频持续时间。我在StackBlitz中共享了我的代码。链接在这里- Working Demo

    我在代码中提到了需要获取视频持续时间的地方。我需要它在onchange函数的内部 读卡器.onloadend 部分。 以下是我的代码:

    import React, { Component } from 'react';
    import { render } from 'react-dom';
    import Hello from './Hello';
    import './style.css';
    
    class App extends Component {
      constructor() {
        super();
        this.state = {
          name: 'React',
          get_video: '',
          videoAttribute: []
        };
      }
    
      chosenVideo(e) {
            e.preventDefault();
    
            /*this.setState({
                file_state: e.target.files[0]
            });*/
    
            var file = e.target.files[0];
            var file_state = e.target;
            var reader = new FileReader();
            reader.onloadend = () => {
                this.setState({
                    get_video: reader.result,
                    videoAttribute: file_state
                });
    
          console.log("video duration"); // I want to get the video duration here
    
                console.log(reader);
            };
            reader.readAsDataURL(file);
        }
    
      render() {
    
        var isVideoPreview = '';
    
        if(this.state.get_video != '') {
          isVideoPreview = (
            <video 
              type="video/swf" 
              src={this.state.get_video} 
              className="get_preview_video_class" 
              controls
            >
                </video>
          );
        }
    
        return (
          <div>
            <input 
              id="upload_1006_mybataz" 
              type="file" 
              accept="video/*" 
              onChange={this.chosenVideo.bind(this)} 
            /> 
            <div>
              {isVideoPreview}
            </div>
          </div>
        );
      }
    }
    
    render(<App />, document.getElementById('root'));
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   ThatBrianDude    5 年前
    var media = new Audio(reader.result);
    media.onloadedmetadata = function(){
         media.duration; // this would give duration of the video/audio file
    };    
    

    从这里取: How to get duration of video when I am using filereader to read the video file?