我们在Linux应用程序中使用libvlc播放来自IP摄像机的RTP MJPEG流。我们希望有两个libvlc_media_players播放视频,一个在GtkDrawingArea中播放完整图像,另一个在另一个GtkDrawingArea中播放视频的裁剪/调整大小部分(伪缩放)。 问题是,只有媒体播放器之一在工作。似乎无论哪个实例首先连接,都会阻止第二个实例绑定到端口。
我们需要一种将流量复制到两个端口的建议或其他建议?
答案 0 :(得分:0)
根据所需的确切结果,您至少有两种方法可以实现所需的目标。
虽然您只能调用libvlc_new
一次,因此应用中始终只有1个libvlc
实例在运行,但是您可以根据需要从libvlc
创建任意数量的媒体播放器。但是它们将是独立的,因此,如果您需要精确的同步,那么这不是您要使用的。
另一种方法是复制视频输出,例如使用
Clone video filter (clone)
Duplicate your video to multiple windows and/or video output modules
--clone-count=<integer> Number of clones
Number of video windows in which to clone the video.
--clone-vout-list=<string> Video output modules
You can use specific video output modules for the clones. Use a
comma-separated list of modules.
https://wiki.videolan.org/VLC_command-line_help
带有libvlc_media_add_option
(使用此功能时,将--
替换为:
)。
您也可以将--sout
与#duplicate
一起使用。 https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/
根据您选择的方式,VLC可能会自己创建一个新窗口,您可能必须将其抓取并合并到应用程序中。