Coder Social home page Coder Social logo

node-vlc's Introduction

node-vlc

node bindings for libvlc using ffi

Currently this package depends on VLC >= 2.0.1, if you're on Mac OS X or Windows it tries to detect the location of your VLC installation and find libvlc under that.

Usage

The ffi library can currently only be initialized once per process, so you can't use multiple versions of libvlc in the same process.

The library tries to deduce the common location libvlc.so, /usr/lib/libvlc.so or /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib for instance. If your libvlc is named or versioned differently set vlc.LIBRARY_PATHS to the full path (including filename) of your preferred version.

If libvlc isn't found after trying all of vlc.LIBRARY_PATHS it attempts to load from your systems normal library loading parameters (i.e. /etc/ld.so/conf)

Searching is in array order, and is synchronous, but only happens on the first initialization i.e. the first time you call var instance = new vlc('-I', 'dummy'); After the first successful initialization all dependent modules will use that file for interactions.

For a quick example see examples/vlc.js

There are some operations that vlc performs that are synchronous. Currently this library makes no attempt to work around such things, so be sure you know what you're doing.

libvlc does have an event interface, but it is not as robust as nodes nor does it necessarily match the node pattern.

There is not much documentation at the moment, use the source luke. For that matter, there's not much documentation around libvlc either.

Events

Currently you can attach to the following events

  • Media -- odd bug, on osx you need to parseSync before attaching any handlers else the process freezes, I haven't investigated fully to understand why yet.
    • MetaChanged - callback receives metadata field name that changed
    • SubItemAdded - callback receives new media item
    • DurationChanged - callback receives the new duration
    • ParsedChanged - callback receives the new parsed state
    • Freed - callback receives media item that was freed (wtf this seems like a bad idea)
    • StateChanged - callback receives the new media state
  • MediaPlayer
    • MediaChanged - no argument
    • NothingSpecial - no argument
    • Opening - no argument
    • Buffering - callback receives percent full of cache
    • Playing - no argument
    • Paused - no argument
    • Stopped - no argument
    • Forward - no argument
    • Backward - no argument
    • EndReached - no argument
    • EncounteredError - no argument
    • TimeChanged - callback receives the new time (constantly update while playing)
    • PositionChanged - callback receives new position (constantly updated while playing)
    • SeekableChanged - callback receives truthy of seekable
    • PausableChanged - callback receives truthy of pausable
    • TitleChanged - callback receives truthy of title changed
    • SnapshotTaken - no argument
    • LengthChanged - no argument
    • Vout - callback receives the new number of vout channels

node-vlc's People

Contributors

fatshotty avatar tjfontaine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-vlc's Issues

No video?

Hi,

Maybe I misunderstand the purpose of the module, but when I run your example I can hear the audio of the video file I play, and the test.png file is created and shows what it should. But I don't see any video when this runs.

Is this correct behavior?

Connect to running VLC instance?

Hi,

I'd like to know if it's possible to connect to a running VLC instance? I'd like to play media using VLC GUI and get media info inside of the Node app. Is there any way to do this?

Regards,
Max

Failed to find LibVLC >= 2.0.1, make sure it's installed

Windows7, having VLC v2.2.0 installed. I run the following code:

var vlc = require('vlc')([
    '-I', 'dummy',
    '-V', 'dummy',
    '--verbose', '1',
    '--no-video-title-show',
    '--no-disable-screensaver',
    '--no-snapshot-preview',
]);

vlc.LIBRARY_PATHS = "D:\\Program Files\\VideoLAN\\VLC\\libvlc.dll";
var media = vlc.mediaFromFile("D:/media/musik/Ludovico Einaudi/Ludovico Einaudi - Fly.mp3");

But getting the error: Failed to find LibVLC >= 2.0.1, make sure it's installed.

All the paths are correct. Maybe an error in the version control or am I doing something wrong?

free : the handle is invalid

Hi,

In the media.js file, it tries to do the following (which does not work on my computer win8-x64). Isn't is linux specific, of isn't there a way of disposing the media directly within the libvlc api ?

var libc = ffi.Library(null, {
  'free': ['void', [ 'pointer' ]],
});

How to install this package and use html to render the video ouput?

Hi,

I'm currently working on making a streaming app using electron with vlc. I have tried webchimera.js and it've worked great on Windows but not on Linux so I'm looking for another solution and came across this one library. However, I have no idea how to use it as in the title of this thread, any suggestion would be really appriciated.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.