c++ - 在命令行中使用 dshow 时 CreateProcess 失败
问题描述
尝试使用 CreateProcess 启动 ffmpeg。
问题:
1) 不能dshow
在命令行中使用。
2) 带有 STDIN 管道的 RTMP 流不显示流。
问题:
1) 命令行中与 CreateProcess api 相关的注意事项是什么?
2)什么是圆的方式?如何解决问题?
此代码有效:
BOOL bSuccess = CreateProcess(NULL,
L"ffmpeg.exe -y -loop 1 -i kites.jpg out.mp4",
NULL,
NULL,
TRUE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&siStartInfo,
&piProcInfo);
使用时 CreateProcess 失败dshow
。但是它在控制台中用作命令行。
BOOL bSuccess = CreateProcess(NULL,
L"ffmpeg.exe -y -loop 1 -i kites.jpg -f dshow -i audio=\"Stereo Mix(Realtek High Definition Audio)\" out.mp4",
NULL,
NULL,
TRUE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&siStartInfo,
&piProcInfo);
编辑:(使用绝对路径,仍然没有运气)
std::wstring cmdArgslistSetChannel = L"ffmpeg.exe -y -loop 1 -i c:\test\kites.jpg -f dshow -i audio=\"Stereo Mix(Realtek High Definition Audio)\" out.mp4";
bSuccess = CreateProcess(NULL,
&cmdArgslistSetChannel[0],
NULL,
NULL,
TRUE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&siStartInfo,
&piProcInfo);
解决方案
你快到了。您可以像这样指定绝对路径。确保文件夹名称中没有空格,否则 ffmpeg 命令可能会再次失败。如果ffmpeg
位于另一个文件夹中,您也应该指定路径。
std::wstring cmdArgslistSetChannel = L"c:\test\ffmpeg.exe -y -loop 1 -i \"c:\\test\\kites.jpg\" -f dshow -i audio=\"Stereo Mix(Realtek High Definition Audio)\" out.mp4";
推荐阅读
- android - 无法为 Sim Profile android 11 添加 Passpoint 配置
- angular - 从 Angular 调用发布请求时缺少强制“grant_type”权限
- python - 如何获取两个集合的交集,然后使用“for循环”的一行代码从原始集合中删除这些元素?
- reactjs - 日视图,如何制作自定义活动卡片/活动内容?
- java - 在 Playstore (SQLiteConnection.java) 上启动后,我的 Flutter 应用程序在多个设备上崩溃
- ssis - 查找缓存模式 V/S 部分缓存 V/S 无缓存
- c# - 如何对齐图像中的水印
- tkinter - tkinter,存储用户条目以继续执行程序(初学者)
- javascript - 使用 useEffect() 钩子处理关键事件的正确方法是什么,另一方面触发本地状态更改?
- python - 无法从其他计算机访问 Django 开发服务器:无法访问此站点