当前位置: 首页 > 面试题库 >

如何在Node.js中获取视频快照?

卢雅惠
2023-03-14
问题内容

我正在尝试编写一个nodejs服务器,该服务器将花费一个时间输入(可能是url路径的一部分),然后在该时间索引处以jpeg图片的形式提供静止的视频帧。

我可以用普通的Javascript轻松地做到这一点,但是我看不到在nodejs中做到这一点的方法。我知道我可能需要使用像node-
canvas这样的画布插件来做快照。

任何想法欢迎。

以下是我目前在Javascript中的处理方式:

myjavascript.js

function capture(video, scaleFactor) {
    if(scaleFactor == null){
        scaleFactor = 1;
    }
    var w = video.videoWidth * scaleFactor;
    var h = video.videoHeight * scaleFactor;
    stdout("<br/> w: "+ w+ "<br/> h: "+ h);
    var canvas = document.createElement('canvas');
        canvas.width  = w;
        canvas.height = h;
    var ctx = canvas.getContext('2d');
        ctx.drawImage(video, 0, 0, w, h);
    return canvas;
}

function shoot(){
 var video  = document.getElementById("videoTag");
 var output = document.getElementById("output");
 var canvas = capture(video, 1);
 output.innerHTML = '';
 output.appendChild(canvas);
}

index.html

<html>
<head>
    <title>video snap</title>   
    <script type="text/javascript" src="myjavascript.js"></script>
</head>
<body>

<div id="video_container" >
        <video id="videoTag" width="640" height="360" autobuffer="" controls="true">
            <source src="frozenplanet.mp4" type="video/mp4">
            <source src="frozenplanet.ogv" type="video/ogg">
        </video>
</div>

<div id="output"></div>

</body>
</html>

问题答案:

node-fluent-ffmpeg具有不错的takeScreenshots功能

var proc = new ffmpeg('/path/to/your_movie.avi')
  .takeScreenshots({
      count: 1,
      timemarks: [ '600' ] // number of seconds
    }, '/path/to/thumbnail/folder', function(err) {
    console.log('screenshots were saved')
  });


 类似资料:
  • 我们的视频播放软件(本地的,不是流媒体),可以随意跳到第 n 秒 这个功能是怎么实现的? 因为视频的一个一个 packet 组成,每个 packet 包含 [0,+∞) 个 frame 所以跳转到第 10 秒怎么实现? 一个视频 30 fps,难道要,从第 0 帧开始读取 300 帧,才播放吗? 这样的话,越拖到后面越慢 但是实际使用这些播放软件的时候,感觉都是秒级别的

  • 我试图从html解析视频网址。我正在使用J汤解析来解析它。我想解析 从这个html。我怎样才能从上面的行得到这个内容。 现在我的代码是: 我的代码应该更改什么? 提前谢谢你!

  • 问题内容: 我使用xuggler来获取视频长度,但是它给出了错误的长度,可能是时候使用xuggler从视频文件中读取数据了。但是我需要获取实际的视频长度或时长。 问题答案: 您可以使用的和方法获取它。您可以这样做: 您可以在此处看到完整的示例 希望这可以帮助

  • 问题内容: 我想获得视频的帧速率,但是我不想使用FFMPEG,JAVACV lib。是否有可能在Android中获取视频的帧率? 我读到KEY_FRAME_RATE时说,“具体地说,MediaExtractor提供了一个与轨道的帧速率信息相对应的整数值(如果已指定且非零)。” 但我不知道如何使用它? 如果您知道如何从视频中获取帧频,请在此处回答。 问题答案: 注意: 尝试在辅助线程中运行以上代码。

  • 问题内容: 我正在使用node.js构建应用程序,我已成功上传了视频,但需要为其生成视频缩略图。目前,我使用node exec执行ffmpeg的系统命令来制作缩略图。 此代码来自http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a- resumable-video-uploade-in-node- js/中 的教程 上面