【问题标题】:Escape character "|" error (Linux command)转义字符“|”错误(Linux 命令)
【发布时间】:2013-03-04 12:24:20
【问题描述】:

我正在尝试用 Java 运行 Linux 命令。

这是命令:

"ffmpeg -i rtmp://192.168.1.112/garage/stream26g -f mpegts -acodec libmp3lame -ar 48000 -ab 64000 -s 480x320 -r 30 -vcodec libx264 -b 544k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 2 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 544k -bufsize 544k -rc_eq 'blurCplx^(1-qComp )' -qcomp 0.6 -qmin 10 -qmax 30 -qdiff 4 -level 30 -aspect 480:320 -g 30 -async 2 - | vod - 10 stream/stream26g/sample stream/stream26g/stream.m3u8 http://www.tshizerbia.com//video/ 5" ;

但它给了我一个错误:

无法为 | 找到合适的输出格式

我不知道是什么问题

我用它来运行命令

Process p = Runtime.getRuntime().exec(command);

如果我将\\| 放入字符串中,则消息错误是:

无法为\|找到合适的输出格式

我怎样才能逃脱这个角色?有什么想法吗?

【问题讨论】:

标签: java linux ffmpeg escaping character


【解决方案1】:

尝试引用管道字符。我不认为它需要被 Java 转义。我认为它需要被shell引用。当然,您必须对双引号字符进行 Java 转义:

...-async 2 - \"|\" vod - 10 ...

【讨论】:

    【解决方案2】:

    管道“|”是特定于外壳的。尝试通过 shell 执行它,比如

    String[] bashCommand = {"/bin/bash", "-c", command};
    

    并改为执行此 bashCommand。

    【讨论】:

      【解决方案3】:
      Process p = Runtime.getRuntime().exec("ffmpeg -i rtmp://192.168.1.112/garage/stream26g -f mpegts -acodec libmp3lame -ar 48000 -ab 64000 -s 480x320 -r 30 -vcodec libx264 -b 544k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 2 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 544k -bufsize 544k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 30 -qdiff 4 -level 30 -aspect 480:320 -g 30 -async 2 - \\| vod - 10 stream/stream26g/sample stream/stream26g/stream.m3u8 http://www.tshizerbia.com//video/ 5");
      

      【讨论】:

      • @syb0rg 该问题已被编辑,从 \ 更改为 \\
      • @MajidLAISSI 该问题仅被编辑以添加代码引号(反引号)。如果没有代码引号,Markdown 只会呈现一次双反斜杠,因为它将第一个反斜杠视为转义字符。
      【解决方案4】:

      尝试使用\\| 转义它。适用于 Java,但我不确定具体适用于您所要求的 linux 命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-02
        • 2019-12-08
        • 2021-06-28
        • 2015-09-06
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多