Streamproblem
-
Hi Leute,
ich habe ein Problem beim streamen. Vermutlich setze ich die Werte einfach falsch ein. Gem. Skript von Mircosoft Encoder sieht dass so aus.
CComBSTR strServerName("MyWMServer"); CComBSTR strPubPoint("MyPubPoint"); CComBSTR strPubTemplate("AnotherPubPoint"); CComBSTR MyNSCFile("\\\\servername\\share\\MyPubPoint.nsc"); CComBSTR MyNSCURL("\\\\servername\\share\\PubPoint.nsc"); CComBSTR MyASXFile("\\\\servername\\share\\MyPubPoint.asx");Meine fiktiven Werte sind:
IP: 192.168.1.10 Port 8080
ServerName: StreamServer
Freigegebener Ordner: wwwroot
Kann mir jemand zeigen, wie ich die Werte in den obrigen Code richtig einsetze?
Habe schon einige Varianten durch, aber anscheinend nicht die Richtige.
-
Kann mir wirklich keiner dabei helfen?

-
Aehm ??? Aegypten ...
Irgendwie versteh ich die Fragestellung ned ganz :p
Wass du willst, ist z.B. dass du CComBSTR strServerName("MyWMServer"); so bearbeitest, das nachher in dem CComBSTR "192.168.1.10:8080" oder so steht ???
oder meinst nachher das zusammenbauen ???
CComBSTR MyNSCFile(L"\\\\"); MyNSCFile.AppendBSTR(strServerName); MyNSCFile.Append(L"\\"); MyNSCFile.AppendBSTR(strPath); MyNSCFile.Append(L"\\"); MyNSCFile.AppendBSTR(strPubPoint); MyNSCFile.Append(L".nsc");Ciao ...
erklaer mal bitte etwas naeher ...
Ciao ...
-
Also, mein Programm ist ziemlich stark an den Mircosoft Encoder 9 angelehnt.
Ich mochte damit ein Liveereigniss (z.B. das Bild einer Webcam) zu einen Windows Media Server streamen. Das Bild der Webcam bekomme ich auch. Allerdings läßt es sich nicht streamen.
Und ich finde den Fehler leider nicht.
Dabei ist das eigentliche Skript aus der SDK ziemlich eindeutig.// Include libraries. #include <windows.h> #include <atlbase.h> #include <comdef.h> #include "C:\WMSDK\WMEncSDK9\include\wmencode.h" #include <conio.h> // for kbhit() void main() { HRESULT hr; IWMEncoder2* pEncoder; IWMEncSourceGroupCollection* pSrcGrpColl; IWMEncSourceGroup* pSrcGrp; IWMEncSource* pSrcAud; IWMEncSource* pSrcVid; IWMEncProfileCollection* pProColl; IWMEncProfile* pPro; IWMEncBroadcast* pBrdcst; IWMEncPushDistribution* pPushDist; CComBSTR bstrName = NULL; long lCount; int i; // Initialize the COM library and retrieve a pointer // to an IWMEncoder interface. hr = CoInitialize(NULL); if ( SUCCEEDED( hr ) ) { hr = CoCreateInstance(CLSID_WMEncoder, NULL, CLSCTX_INPROC_SERVER, IID_IWMEncoder2, (void**) &pEncoder); } // Retrieve the source group collection. if ( SUCCEEDED( hr ) ) { hr = pEncoder->get_SourceGroupCollection(&pSrcGrpColl); } // Add a source group to the collection. if ( SUCCEEDED( hr ) ) { hr = pSrcGrpColl->Add(CComBSTR("SG_1"), &pSrcGrp); } if ( SUCCEEDED( hr ) ) { hr = pSrcGrp->AddSource(WMENC_AUDIO, &pSrcAud); } if ( SUCCEEDED( hr ) ) { hr = pSrcGrp->AddSource(WMENC_VIDEO, &pSrcVid); } // Add a video and audio source to the source group. if ( SUCCEEDED( hr ) ) { hr = pSrcAud->SetInput(CComBSTR("Device://Default_Audio_Device")); } if ( SUCCEEDED( hr ) ) { hr = pSrcVid->SetInput(CComBSTR("Device://Default_Video_Device")); } // Choose a profile from the collection. if ( SUCCEEDED( hr ) ) { hr = pEncoder->get_ProfileCollection(&pProColl); } if ( SUCCEEDED( hr ) ) { hr = pProColl->get_Count(&lCount); } for (i=0; i<lCount; i++) { if ( SUCCEEDED( hr ) ) { hr = pProColl->Item(i, &pPro); } if ( SUCCEEDED( hr ) ) { hr = pPro->get_Name(&bstrName); } if (_wcsicmp(bstrName,CComBSTR("Windows Media Video 8 for Local Area Network (384 Kbps)"))==0) { // Set the profile in the source group. if ( SUCCEEDED( hr ) ) { hr = pSrcGrp->put_Profile(CComVariant(pPro)); } break; } } // Specify the push distribution variables, including the Windows Media // server name, publishing point, and announcement files. // Provide real values for the following placeholders. if ( SUCCEEDED( hr ) ) { hr = pEncoder->get_Broadcast(&pBrdcst); } if ( SUCCEEDED( hr ) ) { hr = pBrdcst->QueryInterface(IID_IWMEncPushDistribution, (void**)&pPushDist); } if ( SUCCEEDED( hr ) ) { hr = pPushDist->put_PortNumber(WMENC_PROTOCOL_PUSH_DISTRIBUTION, 70); } CComBSTR strServerName("MyWMServer"); CComBSTR strPubPoint("MyPubPoint"); CComBSTR strPubTemplate("AnotherPubPoint"); CComBSTR MyNSCFile("\\\\servername\\share\\MyPubPoint.nsc"); CComBSTR MyNSCURL("\\\\servername\\share\\PubPoint.nsc"); CComBSTR MyASXFile("\\\\servername\\share\\MyPubPoint.asx"); // Remove the publishing point when the broadcast is over. if ( SUCCEEDED( hr ) ) { hr = pPushDist->put_AutoRemovePublishingPoint(VARIANT_TRUE); } // Set the push distribution variables. if ( SUCCEEDED( hr ) ) { hr = pPushDist->put_ServerName(strServerName); } if ( SUCCEEDED( hr ) ) { hr = pPushDist->put_PublishingPoint(strPubPoint); } if ( SUCCEEDED( hr ) ) { hr = pPushDist->put_Template(strPubTemplate); } // Initialize the encoding session. if ( SUCCEEDED( hr ) ) { hr = pEncoder->PrepareToEncode(VARIANT_TRUE); } // Generate the announcement file. if ( SUCCEEDED( hr ) ) { hr = pPushDist->GenerateMulticastInfoFile(MyNSCFile); } if ( SUCCEEDED( hr ) ) { hr = pPushDist->GenerateAnnouncementFile(MyNSCURL, MyASXFile); } // Start the encoding process. if ( SUCCEEDED( hr ) ) { hr = pEncoder->PrepareToEncode(VARIANT_TRUE); } if ( SUCCEEDED( hr ) ) { hr = pEncoder->Start(); // Stop the encoding process. if ( SUCCEEDED( hr ) ) { // Keep the console window open. printf("Press a key to stop broadcasting."); // Wait for a key press. while(!kbhit()) _asm nop; hr = pEncoder->Stop(); } } }Wie gesagt, die Audio und Videodaten werden korrekt übergeben, aber beim Streamen bekommt er ab
// Initialize the encoding session. if ( SUCCEEDED( hr ) ) { hr = pEncoder->PrepareToEncode(VARIANT_TRUE); }einen Minuswert für hr zurück. Danach führt das Programm natürlich keine if-Abfrage mehr aus. Ich kann mir eigentlich nur noch erklären, dass ich die Werte für den Server falsch setze (siehe erstes posting).
-
Also eigentlich muß ich nun wissen, wie die Daten übergeben werden
CComBSTR strServerName("Mein_Stream_Server"); // oder CComBSTR strServerName("http://192.168.1.10:8080"); // oder CComBSTR strServerName("\\\\192.168.1.10:8080"); // oder CComBSTR strServerName("192.168.1.10:8080"); // oder ganz anders ??? // und natürlich in ähnlicher Weise für die anderen Variablen! CComBSTR strPubPoint("MyPubPoint"); CComBSTR strPubTemplate("AnotherPubPoint"); CComBSTR MyNSCFile("\\\\servername\\share\\MyPubPoint.nsc"); CComBSTR MyNSCURL("\\\\servername\\share\\PubPoint.nsc"); CComBSTR MyASXFile("\\\\servername\\share\\MyPubPoint.asx");Das wird doch wohl irgenwer wissen, oder???