gpt4 book ai didi

c - 如何在 C 中使用 ffmpeg 捕获设备输入?

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:55 25 4
gpt4 key购买 nike

我正在尝试在我的 C 代码中使用 ffmpeg 来捕获设备输入,例如屏幕和音频记录。我查看了他们的官方文档和 wiki,但与命令行用法相比,API 文档的解释并不是很好。

根据文档,如果我想在 linux 上用 alsa 录制音频,例如,我可以

ffmpeg -f alsa -i hw:<#card>,<#device> -t <seconds> out.wav

我想使用 C API 做同样的事情,有什么想法吗?

最佳答案

我不确定你的程序到底是做什么用的,但如果没有特殊限制,你可以试试在C:中调用shell命令

/**
* @brief exec_shcmd - execute a shell command via popen
*(This function doesn't support write command now. such as 'echo "abc" > abc.txt')
*
* @para cmd_line - shell command string
* @para read_buf - output string buffer after execute command
* @para len - length of read buffer
*
* @return result of shell command execute
* @retval 0 - success
* @retcal -1 - failed
*/
int exec_shcmd(char *cmd_line, char *read_buf, ssize_t len)
{
FILE *stream;

if ((cmd_line == NULL) || (read_buf == NULL) || (len == 0)) {
assert(0);
return -1;
}

stream = popen(cmd_line, "r");
if (stream == NULL) {
assert(0);
return -1;
}

memset(read_buf, 0, len);
fread(read_buf, sizeof(char), len, stream);
pclose(stream);

printf("execute a shell command: %s", cmd_line);
printf("shell command return: %s", read_buf);

return 0;
}

这是我正在使用的功能,您可以根据需要更改它。你可以像这样使用它:

void main(void)
{
char *cmd = "ls -al\n";
char buf[500];
int ret;

printf("<-----------cmd exec------------->\n");

ret = exec_shcmd(cmd, buf, sizeof(buf));
printf("result(0 - success -1 - fail): <%d>\n", ret);
}

关于c - 如何在 C 中使用 ffmpeg 捕获设备输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56284612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com