Java rtsp转flv

依赖

xml 复制代码
    <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.4.3</version>
    </dependency>

完整代码

java 复制代码
public static void main(String[] args) {

        String fileURL = "rtsp://admin:zr123456@192.168.1.199/Streaming/tracks/0101/?starttime=20240620T010203Z&endtime=20240620T010213Z";
        String outFile = "C:\\Users\\admin\\Desktop\\a.flv";

        FFmpegFrameRecorder recorder = null;
        FFmpegFrameGrabber grabber = null;

        try{
            grabber = FFmpegFrameGrabber.createDefault(fileURL);
            grabber.setOption("rtsp_transport", "udp");
            grabber.start();



            int imageWidth = grabber.getImageWidth();
            int imageHeight = grabber.getImageHeight();

            recorder = new FFmpegFrameRecorder(outFile, imageWidth, imageHeight);
            recorder.setSampleRate(grabber.getSampleRate());
            recorder.setAudioChannels(grabber.getAudioChannels());
            recorder.setInterleaved(true);
            recorder.setVideoBitrate(2500000);
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
            recorder.setFormat("flv");
            recorder.setFrameRate(grabber.getFrameRate());
            recorder.setGopSize((int) (grabber.getFrameRate() * 2));
            recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);

            recorder.start();

            // 处理视频帧
            Frame frame;
            while (true) {
                frame = grabber.grabFrame();
                if (frame == null) {
                    break; // 没有更多帧
                }
                recorder.record(frame);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 确保资源被释放
            if (recorder != null) {
                recorder.stop();
            }
        }
    }
相关推荐
程序 代码狂人11 分钟前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521591 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
南归北隐2 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
古法老登瞎折腾2 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
ai大模型-探索者3 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
略略略咯咯3 小时前
啊啊啊啊啊
java·服务器·数据库
SL_staff3 小时前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈
猫猫.1533 小时前
HashTable、HashMap、ConcurrentHashMap 核心区别总结
java·开发语言·java-ee
郭小李4 小时前
spring mvc 工作流程
java·spring·mvc
SL_staff4 小时前
BI大屏嵌入MES的登录态难题:JVS统一账号体系实战解法
java·数据分析·数据可视化