当前位置: 首页 > 面试题库 >

服务器和客户端之间的实时视频流-使用Java

爱海
2023-03-14
问题内容

这是我正在从事的项目的一部分。我有两个桌面Java应用程序,一个运行在服务器上(具有真实IP),另一个运行在客户端上。我只想从连接到服务器应用程序的网络摄像头流式传输实时视频,然后在客户端应用程序上播放它。我想从多个摄像机进行流式传输。

我一直在寻找Xuggler,JMF,Red5,VLCj之间的日子。我只是不知道应该从哪里开始,因为我刚接触编程中的媒体。

我从哪里开始有什么想法?

提前致谢


问题答案:

我建议您使用VLCJ,因为除了实时视频流之外,您还可以获得应用程序可用的VLC媒体播放器的所有功能。此外,它可用于Linux,Windows和Mac。如果可以使用VLC实时直播网络摄像头,则可以使用VLCJ进行相同的处理。

有关如何使用它的详细信息,请参考VLCJ
Wiki页面。他们在Wiki中提供了许多示例。这是使用VLCJ的Http流的示例。从VLCJ示例复制。

/*
 * This file is part of VLCJ.
 *
 * VLCJ is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * VLCJ is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with VLCJ.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * Copyright 2009, 2010, 2011 Caprica Software Limited.
 */

package uk.co.caprica.vlcj.test.streaming;

import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.headless.HeadlessMediaPlayer;
import uk.co.caprica.vlcj.test.VlcjTest;

/**
 * An example of how to stream a media file over HTTP.
 * <p>
 * The client specifies an MRL of <code>http://127.0.0.1:5555</code>
 */
public class StreamHttp extends VlcjTest {

  public static void main(String[] args) throws Exception {
    if(args.length != 1) {
      System.out.println("Specify a single MRL to stream");
      System.exit(1);
    }

    String media = args[0];
    String options = formatHttpStream("127.0.0.1", 5555);

    System.out.println("Streaming '" + media + "' to '" + options + "'");

    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(args);
    HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer();
    mediaPlayer.playMedia(media, options);

    // Don't exit
    Thread.currentThread().join();
  }

  private static String formatHttpStream(String serverAddress, int serverPort) {
    StringBuilder sb = new StringBuilder(60);
    sb.append(":sout=#duplicate{dst=std{access=http,mux=ts,");
    sb.append("dst=");
    sb.append(serverAddress);
    sb.append(':');
    sb.append(serverPort);
    sb.append("}}");
    return sb.toString();
  }
}


 类似资料:
  • 我需要有一个实时直播音频流从一个客户端到一个服务器到多个侦听器客户端。 目前,我已经从客户端录制工作和流通过套接字的音频。将io发送到服务器。服务器接收此数据,并且必须流式传输音频(也通过socket.io?)发送给希望侦听此流的客户端。它必须尽可能实时(尽量减少延迟)。 我正在使用GetUserMedia录制麦克风(浏览器兼容性在这里并不重要)。我希望客户端使用HTML5音频标签来收听流。在服务

  • 我目前正在做一个项目,需要一个UDP通信之间的服务器亚马逊法兰克福)和几个主机(Arduino)。我需要能够发送JSON数据从服务器到主机通过UDP,它需要实时工作(时间是一个真正的限制在这里)。此外,主机将定期与服务器通话,通知服务器其状态。 我面临的问题是,虽然我可以ping服务器,但当我创建带有端口的UDP套接字时,我会得到这个错误(对于任何端口): errno99:无法分配请求的地址 我也

  • 问题内容: 简而言之,我有一个独立的ES主实例和一个在我的Java应用程序中创建的客户端节点。如果在客户端节点之前启动了独立ES实例,则客户端节点会正确发现独立ES实例。 我面临的问题是-如果由于某种原因,客户端节点在独立ES实例之前启动,我会看到“ MasterNotDiscoveredException”,这也是可预期的。但是,即使启动独立的ES实例后,我仍然会看到相同的异常。我应该更改一些配

  • 问题内容: 我用Node.js运行一个简单的http服务器: 我的index.html文件: 现在,我想在我的index.html文件中打印服务器端变量:temp。但是我不知道该怎么做。 也许有人可以帮助我从服务器到客户端交换变量。 问题答案: 正如您可以在@WebServer的答案中看到的那样,节点中有多种模板引擎。 我想给你一个使用其中一个的例子-EJS: 首先安装它: server.js:

  • 问题内容: 我必须创建一个客户端/服务器系统以流式传输视频和音频。这将非常简单。喜欢YouTube风格。服务器应首先参加提供媒体列表的客户端,然后等待每个客户端的选择开始流媒体。在创建一个套接字并显示一个简单列表之前,我一直在上面;)但是我不知道我可以使用哪个类进行流式处理。该示例基本上是youtube风格。我如何开始流式传输,客户端如何暂停复制,如何?我知道如何流文本,但是视频呢?你知道任何教程

  • 我必须用JS制作一个应用程序,用AES编码一条消息,并通过AJAX将其传递给服务器。然后,服务器会启动并使用Java对消息进行解码。 我的问题是:如何在JS中加密消息,并使用AES在Java中解密它?知道java和js之间的通信已经通过Web服务建立 客户端,我使用Crypto JS库(http://code.google.com/p/crypto-js/)。服务器端我使用Java提供的Ciphe