0

JavaScript、ffmpeg、javaを使用してビデオ編集アプリケーションを作成しています。FFMPEGを使用して、canvas.toDataUrlを使用するよりも、ビデオの抽出nフレームを作成しました。新しい画像を既存の画像フレームレートに置き換え、すべてが処理されましたが、これらの画像を使用してビデオを作成すると、FFMPEGに新しく作成されたPNG画像が含まれることはありません。

HTML5キャンバスからpng画像を保存するコード

Base64 decoder = new Base64();
    byte[] pic = decoder.decodeBase64(request.getParameter("pic"));
    String frameCount = request.getParameter("frame");
    InputStream in = new ByteArrayInputStream(pic);
    BufferedImage bImageFromConvert = ImageIO.read(in);
    String outdir = "output\\"+frameCount;
    //Random rand = new Random();
    File file = new File(outdir);
    if(file.isFile()){
        if(file.delete()){
            File writefile = new File(outdir);
            ImageIO.write(bImageFromConvert, "png", file);
        }
    }

ビデオから画像を作成するためのコード

String filePath = "D:\\temp\\some.mpg";
    String outdir = "output";
    File file = new File(outdir);
    file.mkdirs();
    Map<String, String> m = System.getenv();

    /*
     * String command[] =
     * {"D:\\ffmpeg-win32-static\\bin\\ffmpeg","-i",filePath
     * ,"-r 30","-f","image2",outdir,"\\user%03d.jpg"};
     * 
     * ProcessBuilder pb = new ProcessBuilder(command); pb.start();
     */
    String commands = "D:\\ffmpeg-win32-static\\bin\\ffmpeg -i " + filePath
            + " -r 30  -f image2 " + outdir + "\\image%05d.png";
    Process p = Runtime.getRuntime().exec(commands);

画像から動画を作成するためのコード

String filePath = "output";
    File fileP = new File(filePath);
    String commands = "D:\\ffmpeg-win32-static\\bin\\ffmpeg -f image2 -i "
            + fileP + "\\image%5d.png " + fileP + "\\video.mp4";
    System.out.println(commands);
    Runtime.getRuntime().exec(commands);
    System.out.println(fileP.getAbsolutePath());
4

1 に答える 1

3

作成物を image%05d.png として宣言し、それを ias image%5d.png として使用しています。したがって、名前のゼロが 1 つ少なくなります。それでおしまい!

于 2012-08-27T13:25:34.813 に答える