Page 1 of 1

libvlc API

Posted: 05 Sep 2008 21:04
by Erwan100
Hello,

I have been rewriting a C++ program I made that integrated the libvlc API so that I can use it with the latest VLC0.9.1 release.

Everything is ok except for two things:

1- snapshot
When using libvlc_video_take_snapshot, I keep getting an empty file (file is created with size = 0)

2- record
I used the function VLC_VariableSet ( object_id , "key-pressed" , param ); with param representing CRTL+SHIFT+R which worked perfectly with older versions of vlc.0.9.
This function seems not to be available any more.
Any idea as to how to program recording through the API ?

As an enhancement to the API, wouldn't it be great to add a function dedicated to triggering recording. Also, this function should accept a filename as a parameter in order to manage the resulting file.

I hope this forum is a right place for such a post. Any help will be much appreciated.

Erwan

Re: libvlc API

Posted: 11 Sep 2008 17:08
by Erwan100
Hello,

My previous post didn't get much attention. Anyway, ...

My initial purpose was to write a C++ program in order to watch TV (DVB-T) on a Linux PC. One of the key function was to be able to toggle recording any incoming TS feed at will. VLC already did most of the work since there is the "--access_filter record" option.

My two main gripes were :

- the output file name is hardcoded in modules/access_filter/record.c and we end up with a file name like "Unknown + a formatted date" with several unfriendly spaces !
- there is no way to trigger recording through the official VLC APIs.

Well, I have ended up :
1- adding in modules/access_filter/record.c :
var_Create( p_input, "record-filename", VLC_VAR_STRING );
and a few lines to take the filename into account
2 - adding to the libvlc API:
VLC_PUBLIC_API void libvlc_toggle_record ( libvlc_media_player_t *, char *, libvlc_exception_t * );
3 - coding this function with libvlc_video_take_snapshot as an example.


And it works perfectly. And to my amazement with so few lines of code ..... BTW, the internal structure of VLC seems great and quite self-explanatory to me.

If my code is of interest or if you VLC folks are willing to have it integrated into the VLC product, I can send the modified files.

Regards

Re: libvlc API

Posted: 13 Sep 2008 00:57
by dionoea
Glad you could sort it out yourself :) Patches are of course welcome on vlc-devel@videolan.org . Note that the record system changed in Git master (1.0.0 and up) to allow recording streams other than ts.

libvlc_video_take_snapshot

Posted: 30 Sep 2008 14:36
by corvusvideo
I have observed the same behavior with "libvlc_video_take_snapshot". No exception is raised, and a file is created, but the file is always 0 bytes in size and (obviously) does not contain an image.

I tried this with 0.9.2, 0.9.3, and the current nightly 0.9.4 and still have not had any luck. I have tried both with video paused and playing.

Did you ever get "libvlc_video_take_snapshot" to create an output file? If so could you post a code snippet showing how you did it? I am sure I am just missing some dumb but I have run out of variations to try.

Thank you.

Re: libvlc API

Posted: 02 Oct 2008 22:36
by Erwan100
Hello,

To whom It may be of interest

I eventually worked out the snapshot problem (file created with size = 0)

I had forgotten the --enable-swscale option when I compiled and installed the ffmpeg contrib. Doing so solved the problem !

Regards
Erwan

Re: libvlc API

Posted: 04 Jun 2009 11:46
by rarao
i have the 0 byte file size issue when capturing a snapshot using libvlc_video_take-snapshot(...) method just like everyone seems to be having. I am using v0.9.9a version of vlc dlls (libvlc.dll and libvlccore.dll ) and using C#.

I read the message from erwan...of using "--enable-swscale" while compiling. Can anyone explain how and where to use this switch ...is it something i need to use before compiling the to get the dlls or while creating the vlc instance in the code... just like "--plugin-path=.\\plugins"

thanks in advance for the help.

regards
Rao

Re: libvlc API

Posted: 14 Oct 2009 20:01
by Georgeqi
I use 1.0.0 with libvlc_video_take_snapshot and I got the image correctly, I just need to add delay before taking the snap shot so that video is stable, which is pure try and error.

I am investigating the ways to set the delay more intelligently. Any idea?

George