dturing / node-gstreamer-superficial

Superficial gstreamer binding
MIT License
130 stars 45 forks source link

pipeline not start #45

Closed dradenvandewind closed 3 years ago

dradenvandewind commented 3 years ago

hello can you explain how enable gst_debug for watch log ? I want implement this example https://gstreamer.freedesktop.org/documentation/opengl/glshader.html?gi-language=javascript

However, my pipeline no work

bellow my test code :

!/usr/bin/env node

const gstreamer = require('../..'); const { exec } = require('child_process');

function execPromise(command) { return new Promise(function(resolve, reject) { exec(command, (error, stdout, stderr) => { if (error) { reject(error); return; } resolve(stdout.trim()); }); }); }

async function set_shader(obj) {

try { var result = await execPromise('cat myshader.frag'); console.log(result); var test = typeof 'result'; //console.log('arg',test); console.log(obj) obj['fragment'] = result; console.log(obj)

    return result;

} catch (e) { console.error(e.message); } }

const pipeline = new gstreamer.Pipeline('videotestsrc ! glupload ! glshader name=glshader ! glimagesink' )

pipeline.play(); if( pipeline != 0) { console.log(' start pipeline'); }

const glshader = pipeline.findChild('glshader') if(glshader != 0) { set_shader(glshader); } else { console.log('gltransformation isn t available '); }

dturing commented 3 years ago

Hi @dradenvandewind,

you can enable gstreamer debugging output by setting the environment variable GST_DEBUG, like so: $ GST_DEBUG node ./script.js

as for your example, you have to make sure your node script does not quit early - a gstreamer-superficial pipeline does not keep the node process running by itself. Your example works, if you add at the bottom:

setInterval( function() {
    console.log("running")
}, 1000 );

inspired by your example, i have added a small self-contained example here: glshader.js