尝试使用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);
Run Code Online (Sandbox Code Playgroud)
使用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);
Run Code Online (Sandbox Code Playgroud)
编辑:(具有绝对路径,仍然没有运气)
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);
Run Code Online (Sandbox Code Playgroud)
你快到了。您可以像这样指定绝对路径。确保文件夹名称中不存在空格,否则 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";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |