0

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)

誰かが理由を知っていますか?

4

1 に答える 1

0

execv呼び出しが失敗した場合、変数errnoは問題を説明するエラー コードに設定されます。perror関数を使用するか、数値を出力してtableで検索するだけで、そのエラーを出力できるはずです。

価値があるのは、コードを実行しようとしたときに、ファイルが見つからないというエラー番号2が発生したことです-私はffmpegを持っていませ/objs/ffmpeg/bin/ffmpeg/usr/bin/ffmpeg.

于 2015-04-20T14:19:54.800 に答える