【问题标题】:couldn't populate thumbnail on client side无法在客户端填充缩略图
【发布时间】:2021-02-20 09:28:51
【问题描述】:
router.post("/thumbnail",(req,res)=>{

  let thumbsFilePath="";
  let fileDuration="";



  ffmpeg.ffprobe(req.body.filePath, function(err,metadata){
    console.dir(metadata);
    console.log('METADATA==>'+metadata);
    console.log(metadata.format.duration);

    fileDuration=metadata.format.duration;

  })

  
  ffmpeg(req.body.filePath)
  .on('filenames', function(filenames) {
    console.log('Will generate ' + filenames.join(','))
    thumbsFilePath="uploads/thumbnails/"+ filenames[0];
  })
  .on('end', function() {
    console.log('Screenshots taken');
    console.log('FILEPATH===>'+thumbsFilePath);
    console.log('FILEDURATION===>'+fileDuration);
    return res.json({success: true, thumbsFilePath , fileDuration})
  })
  .screenshots({
    // Will take screens at 20%, 40%, 60% and 80% of the video
    count: 3,
    folder: 'uploads/thumbnails/',
    size:'320x240',
    // %b input basename ( filename w/o extension )
    filename:'thumbnail-%b.png'
  });
})

屏幕截图完美保存,它们的路径也从thumbsFilePath 接收到客户端,但我无法在客户端页面中填充它(反应).. idk 我在这里做错了什么。

这里是客户端代码。我用usestate

  const [FilePath, setFilePath]= useState('');
  const [Duration, setDuration] = useState('');
  const [Thumbnail, setThumbnail] = useState('');

当我尝试填充 img 时出现错误

const onDrop=(files)=>{
      let formData= new FormData();
      let config={
        header:{'content-type':'multipart/form-data'}
      }
      
      formData.append("file",files[0])
      Axios.post('http://localhost:5000/api/video/uploadFiles',formData,config)
      .then(response=>{
        console.log(response);
     if(response.data.success){
       console.log('FILEPATH==>'+response.data.filePath);
       console.log('filename==>'+response.data.fileName);
      let variable={
        filePath:response.data.filePath,
        fileName:response.data.fileName
      }
      setFilePath(response.data.filePath);
      Axios.post('http://localhost:5000/api/video/thumbnail',variable)
      .then(response=>{
        if(response.data.success){
          setDuration(response.data.fileDuration)
          setThumbnail(response.data.thumbsFilePath)
        }else{
          alert("failed to make thumbnails");
        }
      })
     }
      }).catch(err=>{
        console.log('error'+err);
      })
  }
  
    return (
      <>
        <form>
        <Dropzone  onDrop={onDrop}>
  {({getRootProps, getInputProps}) => (
    <section>
      <div className="dropzone__container" {...getRootProps()}>
        <input {...getInputProps()} />
        <p>Drag 'n' drop some files here, or click to select files</p>
      </div>
    </section>
  )}
</Dropzone>
 
    {Thumbnail !== "" &&
     <div>
       <img src={`http://localhost:5000/server/${Thumbnail}`} alt="haha"/>
     </div>
    }

{data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}config: {url: "http://localhost:5000/api/video/uploadFiles", method: "post", data: FormData, headers: {…}, transformRequest: Array(1), …}data: {success: true, fileName: "SampleVideo_1280x720_1mb.mp4", filePath: "uploads\SampleVideo_1280x720_1mb.mp4"}headers: {content-length: "109", content-type: "application/json; charset=utf-8"}request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}status: 200statusText: "OK"__proto__: Object
UploadVideo.js:51 FILEPATH==>uploads\SampleVideo_1280x720_1mb.mp4
UploadVideo.js:52 filename==>SampleVideo_1280x720_1mb.mp4
thumbnail-SampleVideo_1280x720_1mb_1.png:1 GET http://localhost:5000/server/uploads/thumbnails/thumbnail-SampleVideo_1280x720_1mb_1.png 404 (Not Found)
but the thumbnail is in that directory..but it says not found.and it shows the "alt"(haha) in browser.`enter code here`
(C:\Users\chidori\Desktop\project\server\uploads\thumbnails\thumbnail-SampleVideo_1280x720_1mb_1.png).

对不起,混乱的演示文稿..

【问题讨论】:

    标签: javascript node.js reactjs ffmpeg video-thumbnails


    【解决方案1】:

    检查您是否能够在该物理位置找到该文件。我的意思是在server/uploads/thumbnails 文件夹内?因为它在浏览器控制台中显示 404。

    【讨论】:

    • 是的,它就在那个路径 server/uploads/thumbnails/$thumbnail 中,但它在控制台中显示 404 ..它没有意义..
    猜你喜欢
    • 2017-02-07
    • 2013-08-28
    • 2018-03-18
    • 2010-12-11
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多