【问题标题】:Execute mp4box cmd via java got error通过java执行mp4box cmd得到错误
【发布时间】:2016-02-01 08:57:18
【问题描述】:

抱歉,当我标记 ffmpeg 时,因为我无法标记 MP4Box。但是我也有通过 javacode 使用 ffmpeg 执行的问题。 我在How to execute cmd commands via Java 阅读,但找不到我的问题。

我在cmd中测试过命令,没问题:

MP4Box -dash 10000 -dash-profile live -segment-name output-seg -rap -bs-switching no input.mp4

但是当我通过 java 代码执行 cmd 时,我得到了错误:

错误 - 仅找到一个输入文件作为参数,请检查用法

下面是我的代码,有问题吗?

package com.uit.reformatvideo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Logger;

public class ExecuteComandToFormatVideo {

    public final static String LINK_MP4BOX = "C:/MP4Box/Tools/MP4Box.exe";
    public final static String CREATE_MPD_ECLIPSE = "mp4box -dash 10000 -frag 1000 -rap -bs-switching no";
    public final static String CREATE_MPD_IE = "MP4Box -dash 10000 -dash-profile live -segment-name output-seg -rap -bs-switching no";
    private static final Logger log = Logger.getLogger(ExecuteComandToFormatVideo.class.getName());


    public static void main(String[] args) throws IOException, InterruptedException {
          String s = null;

            try {

            // run the Unix "ps -ef" command
                // using the Runtime exec method:
                String lsCmd[] = new String [2];
                lsCmd[0] = LINK_MP4BOX;
                lsCmd[1] = "MP4Box -dash 10000 -dash-profile live -segment-name output-seg -rap -bs-switching no input.mp4";
                Process p = Runtime.getRuntime().exec(lsCmd);
                p.waitFor();
                BufferedReader stdInput = new BufferedReader(new
                     InputStreamReader(p.getInputStream()));

                BufferedReader stdError = new BufferedReader(new
                     InputStreamReader(p.getErrorStream()));

                // read the output from the command
                System.out.println("Here is the standard output of the command:\n");
                while ((s = stdInput.readLine()) != null) {
                    System.out.println(s);
                }

                // read any errors from the attempted command
                System.out.println("Here is the standard error of the command (if any):\n");
                while ((s = stdError.readLine()) != null) {
                    System.out.println(s);
                }

                System.exit(0);
            }
            catch (IOException e) {
                System.out.println("exception happened - here's what I know: ");
                e.printStackTrace();
                System.exit(-1);
            }
    }

}

这里是放出来的:

这是命令的标准输出:

这是命令的标准错误(如果有):错误 - 只有一个 找到作为参数的输入文件,请检查用法

【问题讨论】:

  • 我已经通过批处理文件解决了我的问题。
  • 因为您找到了解决方案,所以我们鼓励您提供答案。
  • 感谢 LordNeckBeard :)

标签: java cmd ffmpeg execute


【解决方案1】:

对不起,因为我的英语不好。我创建了一个包含 CMD 等命令的 bat 文件,然后我使用了Runtime.getRuntime().exec(url+name+".bat"); 执行bat文件。这是我的解决方案。 我的bat文件:

cd C:/MP4Box/Tools/
MP4Box
MP4Box -dash 10000 -dash-profile live -segment-name output-seg -rap -bs-switching no "C:\Users\ducth\Desktop\New folder (2)\SharingVideo\src\main\webapp\resources\video\output.mp4"

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多