libVLC:Set Video Output for movies with more then one stream
Posted: 17 May 2009 22:01
Hello
I'm trying to use jvlc with the newest release candidate of vlc (1.0.0 rc1)...It's cool to see that the new vlc is able to stream quicktime movies, really nice.
I want to stream a quicktime movie, which has the following streams inside:
-> Stream 0: Video, h264 (speaker)
-> Stream 1: Video, h264 (power point slides)
-> Stream 2: Audio, mp4a
All works fine, I can stream this movie over http and receive it with vlc or jvlc. The Video with the speaker opens and a second window with the power point slides appears and I can hear the speaker. But with using the libVLC with JVLC, I have the following problem:
1) When I use the depracated Playlist (depracated in JVLC):
add movie to playlist: libvlc_playlist_add(libvlcInstance, uri, name, exception)
play movie: libvlc_playlist_play(libvlcInstance, id, options.length, options, exception);
set video output to canvas: libvlc_video_set_parent(instance, drawable, exception);
-> One of the streams (maybe the one who first comes to the client) is displayed in the canvas, the second stream is displayed outside the canvas in a additional window.
-> I could life with that, but I have to be sure that the power point slides are displaying in the additional window...how can I achieve that?
-> Second Problem here: I cannot get the time of the movie...because the Media Player returned from libvlc_playlist_get_media_player(libvlcInstance, exception) doesn't seem to work. For example getTime from that object always return 0...-> How can I get the actual time, when using the playlist to play movies?
2) When I use the media player in jvlc:
play the movie: libvlc_media_player_play(instance, exception);
set video output to canvas: libvlc_video_set_parent(instance, drawable, exception);
-> Both Streams are displaying in additional windows, none is displayed in the canvas...
-> If I use libvlc_media_player_set_drawable(mi, drawable, exception) with "mi" as the media player instance:
-> The first arrived stream is displayed in the canvas, when the second arrives, it is displayed on the same canvas -> So I can see only the second arrived stream...
How can I tell the libVLC where to display (on which canvas) the two streams (powerpoint, speaker), because libvlc_media_player_set_drawable only let me set one canvas for the whole movie? Or if this isn't possible, how can I force the playlist to show the speaker stream (always stream 0) in the canvas and the other outside in an additional window?
I know JVLC isn't really strong supported here anymore, but I think also the C# wrapper should be able to handle this issue in a way...
Thanks for your help!
Peter
I'm trying to use jvlc with the newest release candidate of vlc (1.0.0 rc1)...It's cool to see that the new vlc is able to stream quicktime movies, really nice.
I want to stream a quicktime movie, which has the following streams inside:
-> Stream 0: Video, h264 (speaker)
-> Stream 1: Video, h264 (power point slides)
-> Stream 2: Audio, mp4a
All works fine, I can stream this movie over http and receive it with vlc or jvlc. The Video with the speaker opens and a second window with the power point slides appears and I can hear the speaker. But with using the libVLC with JVLC, I have the following problem:
1) When I use the depracated Playlist (depracated in JVLC):
add movie to playlist: libvlc_playlist_add(libvlcInstance, uri, name, exception)
play movie: libvlc_playlist_play(libvlcInstance, id, options.length, options, exception);
set video output to canvas: libvlc_video_set_parent(instance, drawable, exception);
-> One of the streams (maybe the one who first comes to the client) is displayed in the canvas, the second stream is displayed outside the canvas in a additional window.
-> I could life with that, but I have to be sure that the power point slides are displaying in the additional window...how can I achieve that?
-> Second Problem here: I cannot get the time of the movie...because the Media Player returned from libvlc_playlist_get_media_player(libvlcInstance, exception) doesn't seem to work. For example getTime from that object always return 0...-> How can I get the actual time, when using the playlist to play movies?
2) When I use the media player in jvlc:
play the movie: libvlc_media_player_play(instance, exception);
set video output to canvas: libvlc_video_set_parent(instance, drawable, exception);
-> Both Streams are displaying in additional windows, none is displayed in the canvas...
-> If I use libvlc_media_player_set_drawable(mi, drawable, exception) with "mi" as the media player instance:
-> The first arrived stream is displayed in the canvas, when the second arrives, it is displayed on the same canvas -> So I can see only the second arrived stream...
How can I tell the libVLC where to display (on which canvas) the two streams (powerpoint, speaker), because libvlc_media_player_set_drawable only let me set one canvas for the whole movie? Or if this isn't possible, how can I force the playlist to show the speaker stream (always stream 0) in the canvas and the other outside in an additional window?
I know JVLC isn't really strong supported here anymore, but I think also the C# wrapper should be able to handle this issue in a way...
Thanks for your help!
Peter