gpt4 book ai didi

ffmpeg - 如何使用 execv 执行 ffmpeg 摄取 rtmp 流

转载 作者:行者123 更新时间:2023-12-04 23:28:54 27 4
gpt4 key购买 nike

我可以在linux中成功执行以下命令:

ffmpeg -i "rtmp://42.62.95.48/live?vhost=hls/livestream timeout=2" -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1:1935/live/hd

但它在以下代码中不起作用:
std::vector<std::string> params;
params.push_back("/objs/ffmpeg/bin/ffmpeg");
params.push_back("-i");
params.push_back("\"rtmp://ossrs.net/live/livestream timeout=3\"");
params.push_back("-vcodec");
params.push_back("copy");
params.push_back("-acodec");
params.push_back("copy");
params.push_back("-f");
params.push_back("flv");
params.push_back("-y");
params.push_back("rtmp://127.0.0.1:1935/live/hd");

char** charpv_params = new char*[params.size() + 1];
for (int i = 0; i < (int)params.size(); i++) {
std::string& p = params[i];
charpv_params[i] = (char*)p.data();
}

charpv_params[params.size()] = NULL;
execv("/objs/ffmpeg/bin/ffmpeg", charpv_params)

有谁知道为什么?

最佳答案

如果 execv调用失败,errno变量设置为描述问题的错误代码。您应该能够使用 perror 打印该错误。函数或仅通过打印数字并在 table 中查找.

对于它的值(value),当我尝试运行您的代码时,我收到错误号 2,因为找不到文件 - 我在 /objs/ffmpeg/bin/ffmpeg 没有 ffmpeg ,我有它在/usr/bin/ffmpeg .

关于ffmpeg - 如何使用 execv 执行 ffmpeg 摄取 rtmp 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750043/

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