在C中使用带有相对或绝对路径的popen

时间:2017-07-09 18:37:31

标签: c windows video ffmpeg popen

我正在尝试使用FFmpeg的GUI包装器。我决定围绕二进制文件而不是库来构建我的程序。我想与我的程序并行调用ffmpeg.exe并立即获取控制台输出以解析它并向用户显示进度条或其他内容。

所以我找到了popen,当它出现时它会向我发送输出,所以我可以用它做我想做的事。但是在Windows上popen中的路径存在一些问题。

当我尝试ffmpeg.exe -i TEST.mkv TEST.mp4时(当我从start或chdir进入ffmpeg.exe和我的源文件的文件夹时)它运行良好,我得到了我想要的东西。

但是当我做的时候

  

bin/ffmpeg.exe -i TEST.mkv TEST.mp4

(可执行文件显然在bin文件夹中),它找不到命令bin

  

'bin' is not recognized as an internal or external command, operable program or batch file.

它也不适用于路径周围的引号:

  

"bin/ffmpeg.exe" -i TEST.mkv TEST.mp4

但它确实适用于绝对路径和引号:

  

"C:/PATH/TO/USER/FFmpeg GUI/bin/ffmpeg.exe" -i jellyfish.mkv jellyfish.mp4

但它变得更有趣。

如果我使用相对路径作为源和输出,它可以工作。

  

"C:/Users/tibtw_000/Raccourci/Code/FFmpeg GUI/bin/ffmpeg.exe" -i videos/jellyfish.mkv videos/jellyfish.mp4

但是,如果我想将绝对路径放到我的源文件或输出文件中,它现在不起作用。

  

"C:/PATH/TO/USER/FFmpeg GUI/bin/ffmpeg.exe" -i "C:/PATH/TO/USER/FFmpeg GUI/videos/jellyfish.mkv"

现在返回

  

'C:/PATH/TO/USER/FFmpeg' is not recognized as an internal or external command, operable program or batch file.

现在我开始怀疑我路径中的空间是否有问题。它就是。当我使用

  在popen中

C:/PATH/TO/USER/FFmpegGUI/bin/ffmpeg.exe -i C:/PATH/TO/USER/FFmpegGUI/videos/jellyfish.mkv C:/PATH/TO/USER/FFmpegGUI/videos/jellyfish.mp4一切都很完美。

那我该怎么办?我是否强制用户不将其文件放在带空格的路径中?是否有一个特殊字符可以放在路径中而不是正常空间中,以使popen理解我想要它做什么?

0 个答案:

没有答案