FFmpeg:使用RSTP C ++实时流式传输

时间:2016-08-08 13:49:56

标签: c++ ffmpeg streaming

我想从相机接收视频流,使用openCV处理它(用于测试 - 绘制红色矩形)和实时流结果。

我已经可以读取相机帧,转换为openCV Mat并将它们更改回AVFrame。

从控制台启动rtsp服务器使用:ffplay -rtsp_flags listen -i rtsp://127.0.0.1:8765 / live.sdp 我尝试调用avio_open();

时会出现问题
av_register_all();
avformat_network_init();
avcodec_register_all();
(...)
avformat_alloc_output_context2(&outputContext, NULL, "rtsp", outputPath.c_str());
outputFormat = outputContext->oformat;

cout << "Codec = " << avcodec_get_name(outputFormat->video_codec) << endl;

if (outputFormat->video_codec != AV_CODEC_ID_NONE) {
    videoStream = add_stream(outputContext, &outputVideoCodec, outputFormat->video_codec);
}
char errorBuff[80];
int k = avio_open(&outputContext->pb, outputPath.c_str(), AVIO_FLAG_WRITE);
if (k < 0) {
    cout << "code: " << k << endl;
    fprintf(stderr, "%s \n", av_make_error_string(errorBuff, 80, k));
}

if (avformat_write_header(outputContext, NULL) < 0) {
    fprintf(stderr, "Error occurred when writing header");
}

}

其中outputPath =&#34; rtsp://127.0.0.1:8765 / live.sdp&#34; avformat_alloc_output_context2返回0,但avio_open&lt; 0所以app打印:

代码:-1330794744

未找到协议

我不知道出了什么问题。我正在使用来自https://ffmpeg.zeranoe.com/builds/ 64位Dev

的ffmpeg构建

1 个答案:

答案 0 :(得分:0)

通过执行以下操作启用文件协议:

--enable-protocol=file