2010-07-06 16 views
5

ile birlikte ffmpeg'i linux üzerinde yürütme çağrısı ile çalıştırmaya çalışıyorum. Ancak komutta alıntı kullanmalıyım (ffmpeg gerektirir). İşlemci ve yürütücü için java belgesine bakıyorum ve stackoverflow ile ilgili sorularım var ama bir çözüm bulamıyorum.Java Runtime.getRuntime(). Exec()

Ben aşağıda argüman dizesine tırnak uç gerekir

ffmpeg -i "rtmp://127.0.0.1/vod/sample start=1500 stop=24000" -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv 

çalıştırmanız gerekir. Bir ters eğik çizgiden önce gelen tek veya çift tırnakların eklenmesi, işlemcinin komutları nasıl ayrıştırdığı ve çalıştırdığının doğası nedeniyle işe yaramaz.

String argument = "ffmpeg -i rtmp://127.0.0.1/vod/" 
        + nextVideo.getFilename() 
        + " start=" + nextVideo.getStart() 
        + " stop=" + nextVideo.getStop() 
        + " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv"; 

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

cevap

6

Bir dizi yapın!

exec

String[] arguments = new String[] { "ffmpeg", 
"-i", 
"rtmp://127.0.0.1/vod/sample start=1500 stop=24000", 
"-re", 
... 
}; 
+0

"yeni String []" karakterlerini kaldırabilir; Parantez otomatik olarak sizin için bir dizi dizisi üretecektir. –

+1

Bu, rtmp: //127.0.0.1/vod/sample start = xxx stop = xxx öğesinin etrafında tırnak işareti içermesi gerekir. Bir dizgede argümanı koymak yardımcı olmaz. –

+0

Eğer tırnak kaçan koyarsanız şöyle Maalesef, bu yardımcı olmuyor: "\" rtmp: başlamak //127.0.0.1/vod/sample = 1.500 durağı = Şu an Windows kutuyu olduğum 24000 \ "" – laher

1

geliyor ... böyle

Something (komutların bir dizi farklı olarak) komutu & bağımsız değişken bir dizi olarak kullanılan dizeleri, bir dizi alabilir argüman dizininin içindeki tırnaklardan kaçman gerek gibi. Bu, bir önceki ters eğik çizgi ile yapılabilecek kadar basit.

E.g.

String containsQuote = "\""; 

Bu, yalnızca teklif karakterini içeren bir dizgeye göre değerlendirilecektir.

Veya özel durumda

:

String argument = "ffmpeg -i \"rtmp://127.0.0.1/vod/" 
      + nextVideo.getFilename() 
      + " start=" + nextVideo.getStart() 
      + " stop=" + nextVideo.getStop() + "\"" 
      + " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv";