当命令行中使用DShow时,CreateProcess失败
CreateProcess fails when dshow is used in commandline
尝试使用CreateProcess启动FFMPEG。
问题:
1(在命令行中无法使用dshow
。
2(带有stdin管道的rtmp流式流式流式流动。
问题:
1(命令行中的CEVEAT与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);
使用dshow
时createProcess失败。但是它用作控制台中的命令行。
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:testkites.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:testffmpeg.exe -y -loop 1 -i "c:\test\kites.jpg" -f dshow -i audio="Stereo Mix(Realtek High Definition Audio)" out.mp4";
首先,
直接的问题仅仅是您需要逃脱反闪烁。
更改:
c:testkites.jpg
to
c:\test\kites.jpg
' t'是一个选项卡,''是backslash
第二,
来自评论:
来自CreateProcessw:"此功能的Unicode版本, CreateProcessw,可以修改[lpcommandline]字符串的内容。 因此,此参数不能是通向只读内存的指针 (例如const变量或文字字符串(。如果此参数是 恒定字符串,该功能可能会导致访问违规。"
因此,您需要在这样的缓冲区中握住内容:
std::wstring args{L"c:testffmpeg.exe -y -loop 1 -i "c:\test\kites.jpg" -f dshow -i audio="Stereo Mix(Realtek High Definition Audio)" out.mp4"};
第三,
如果您知道可执行文件的完整路径(看起来(,则可以将其放入CreateProcess
的第一个参数中受益。这将为您提供更多的控制和诊断(将来(,因为它是创建过程的更直接的方法。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- 当命令行中使用DShow时,CreateProcess失败
- CreateProcess失败 - 错误183
- Notepad ,nppexec,createProcess()失败了错误代码2,Windows 8.1
- System() 来启动一个进程,但使用 CreateProcess 失败
- 当传递从std::string转换为wstring的路径时,CreateProcess失败
- 在CreateProcess中传递命令行参数失败