我的项目有两部分。第一种是流式传输视频,第二种是捕获流式传输的视频并对其进行分析。在捕获和分析方面已经完成了。
当我这么做的时候,我已经为我的问题做了一个变通方案;我把视频转换成 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();
}
暂无答案!
目前还没有任何答案,快来回答吧!