[vlc] Re: vlc mozilla plugin and drop-down menu under firefox

Jean-Paul Saman jean-paul.saman at planet.nl
Mon May 21 19:59:54 CEST 2007


ml wrote:
> Hi,
> After some effort I was able to compile the mozilla vlc plugin under Linux.
> The purpose for me was to build a simple multi-playlist under Firefox in 
> order to watch the "Multiposte" channels available through the Freebox 
> in France.
> This was done about 2 months ago. For this time I have been able to 
> listen and watch radio and TV under firefox while doing other things 
> with the latter.
> 
> In order to compile againt the mozilla source you'll have to retreive 
> the source of mozilla (or firefox) and to compile it not entirely but 
> enough to have the directory mozilla/dist/sdk compiled.
> 
> It works well ... when firefox doesn't crash (that the case half time) : 
> I built a serie of drop down menus to select TV or Radio channels coming 
> from the Freebox of from elsewhere (Radio Italia for example).
> The OSD works and full screen is supported.
> 
> Here is the modified vlcplugin.cpp that contains the necessary options 
> to the VLC command line. It's a diff against the 0.86b version of VLC.

The options below can be passed to the standard vlc browser plugin with 
vlc.playlist.addTarget(mrl,name,options); JS function. See the 
documentation.

Gtz,
Jean-Paul Saman.
> 
> ------------------------------------------------------------------------
> 
> 50a51
>  >     p_scriptObject(NULL),
> 74a76
>  >     char parg[30];
> 176a179,198
>  >         else if( !strcmp( argn[i], "video"))
>  >         {
>  >             if( !boolValue(argv[i]) )
>  >             {
>  >                 ppsz_argv[ppsz_argc++] = "--no-video";
>  >             }
>  >         }
>  >         else if( !strcmp( argn[i], "ts-es-id-pid" ) )
>  >         {
>  >             if( boolValue(argv[i]) )
>  >             {
>  >                 ppsz_argv[ppsz_argc++] = "--ts-es-id-pid";
>  >             }
>  >         }
>  >         else if( !strcmp( argn[i], "audio-track-id" ) )
>  >         {
>  >                 strcpy(parg, "--audio-track-id=") ;
>  >                 strcat ( parg, argv[i] ) ;
>  >                 ppsz_argv[ppsz_argc++] = parg;
>  >         }
> 183a206,207
>  >     for( int i = 0; i < ppsz_argc ; i++ )
>  >         fprintf(stderr, "%s ", ppsz_argv[i]);
> 285a310,311
>  >     if( p_scriptObject )
>  >         NPN_ReleaseObject(p_scriptObject);
> 439a466,474
>  > NPObject* VlcPlugin::getScriptObject()
>  > {
>  >     if( NULL == p_scriptObject )
>  >     {
>  >         p_scriptObject = NPN_CreateObject(p_browser, p_scriptClass);
>  >     }
>  >     return NPN_RetainObject(p_scriptObject);
>  > }
>  >
> 
> ------------------------------------------------------------------------
> 
> Here are a few extracts of the full document written. It aims at showing 
> what can be done in order to build a drop down menu
> 
> /* A JSON writing of the channels object */
> channels = {
>    france2: {
>            name:"France 2",
>            type:"tv",
>            target:"201",
>            logo:"france2.png"
>        },
>    france3: {
>            name:"France 3 national",
>            type:"tv",
>            target:"202",
>            logo:"france3.png"
>        },
>    france5: {
>            name:"France 5",
>            type:"tv",
>            target:"203",
>            logo:"france5.png"
>        },
>    arte: {
>            name:"Arte",
>            type:"tv",
>            target:"204",
>            logo:"arte.png"
>        },
>    lemouv: {
>            name:"Le Mouv'",
>            type:"radio",
>            track:"1007",
>            target:"110022",
>            logo:"lemouv.png"
>        },
>    ritalia: {
>            name:"Radio Italia",
>            type:"webradio",
>            target:"mms://radioitalia.wm.p1.str3.com/rditaliahq",
>            logo:"ritalia.png"
>        }
> }
> 
>    /* screen points about the node corresponding to the "screen" div. */
>    var screen = document.getElementById("screen");
> 
>    /* The plugin is embedded into the screen */
>    var embed = document.createElement("embed");
> 
>    /* Correct attributes of the embed tag are set */
>    /* depending whether it's a radio, tv or film */
>    embed.setAttribute("type", "application/x-vlc-plugin");
>    embed.setAttribute("name", "frame");
>    embed.setAttribute("autoplay", "yes");
>    if ( channel.type == "radio" ) {
>        embed.setAttribute("hidden", "no");
>        embed.setAttribute("video", "0");
>        embed.setAttribute("ts-es-id-pid", "yes");
>        embed.setAttribute("audio-track-id", channel.track);
>        embed.setAttribute("width", "1px");
>        embed.setAttribute("height", "1px");
>        embed.setAttribute("target", 
> "rtsp://mafreebox.freebox.fr/freeboxtv/" + channel.target);
>    }
> 
>    screen.appendChild ( embed );
>      /* Function to play the stream */
>    function play(){
>        document.frame.play();
>    }
> 
>    /* Function to stop the stream */
>    function stop(){
>        document.frame.stop();
>    }
> 
>    /* Method to make fullscreen (if you want a button to do it beacause 
> a double click on the screen is enough) */
>    function fullscreen(){
>        document.frame.fullscreen();
>    }
> 
> Have fun !
> db
> 

-- 
This is the vlc mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/support/lists.html



More information about the vlc mailing list