[英]MYSQL command gives error while being executed from java. Same command works fine on Linux Terminal. What can be the reason?
[英]ffmpeg works fine most of the time in java except for this command (merging), and this command works fine directly in terminal
當我從命令行運行它時,它可以工作(並排合並兩個視頻):
/usr/local/bin/ffmpeg -i /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/test.mov -i /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/test1.mov -filter_complex "[0:v:0]pad=iw*2:ih[bg]; [bg][1:v:0]overlay=w" /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/merged.mov
但是,當我在java中運行它時,我從控制台得到它:
[AVFilterGraph @ 0x7fd44ad00440] No such filter: '"'
Error configuring filters.
這是我要返回的文本(直接復制),這是我要發送的文件。 它完全相同,除了我在引號之前使用轉義字符,所以“變成\\”:
"/usr/local/bin/ffmpeg -i /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/test.mov -i /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/test1.mov -filter_complex \"[0:v:0]pad=iw*2:ih[bg]; [bg][1:v:0]overlay=w\" /Users/ron/Dropbox/JAMR/Technology/workspace/JAMR/sandbox/merged.mov";
所有其他的ffmpeg測試都有用,除了這....(我使用“字符”的唯一一個)
任何人都可以搞清楚嗎?
您應該將Java中的命令拆分為String數組,然后將其傳遞給getRuntime()。exec(String [])
簡短的例子:
String cmd[] = new String[]{
"ffmpeg",
"-r", String.valueOf(20/30f),
"-i", "assets/IMAG0054_BURST%03d.jpg",
"-i","assets/logo.png",
"-i","assets/guitar_tuning.wav","-r", "24", "-codec:a", "mp3",
"-filter_complex","[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10,"+
"drawtext=fontfile=assets/OpenSans-Regular.ttf:text=1st scene:x=0:y=0:fontsize=100:fontcolor=white:enable='between(t,0.5,2.5)'," +
"drawtext=enable='between(t,2.6,5.5)':fontfile=assets/OpenSans-Regular.ttf:text=2nd scene:x=0:y=0:fontsize=100:fontcolor=white," +
"drawtext=enable='between(t,5.6,8.8)':fontfile=assets/OpenSans-Regular.ttf:text=3rd scene:x=0:y=0:fontsize=100:fontcolor=white," +
"drawtext=enable='between(t,8.9,30)':fontfile=assets/OpenSans-Regular.ttf:text=4rd scene:x=0:y=0:fontsize=100:fontcolor=white" +
"[out]",
"-map", "[out]", "-map", "2:0",
"-acodec","mp3",
//"-shortest " +
"simple_lapse.mp4"};
Process ffmpeg = Runtime.getRuntime().exec(cmd);
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.