vlcj在流媒体传输时动态修改帧

6yjfywim  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(281)

我的项目有两部分。第一种是流式传输视频,第二种是捕获流式传输的视频并对其进行分析。在捕获和分析方面已经完成了。
当我这么做的时候,我已经为我的问题做了一个变通方案;我把视频转换成 BufferedImage 并保存到图像文件。然后我编辑图像文件并再次转换回视频。最后,我可以流式编辑视频和做其他捕获和分析部分。
但是由于这个解决方法是一个长时间的过程,并且帧编辑必须根据我的实际使用情况同时动态地完成,所以我必须在帧流传输之前进行干预。
我做了很多搜索,但可能我不熟悉流媒体和它的术语,找不到一个方法来做它与vlcj和java。实际上,要解决这个问题,我不一定要坚持使用java和vlcj。如果vlcj没有提供解决方案,所有其他建议都可以。
下面是我用来从一个视频文件流式传输的代码;

private void Stream () throws InterruptedException {

      String media = "C:\\someVideo.mp4";
      String options = formatRtpStream("127.0.0.1", 5555);

      MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
      EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer();
      mediaPlayer.media().prepare(media,
              options,
              ":no-sout-rtp-sap",
              ":no-sout-standard-sap",
              ":sout-all",
              ":sout-keep"
      );
   }

   private static String formatRtpStream(String serverAddress, int serverPort) {
      StringBuilder sb = new StringBuilder(200);
      sb.append(":sout=");
      sb.append("#transcode{vcodec=h264,vb=1000,fps=25,scale=1,noaudio}");
      sb.append(":rtp{dst=");
      sb.append(serverAddress);
      sb.append(",port=");
      sb.append(serverPort);
      sb.append(",mux=ts}");
      return sb.toString();
   }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题