FFMPEG command fails for file path with white spaces

那年仲夏 提交于 2019-12-02 02:16:58
Irshad Ansari
//Process ffmpeg;
        public string exec(string input, string output, string parametri,string fileName) 
        {
        //Create the output and streamreader to get the output
        string output1 = null; StreamReader srOutput = null;
        input = addQuotes(input);
        Process ffmpeg = new Process();
        try
        {

            ffmpeg.StartInfo.Arguments = " -i " + input + " -ss 00:00:00.100 -vframes 1" + " " + output;
            ffmpeg.StartInfo.FileName = fileName;
            ffmpeg.StartInfo.UseShellExecute = false;
            ffmpeg.StartInfo.RedirectStandardOutput = true;
            ffmpeg.StartInfo.RedirectStandardError = true;
            ffmpeg.StartInfo.CreateNoWindow = true;
            ffmpeg.Start();
            ffmpeg.WaitForExit();
            //get the output
            srOutput = ffmpeg.StandardError;
            //now put it in a string
            output1 = srOutput.ReadToEnd();
            ffmpeg.Close();
        }
        catch
        {
            ffmpeg.Close();
            output = string.Empty;
        }
        finally
        {
            //now, if we succeded, close out the streamreader
            if (srOutput != null)
            {
                srOutput.Close();
                srOutput.Dispose();
            }
        }
        return output;
    }


    public string addQuotes(string s)
    {
        return "\"" + s + "\"";
    }

You must switch to string-array variant of Runtime.exec(), as described in ffmpeg-android-java.

For the adventurous, there is a hidden trick in ffmpeg, but IMHO working with String[] is both easier and more robust.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!