宜兴专业做网站公司,17网一起做网店普宁下载,做定制商品的网站,做印刷网站公司简介RTSP转RTMP有多种实现方式#xff0c;原理差不多。
最简单的可以用ffmpeg来实现#xff1a;
ffmpeg -i rtsp流路径 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:1935/live/
上面实现了功能#xff0c;但是没有工程化#xff0c;实用性不…RTSP转RTMP有多种实现方式原理差不多。
最简单的可以用ffmpeg来实现
ffmpeg -i rtsp流路径 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:1935/live/
上面实现了功能但是没有工程化实用性不强本文重点在于Java实现。
java处理音视频目前最好的库就是javacv我们可以通过FFmpegFrameGrabber来捕获rtsp数据流 // 采集/抓取器grabber new FFmpegFrameGrabber(src);if(src.indexOf(rtsp)0) {grabber.setOption(rtsp_transport,tcp);}grabber.start();// 开始之后ffmpeg会采集视频信息之后就可以获取音视频信息if (width 0 || height 0) {width grabber.getImageWidth();height grabber.getImageHeight();}// 视频参数audiocodecid grabber.getAudioCodec();codecid grabber.getVideoCodec();framerate grabber.getVideoFrameRate();// 帧率bitrate grabber.getVideoBitrate();// 比特率
然后通过FFmpegFrameRecorder来录制推流 // 录制/推流器record new FFmpegFrameRecorder(out, width, height);record.setVideoOption(crf, 18);record.setGopSize(2);record.setFrameRate(framerate);record.setVideoBitrate(bitrate);record.setAudioChannels(audioChannels);record.setAudioBitrate(audioBitrate);record.setSampleRate(sampleRate);AVFormatContext fc null;if (out.indexOf(rtmp) 0 || out.indexOf(flv) 0) {// 封装格式flvrecord.setFormat(flv);record.setAudioCodecName(aac);record.setVideoCodec(codecid);fc grabber.getFormatContext();}record.start(fc);
下面提供了一个springboot的工程地址实现了传入rtsp地址获得前端播放地址的功能后续可以在此基础上进一步完善。
工程地址 flvjs实现rtsp数据流无插件浏览器播放-前端 flvjs实现rtsp数据流无插件浏览器播放-后端