Page 1 of 1

mozilla-plugin-vlc and subtitles

Posted: 07 Mar 2007 11:37
by auelihein
Hi everybody,
I am using the mozilla-plugin-vlc to play a streamed video from a distant vlc. The video is a TS(transport stream) format. The problem is that I am unable to switch among all the audio stream of the original video and the worth is that I can't display the subtitles.
I would like to know if a choice among audio streams and subtitles is possible by the mozilla-pulgin-vlc like it is by the real vlc.
Thank you all !
aurelien

Posted: 07 Mar 2007 20:12
by Spellcoder
If you're using 0.8.6 or newer of the plugin you can use the options to set the starting audio-track and subtitle:

Code: Select all

var options = ':audio-track='+(audioTrack)+' :sub-track='+subtitleTrack; vlc.playlist.clear(); vlc.playlist.add(URI,null,options); // MRL, name, options vlc.playlist.play();
If you're using an 0.9.0 nightly you can switch audio-streams too (not subtitle streams, although I suggested it here: viewtopic.php?t=32397).

Setting an audio-stream

vlc.audio.track = streamID;

Getting a list of available audio-streams:
There's no way to get a list of available audio-streams or which language they are (I requested the feature: viewtopic.php?t=29337), but you can cheat by trying to changing audio stream while playing to see whether VLC will return an error, like this:

Code: Select all

var streamExists = []; // DVD has 8 possible audio streams currentStream = player.playerObj.audio.track; for (var streamID=1; streamID<=8; streamID++) { try { streamExists[streamID] = player.playerObj.audio.track = streamID; } catch(err) { streamExists[streamID] = false; } } player.playerObj.audio.track = currentStream;
Starting an video in 0.9.0

In 0.9.0 nightly the vlc.playlist.add() method is asynchronous (ticked #1083). So it doesn't add the item right away, so you'll have to wait before playing, like this:

Code: Select all

vlc.playlist.clear(); vlc.playlist.add(URI,null,options); // MRL, name, options delayedPlay(); function delayedPlay() { if (vlc.playlist.items.count == 0) { setTimeout('delayedPlay()',50); return; } vlc.playlist.play(); }

edit: changed code to detect audio-streams to start from index 1 and to set the original stream back after it scanned the streams.

Posted: 08 Mar 2007 16:26
by auelihein
I would like to thank you a lot for the time spent !!!
Every thing work perfectly now, the mozilla-plugin-vlc is very powerfull!
I would like to know though where you get those informations about the parameters of the mozilla-vlc-plugin.
Thank you in advance
aurelien

Posted: 08 Mar 2007 16:55
by Spellcoder
This is the official description of the API:
http://www.videolan.org/doc/play-howto/ ... l#id294468

It's not 100% complete/correct though:
  • afaik there's also an .playlist.playItem(itemID) method
  • it doesn't mention .audio.track yet, probably since it's in 0.9.0 nightlies (testversions) and not in stabile version yet
  • doesn't mention method .playlist.add() gives back an ID. You can use this ID if you want to play or remove a specific item from the playlist.

    Code: Select all

    itemID = vlc.playlist.add(URI,null,options); .. vlc.playlist.removeItem( itemID ); or vlc.playlist.playItem( itemID );
  • it says about .playlist.add() : 'All input values must be given as string', but I hear it accepts an array for options too(?)
If you scroll up in the webpage I linked (or use this direct link: http://www.videolan.org/doc/play-howto/ ... l#id291949 ) you can see the list of all (command-line)options you can pass.

I'm thinking about writing some examples or tutorial on my website on basic usage, audio-streams, subtitles, dvd-video, deinterlacing, which bugs to expect and workaround and getting firefox+vlc to run from DVD. I'll do it when I have time and if there's interest in it.

Posted: 08 Mar 2007 17:12
by auelihein
your tutorial is a really good idea !
thank you for the documentation, i was blind when i read it before, because of course i already read it.
thank you and let me know if you plan to make your tutorial.
aurelien

Posted: 08 Mar 2007 18:05
by Jean-Baptiste Kempf
And use the WIki for documentations !

Posted: 09 Mar 2007 15:16
by auelihein
I have a big problem,everything was working well, i didn't touch anything and now it doesn't work anymore, i don't understand what is going on!
The problem is that the function

Code: Select all

var itemId = vlc.playlist.add(media_url,null,':audio-track=0 :sub-track=0');
is not recognized anymore
but if I try to use :

Code: Select all

var itemId = vlc.playlist.add(media_url);
It works but i can't choose my subtitleTrack and my audioTrack anymore...
Did i use something forbidden before and disable the function vlc.playlist.add(mrl,name,options)
Thank you for your help.[/code]

Posted: 10 Mar 2007 12:48
by Spellcoder
I have a big problem,everything was working well, i didn't touch anything and now it doesn't work anymore, i don't understand what is going on!
The problem is that the function

Code: Select all

var itemId = vlc.playlist.add(media_url,null,':audio-track=0 :sub-track=0');
is not recognized anymore
Which version of the plugin do you use?

In case you might use my 'hack' to read which streams are available, you have to remember which track was active and set it back afterwards.

Posted: 12 Mar 2007 09:33
by auelihein
I am using the version 0.8.6a of vlc, I guess that the plugin version is the same ;-)
I didn't change anything now it is working on mozilla firefox, but not with internet explorer.
With internet explorer I'm using mv_embed which permits to use a vlc plugin under javascript, i use that too for mozilla and safari
The function vlc.playlist.add doesn't seem to be recognized. I should check if it is not a trouble with the java !
aurélien

Posted: 12 Mar 2007 14:40
by Spellcoder
I don't know why it would start to fail.
Did find some other interesting stuff though:

A list of all options you can pass to VLC:
http://wiki.videolan.org/index.php/VLC_ ... -line_help

More recent version of the VLC-plugin methods:
http://wiki.videolan.org/Documentation: ... 0.8.5.1.29

And also the newest nightly now supports changing subtitles during playback (thanks to jpsaman).

The first nightly to have this can be found here:
http://nightlies.videolan.org/build/win ... 0312-0000/

I've tested it with some DVD's and it seems to work nicely :).
How to use:

Selecting an subtitle stream
like vlc.audio.track the streamnumber is one higher than if set with the command-line (probably because 0 means 'off')

Code: Select all

vlc.video.subtitle = stream+1
disable subtitle

Code: Select all

vlc.video.subtitle = 0

Posted: 12 Mar 2007 16:35
by Spellcoder
Ok, by coincidence I also have a case where VLC fails to play back sound.
It might have something to do with trying to start playback before VLC is fully initialized?? In any cause it happened in both 0.8.6, but in 0.9.0 I could force the sound to restart (when playback started) using:

Code: Select all

player.playerObj.audio.track = player.playerObj.audio.track;
Somehow this line made me smile :lol:
Just trying to give you an idea what might cause it...
Don't know if it's any help.

Posted: 12 Mar 2007 18:08
by Spellcoder
And use the WIki for documentations !
ok, I've noted that .playlist.add gives back a item number, added the missing playlist.playItem(), changed an incorrect note after .remoteItemID, noted .video.subtitle=0 disables the subtitles and also noted .audio.track=0 disables the audio. jpsaman allready wrote .audio.track/.video.subtitle in the wiki (even before he submitted the code for them I see :P)

Posted: 13 Mar 2007 09:47
by auelihein
I figured out that i can't use the read/write properties but just the methods implemented and not all of them. They probably just have been implemented in the new mozilla-plugin-vlc. I'm gonna try the vlc 0.9.0 that you gave me.
Thank you again

Posted: 13 Mar 2007 11:16
by auelihein
Ok i found the problem, it was just a problem of structure,
Actually we have to do that :

Code: Select all

var audioTrack = 1; var subtitleTrack = 1; var options = new Array(":audio-track="+(audioTrack)+":sub-track="+subtitleTrack); var itemId = vlc.playlist.add(media_url,null,options);
and now I'm able to choose the audio track i want and if i want subtitles,
I will let you know if i have new troubles
Thank you for everything
aurélien

Posted: 13 Mar 2007 14:53
by auelihein
Hum i still have a trouble, now internet explorer doesn't stop without any reason but I don't know how to pass parameter, i mean when i wrote :

Code: Select all

var options = new Array('sub-track=0');
Subtitles appear,
when i do :

Code: Select all

var options = new Array('audio-track=0');
the audio track is selected
but i can't do that, all of that doesn't work :

Code: Select all

var options = new Array(':audio-track=0'+':sub-track=0'); var options = new Array('audio-track'=>'0','sub-track'=>'0');
thank you again
aurelien

Posted: 13 Mar 2007 15:58
by auelihein
there we go

Code: Select all

var options = new Array('aspect-ratio='+aspectRatio,'sub-track='+subtitleTrack,'audio-track='+audioTrack);

Re: mozilla-plugin-vlc and subtitles

Posted: 25 Feb 2008 12:42
by donniewiko
im bumping this thread, since i havent found any information suitable to my knowledge to implement sub-tracks in my vlc page.

Here is my situation:
I created a site, where ppl can store movies on, and use a different input field to select te movies. This works like a charm.
I want to add the possibility to add subtitles to the movie.

Here is my problem:
I followed all the info posted in this thread, i also tried out the nightly, i read and followed this thread: browser plugin/subtitles but i still cant figure out what to do.

Here is what i tried:
I used both options:

Code: Select all

vlc.video.subtitle=1 and 0.
I made a var with subtitle =

Code: Select all

vlc.video.subtitle="location/file.sub";
i entered

Code: Select all

var options = new Array(":aspect-ratio="+aspectRatio,':sub-track=0');
but i cant get it to work.

i hope someone will help me with this.

thanks in advance.