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

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

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

  1. private void Stream () throws InterruptedException {
  2. String media = "C:\\someVideo.mp4";
  3. String options = formatRtpStream("127.0.0.1", 5555);
  4. MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
  5. EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer();
  6. mediaPlayer.media().prepare(media,
  7. options,
  8. ":no-sout-rtp-sap",
  9. ":no-sout-standard-sap",
  10. ":sout-all",
  11. ":sout-keep"
  12. );
  13. }
  14. private static String formatRtpStream(String serverAddress, int serverPort) {
  15. StringBuilder sb = new StringBuilder(200);
  16. sb.append(":sout=");
  17. sb.append("#transcode{vcodec=h264,vb=1000,fps=25,scale=1,noaudio}");
  18. sb.append(":rtp{dst=");
  19. sb.append(serverAddress);
  20. sb.append(",port=");
  21. sb.append(serverPort);
  22. sb.append(",mux=ts}");
  23. return sb.toString();
  24. }

暂无答案!

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

相关问题