我们在Linux应用程序中使用libvlc来播放来自IP摄像机的RTP MJPEG流。我们希望有两个libvlc_media_players播放视频,一个在GtkDrawingArea中播放完整图像,另一个在另一个GtkDrawingArea中播放视频的裁剪/调整大小的部分(伪缩放)。问题是,只有一个媒体播放器在工作。似乎无论哪个实例先连接,都会阻止第二个实例绑定到端口。
我们需要一种将流量复制到两个端口的方法或任何其他建议?
发布于 2020-05-21 08:30:06
你至少有两种方法来实现你想要的,这取决于你所需要的确切结果。
虽然您只能调用libvlc_new
一次,因此您的应用程序中始终只有一个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
(使用此函数时,请将--
替换为:
)。
您也可以在#duplicate
中使用--sout
。https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/
根据您选择的方式,VLC可能会自行创建一个新窗口,您可能需要抓取该窗口并将其合并到您的应用程序中。
https://stackoverflow.com/questions/61928825
复制相似问题