2

Linux コマンドを Java で実行しようとしています。

これはコマンドです:

"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);

\\|文字列を入力すると、メッセージ エラーは次のようになります。

\| に適した出力形式が見つかりません

どうすればこのキャラクターから逃れることができますか? 何か案は?

4

4 に答える 4

1

パイプ「|」シェル固有です。代わりにシェルを介して実行してみてください。

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

代わりにこの bashCommand を実行します。

于 2013-03-15T17:18:35.143 に答える
1

パイプ文字を引用してみてください。Java エスケープする必要はないと思います。シェルクォートする必要があると思います。もちろん、二重引用符文字を Java エスケープする必要があります。

...-async 2 - \"|\" vod - 10 ...
于 2013-03-15T17:17:21.790 に答える
0
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");
于 2013-03-15T17:15:36.070 に答える
0

でエスケープしてみてください\\|。Javaで動作しますが、あなたが求めているLinuxコマンドについては特にわかりません。

于 2013-03-15T17:16:02.607 に答える