2016-08-08 9 views
0

Ich möchte Video-Stream von der Kamera empfangen, verarbeiten Sie es mit OpenCV (für Tests - rotes Rechteck zeichnen) und Live-Stream-Ergebnis.FFmpeg: Live-Streaming mit RSTP C++

Ich kann bereits Kamerabilder lesen, zu openCV Mat konvertieren und sie wieder in AVFrame ändern.

Von der Konsole im Starting-Rtsp-Server mit: ffplay -rtsp_flags listen -i rtsp: //127.0.0.1: 8765/live.sdp Problem zeigt, wenn ich versuchen, Anruf 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"); 
} 

}

Wo OutputPath = "rtsp: //127.0.0.1: 8765/live.sdp" avformat_alloc_output_context2 0 zurück, aber avio_open < 0 so App druckt:

Code: - 1330794744

Protokoll nicht

finde ich keine Ahnung, was falsch ist. Ich bin mit ffmpeg Build von https://ffmpeg.zeranoe.com/builds/ 64-Bit-Dev

Antwort

0

das Dateiprotokoll aktivieren, indem Sie:

--enable-protocol=file 
+0

Ich versuchte ffmpeg unter Windows mit github.com/jb-alvarado/media-autobuild_suite kompilieren, aber ich habe. eine Bibliothek Dateien und wenn ich verlinke sie in Visual Studio ich bekomme Wand von LNK Fehler ex. libavutil.a (timecode.o): Fehler LNK2001: nicht aufgelöstes externes Symbol __mingw_vsnprintf Nach der Recherche habe ich festgestellt, dass ich auch die Bibliotheken libmingw32.a und libmingwex.a verlinken sollte. Ich habe es getan, und bekam noch eine Unmenge von Fehlern wie: c: \ build \ autobuildffmpeg \ mys64 \ mingw64 \ x86_64-w64-mingw32 \ include \ stdlib.h (306): Fehler C2059: Syntaxfehler: '__declspec (nothrow) ' – Mapet

+0

Haben Sie versucht, die Links am Ende zu betrachten, die erwähnen, wie man Mingw für ffmpeg baut? - Dieser Link scheint jedoch gebrochen zu sein. Sehen Sie dieses Handbuch: http://www.gooli.org/blog/building-ffmpeg-for-windows-with-msys-and-mingw/ und folgen Sie den übrigen Schritten auf jb-alvarado/media-autobuild_suite –

+0

No i didn versuch es nicht. Ich werde diesem Führer folgen und über das Ergebnis informieren. Leider kann ich das morgen machen. – Mapet