Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何为MP4文件创建缩略图系统_File_Video_Mp4_Thumbnails - Fatal编程技术网

File 如何为MP4文件创建缩略图系统

File 如何为MP4文件创建缩略图系统,file,video,mp4,thumbnails,File,Video,Mp4,Thumbnails,我知道我知道,为什么我还在用MP4??这是因为我有像100个文件已经在这种格式,我需要上传到一个网站,我有mp4文件嵌入在网站上已经和文件播放的变化根据php 但我真正需要的是一种动态创建缩略图或拍摄视频文件快照以显示在页面上的方法。我在网上读过一些东西,但它们都要求文件类型为FLV,实现这一点的最佳方法是什么 谢谢你们 你看过吗?您可以针对它进行编程,包括捕获缩略图。您看过吗?您可以针对它进行编程,包括捕获缩略图。package com.tape.controller; package com

我知道我知道,为什么我还在用MP4??这是因为我有像100个文件已经在这种格式,我需要上传到一个网站,我有mp4文件嵌入在网站上已经和文件播放的变化根据php

但我真正需要的是一种动态创建缩略图或拍摄视频文件快照以显示在页面上的方法。我在网上读过一些东西,但它们都要求文件类型为FLV,实现这一点的最佳方法是什么

谢谢你们

你看过吗?您可以针对它进行编程,包括捕获缩略图。

您看过吗?您可以针对它进行编程,包括捕获缩略图。

package com.tape.controller;
package com.tape.controller;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.OpenCVFrameGrabber;

public class VideoThumbTaker {

    protected String ffmpegApp;

    public VideoThumbTaker(String ffmpegApp)
    {
        this.ffmpegApp = ffmpegApp;
    }

    public void getThumb(String videoFilename, String thumbFilename, int width, int height,int hour, int min, float sec)
      throws IOException, InterruptedException
    {
        ProcessBuilder processBuilder = new ProcessBuilder(ffmpegApp, "-y", "-i", videoFilename, "-vframes", "1",
    "-ss", hour + ":" + min + ":" + sec, "-f", "mjpeg", "-s", width + "*" + height, "-an", thumbFilename);
        Process process = processBuilder.start();
        InputStream stderr = process.getErrorStream();
        InputStreamReader isr = new InputStreamReader(stderr);
        BufferedReader br = new BufferedReader(isr);
        String line;
        while ((line = br.readLine()) != null);
        process.waitFor();
    }

    public static void main(String[] args) throws Exception, IOException
    {
        FFmpegFrameGrabber g = new FFmpegFrameGrabber("C:\\JavaEE\\New Project\\tape\\src\\main\\webapp\\web-resources\\videos\\vid.mp4");
        g.setFormat("mp4");
        g.start();

        for (int i = 0 ; i < 50 ; i++) {
            ImageIO.write(g.grab().getBufferedImage(), "png", new File("C:\\JavaEE\\New Project\\tape\\src\\main\\webapp\\web-resources\\thumbnails\\video-frame-" + System.currentTimeMillis() + ".png"));
        }

         g.stop();
    }
}
导入java.io.BufferedReader; 导入java.io.File; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.InputStreamReader; 导入javax.imageio.imageio; 导入org.bytedeco.javacv.FFmpegFrameGrabber; 导入org.bytedeco.javacv.OpenCVFrameGrabber; 公共课录像员{ 保护串ffmpegApp; 公共视频采集者(字符串ffmpegApp) { this.ffmpegApp=ffmpegApp; } public void getThumb(字符串videoFilename、字符串thumbFilename、int-width、int-height、int-hour、int-min、float-sec) 抛出IOException、InterruptedException { ProcessBuilder ProcessBuilder=新ProcessBuilder(FFMPEGAP,“-y”,“-i”、videoFilename、-vframes、“1”, “-ss”,“小时+”:“+min+”:“+sec”,“-f”,“mjpeg”,“-s”,宽度+“*”+高度,“-an”,拇指文件名); Process=processBuilder.start(); InputStream stderr=process.getErrorStream(); InputStreamReader isr=新的InputStreamReader(stderr); BufferedReader br=新的BufferedReader(isr); 弦线; 而((line=br.readLine())!=null); process.waitFor(); } 公共静态void main(字符串[]args)引发异常,IOException { FFmpegFrameGrabber g=新的FFmpegFrameGrabber(“C:\\JavaEE\\new Project\\tape\\src\\main\\webapp\\web resources\\videos\\vid.mp4”); g、 setFormat(“mp4”); g、 start(); 对于(int i=0;i<50;i++){ ImageIO.write(g.grab().getBuffereImage(),“png”,新文件(“C:\\JavaEE\\new Project\\tape\\src\\main\\webapp\\web resources\\thumbnails\\video frame-”+System.currentTimeMillis()+“.png”); } g、 停止(); } }
我使用这个Java代码使用FFMpegFrameGrabber来创建视频的Thumnail。试试看

Maven依赖项:

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv</artifactId>
    <version>0.8</version>
</dependency>

org.bytedeco
爪哇
0.8
包com.tape.controller;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入javax.imageio.imageio;
导入org.bytedeco.javacv.FFmpegFrameGrabber;
导入org.bytedeco.javacv.OpenCVFrameGrabber;
公共课录像员{
保护串ffmpegApp;
公共视频采集者(字符串ffmpegApp)
{
this.ffmpegApp=ffmpegApp;
}
public void getThumb(字符串videoFilename、字符串thumbFilename、int-width、int-height、int-hour、int-min、float-sec)
抛出IOException、InterruptedException
{
ProcessBuilder ProcessBuilder=新的ProcessBuilder(ffmpegApp,“-y”、“-i”、videoFilename、“-vframes”、“1”,
“-ss”,“小时+”:“+min+”:“+sec”,“-f”,“mjpeg”,“-s”,宽度+“*”+高度,“-an”,拇指文件名);
Process=processBuilder.start();
InputStream stderr=process.getErrorStream();
InputStreamReader isr=新的InputStreamReader(stderr);
BufferedReader br=新的BufferedReader(isr);
弦线;
而((line=br.readLine())!=null);
process.waitFor();
}
公共静态void main(字符串[]args)引发异常,IOException
{
FFmpegFrameGrabber g=新的FFmpegFrameGrabber(“C:\\JavaEE\\new Project\\tape\\src\\main\\webapp\\web resources\\videos\\vid.mp4”);
g、 setFormat(“mp4”);
g、 start();
对于(int i=0;i<50;i++){
ImageIO.write(g.grab().getBuffereImage(),“png”,新文件(“C:\\JavaEE\\new Project\\tape\\src\\main\\webapp\\web resources\\thumbnails\\video frame-”+System.currentTimeMillis()+“.png”);
}
g、 停止();
}
}
我使用这个Java代码使用FFMpegFrameGrabber来创建视频的Thumnail。试试看

Maven依赖项:

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv</artifactId>
    <version>0.8</version>
</dependency>

org.bytedeco
爪哇
0.8

你有没有代码示例,ffdshow论坛没有给我太多帮助?你有没有代码示例,ffdshow论坛没有给我太多帮助?你找到其他方法了吗?我正试图解决同样的问题。你找到另一种方法了吗?我正试图解决同样的问题。