javascript - 我需要拍摄在浏览器中播放的视频的快照

标签 javascript jquery jquery-plugins mediaelement.js

假设正在浏览器中播放视频。在视频下方,有一个按钮。单击该按钮应捕获播放视频的快照并在其下方的 slider 中显示该快照。

我需要 jQuery 或 JavaScript 的东西。

最佳答案

如果视频不是直播,您可以在我前段时间为一个小型媒体项目编写的这段代码片段中找到合适的答案。它是 PHP,但您可以将相同的概念应用于其他语言

public function actionAjaxSetThumbnailFromFrame()
{
    if(!isset($_POST['Video'], $_POST['Video']['id']) || !isset($_POST['time']))
        throw new CHttpException(400,'Invalid request.');

    $video = Video::model()->findByPk($_POST['Video']['id']);
    $path = Utils::generateUniquePath("thumbnail.jpg", Config::getParam('mediaPath'));

    $command = "ffmpeg  -itsoffset -{$_POST['time']}  -i \"$video->filePath\" -vframes 1 -an -f image2 \"$path\"";
    //generate thumbnail
    exec(
        $command,
        $out,
        $retval
    );

    $thumbnail = new Image();
    $thumbnail->name = basename($path);
    $thumbnail->serverUrl = '';
    $thumbnail->filePath = $path;
    $thumbnail->relativeServerUrl = Utils::relativeUrlPath($path);
    $thumbnail->save();

    [...]
}

该函数将视频 ID 和您要保存的帧的时间作为输入。 然后它使用 ffmpeg ( http://ffmpeg.org/ ) 实用程序提取屏幕截图。

核心线是:

$command = "ffmpeg  -itsoffset -{$_POST['time']}  -i \"$video->filePath\" -vframes 1 -an -f image2 \"$path\"";

在 Java 中它会是这样的:

String command = "ffmpeg  -itsoffset -"+time+"  -i \""+videoPath+"\" -vframes 1 -an -f image2 \""+screenshotPath+"\"";
Process child = Runtime.getRuntime().exec(command);

然后您需要一些 javascript 代码来创建 ajax 调用并调用上述函数。

关于javascript - 我需要拍摄在浏览器中播放的视频的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430567/

相关文章:

javascript - 如何查找浏览器是否支持 History.Pushstate?

javascript - 如何将每个对象附加到其各自的 'block' 元素?

javascript - dotdotdot.js 仅在调整窗口大小后有效

javascript - 我无法删除上次调用 map 绑定(bind)时创建的标记

javascript - 如何在提交表单之前删除 AutoNumeric 格式?

javascript - 理解闭包有困难

javascript - 在 box-sizing :border-box is set in CSS? 时,JavaScript 中有没有一种方法可以直接获取元素的内容宽度

javascript - 浏览 html 中的图像

Javascript:使用按钮保存 .innerHTML 数据

jquery - 从 Facebook Graph API 选择 JSON 中的项目编号