jvcleave / ofxRPiCameraVideoGrabber

development of ofxRPiCameraVideoGrabber, an addon to control the native Raspberry Pi camera in openFrameworks
89 stars 17 forks source link

[ error ] bool ofxOMXPlayerEngine::openPlayer(int): Opened video FAIL #31

Open rihani opened 8 years ago

rihani commented 8 years ago

not sure why this is happening, please help.

I get the following error when trying to re-play the youtube stream after stopping it. see error code below and also code i am using. note that i do not have any issues playing the file the first time. i think i need to close the player properly but don't think omxPlayer.close(); is doing much.

[ error ] bool ofxOMXPlayerEngine::openPlayer(int): Opened video FAIL

Code:

void ofApp::setup()
{
      ofSetLogLevel(OF_LOG_VERBOSE);
       udpConnectionRx.Create();  
    udpConnectionRx.Bind(8000); //incomming data on my port # ...  
    udpConnectionRx.SetNonBlocking(true);   
}

//--------------------------------------------------------------
void ofApp::update()
{
    char udpMessage[100000];  
    udpConnectionRx.Receive(udpMessage,100000);     
    rxMessage = udpMessage;  
    if(rxMessage!=""){  
        cout<<"udpMessage-"<<udpMessage<<"-"<<endl;  
        rxMessage = udpMessage;  

        if(rxMessage=="play"){ 

    system("livestreamer https://youtu.be/D8YHp37-tp0 480p --hls-segment-threads 2 -o /home/pi/backpipe &");
    ofSleepMillis(10000);
    cout<<"10 seconds ellapsed"<<endl; 
    string videoPath = ofToDataPath("/home/pi/backpipe", true);     
    ofxOMXPlayerSettings settings;
        settings.useHDMIForAudio = false;   //default true
        settings.enableTexture = true;      //default true
        settings.enableAudio = false;       //default true, save resources by disabling
    omxPlayer.setup(settings);
    omxPlayer.loadMovie(videoPath);
        }

        if(rxMessage=="close"){ 
        omxPlayer.close();
        system("sudo pkill livestreamer &");

        }

    }  

}

//--------------------------------------------------------------
void ofApp::draw(){

    omxPlayer.draw(0, 0, ofGetWidth(), ofGetHeight());

    int scaledHeight    = omxPlayer.getHeight()/4;
    int scaledWidth     = omxPlayer.getWidth()/4;
    omxPlayer.draw(ofGetWidth()-scaledWidth, ofGetHeight()-scaledHeight, scaledWidth, scaledHeight);

}