精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從 0 到 1,帶你用 SpringBoot 打造專屬視頻推流系統!

開發 架構
如果你正在尋找一個高效的視頻推拉流解決方案,那么基于 SpringBoot + Zlm4j + Thymeleaf 的組合無疑是一個非常實用的選擇。

在實際項目中,視頻推流和拉流功能是常見的需求場景,例如遠程監控、無人機實時畫面、在線直播等。最初,我打算通過 Netty 自己實現一套 RTSP 協議的推拉流服務,但在處理 RTSP 解包時遇到了較大瓶頸,自研難度超出了預期。

后來發現了一個更優雅的解決方案 —— Zlm4j。它是基于 ZLMediaKit 封裝的 JNA 接口,能夠非常方便地與 SpringBoot 集成,省去了大量底層處理的工作。這里也特別感謝 ZLMediaKit 與 Zlm4j 的開源貢獻者們,使我們能夠快速落地視頻流服務。

本文將結合代碼,詳細展示如何在 SpringBoot 中搭建一個輕量的推拉流系統,并完成推流測試、播放驗證,最后補充一個基于 Thymeleaf + Bootstrap 的前端播放頁面,幫助大家在實際開發中快速實現類似需求。

代碼集成步驟

引入依賴

項目的核心依賴是 zlm4j 與 jna

  • zlm4j:對 ZLMediaKit 的封裝庫,直接調用核心 API;
  • jna:負責底層調用 ZLMediaKit 的 SDK,不需要單獨安裝 ZLMediaKit 服務。

pom.xml 配置如下:

<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>zlm4j</artifactId>
    <version>1.0.4</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/zlm4j-1.0.4.jar</systemPath>
</dependency>


<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>5.14.0</version>
</dependency>


<!-- Thymeleaf 模板引擎 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>


<!-- Web 模塊 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置類

在 SpringBoot 中創建一個配置類,負責:

  • 初始化 ZLMApi
  • 開啟 HTTP/RTSP/RTMP/RTP 服務;
  • 注冊 事件監聽器(MK_EVENTS)

代碼如下:

package com.icoderoad.config;


import com.aizuda.zlm4j.core.ZLMApi;
import com.aizuda.zlm4j.structure.MK_EVENTS;
import com.sun.jna.Native;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class ZlmServerConfig {


    @Bean
    public ZLMApi zlmApi() {
        // 加載 mk_api 庫
        ZLMApi zlmApi = Native.load("mk_api", ZLMApi.class);
        // 初始化 SDK 環境
        zlmApi.mk_env_init1(1, 1, 1, null, 0, 0, null, 0, null, null);


        // 啟動 HTTP 服務
        zlmApi.mk_http_server_start((short) 7788, 0);
        // 啟動 RTSP 服務
        zlmApi.mk_rtsp_server_start((short) 9758, 0);
        // 啟動 RTMP 服務
        zlmApi.mk_rtmp_server_start((short) 9759, 0);
        // 啟動 RTP 服務
        zlmApi.mk_rtp_server_start((short) 32000);


        return zlmApi;
    }


    @Bean
    public MK_EVENTS mkEvents() {
        return new MK_EVENTS();
    }
}

配置的服務端口如下:

協議

端口

HTTP

7788

RTSP

9758

RTMP

9759

RTP

32000

事件實現

在啟動類中,通過 CommandLineRunner 注冊事件監聽,完成:

  • 推流鑒權:驗證客戶端是否有權限推流;
  • 流狀態變化:監控流的上線/下線。

代碼示例:

package com.icoderoad;


import com.aizuda.zlm4j.core.ZLMApi;
import com.aizuda.zlm4j.structure.MK_EVENTS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class VideoStreamApplication implements CommandLineRunner {


    @Autowired
    private MK_EVENTS mkEvents;


    @Autowired
    private ZLMApi zlmApi;


    public static void main(String[] args) {
        SpringApplication.run(VideoStreamApplication.class, args);
    }


    @Override
    public void run(String... args) {
        // 推流鑒權事件
        mkEvents.on_mk_media_publish = (url_info, invoker, sender) -> {
            String params = zlmApi.mk_media_info_get_params(url_info);
            System.out.println("鑒權參數:" + params);
            zlmApi.mk_publish_auth_invoker_do(invoker, "", 0, 0);
        };
        zlmApi.mk_events_listen(mkEvents);


        // 流狀態變化事件
        mkEvents.on_mk_media_changed = (regist, sender) -> {
            System.out.println("App: " + zlmApi.mk_media_source_get_app(sender));
            System.out.println("Stream: " + zlmApi.mk_media_source_get_stream(sender));
            System.out.println("Schema: " + zlmApi.mk_media_source_get_schema(sender));
            System.out.println("流狀態改變通知: " + regist);
        };
        zlmApi.mk_events_listen(mkEvents);
    }
}

推流與播放測試

推流命令

通過 FFmpeg 將本地視頻推送到 RTSP 服務端口,并攜帶鑒權參數:

ffmpeg -re -an -i /home/user/videos/input.mp4 -c:v libx264 -f rtsp rtsp://127.0.0.1:9758/stream/1?token=112233

事件輸出

控制臺會打印:

  • 鑒權參數(例如 token 值);
  • 流狀態改變通知(上線/下線)。

播放驗證

使用 VLC 播放器打開推流的 RTMP 地址即可播放:

rtmp://127.0.0.1:9759/stream/1

也可以選擇 HTTP-FLV、HLS、WebRTC 等其他協議進行播放。

前端播放頁面(Thymeleaf + Bootstrap)

為了讓系統更直觀,我們可以在瀏覽器中播放推流視頻。

控制器

創建一個簡單的 Controller,返回播放頁面:

package com.icoderoad.controller;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;


@Controller
public class PlayerController {


    @GetMapping("/player")
    public String player(Model model) {
        // 傳遞推流地址(RTMP/HTTP-FLV/HLS均可)
        model.addAttribute("videoUrl", "http://127.0.0.1:7788/live/stream.flv");
        return "player";
    }
}

頁面模板

<!--src/main/resources/templates/player.html-->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>視頻播放</title>
    <link  rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/flv.js/dist/flv.min.js"></script>
</head>
<body class="bg-light">


<div class="container mt-5">
    <h3 class="text-center mb-4">實時視頻播放</h3>
    <div class="card shadow rounded-3">
        <div class="card-body">
            <video id="videoElement" class="w-100 rounded-3" controls></video>
        </div>
    </div>
</div>


<script th:inline="javascript">
    let videoUrl = [[${videoUrl}]];
    if (flvjs.isSupported()) {
        let videoElement = document.getElementById('videoElement');
        let flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: videoUrl
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
</script>


</body>
</html>

這里用到了 flv.js 播放 HTTP-FLV 視頻流,同時配合 Bootstrap 做了頁面美化。

總結

通過以上步驟,我們在 SpringBoot 項目中快速集成了 Zlm4j,實現了一個輕量的視頻推拉流系統,并且提供了前端可視化播放頁面:

  1. 后端
  • 依賴配置簡潔,直接調用 zlm4j;
  • 配置類快速啟動多協議服務;
  • 事件監聽支持鑒權與流狀態回調。
  1. 前端
  • 基于 Thymeleaf + Bootstrap
  • 使用 flv.js 播放視頻流;
  • 頁面簡潔美觀,支持擴展。

這種方式不僅降低了開發成本,還能快速應用到實際項目中,未來也可以擴展錄制、轉碼、直播間管理等功能。如果你正在尋找一個高效的視頻推拉流解決方案,那么基于 SpringBoot + Zlm4j + Thymeleaf 的組合無疑是一個非常實用的選擇。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-11-05 02:11:00

2025-10-09 02:55:00

SpringBoot短視頻向量搜索

2016-11-28 16:23:23

戴爾

2022-05-09 08:35:43

面試產品互聯網

2021-08-03 09:07:39

GolangGrpc服務

2019-07-31 10:18:17

Web 開發Python

2022-02-09 20:50:46

短鏈系統場景

2023-11-15 08:14:35

2021-01-26 05:13:12

錕斤拷String 二進制

2021-03-10 09:21:00

Spring開源框架Spring基礎知識

2021-07-01 07:03:32

開發Webpack代碼

2023-03-06 11:35:55

經營分析體系

2022-06-10 14:52:46

開源項目字節跳動

2020-11-12 08:41:35

Linux系統

2021-03-10 09:52:38

開發技能架構

2024-12-02 11:24:30

Docker編排技術

2022-03-15 11:51:00

決策分析模型

2022-11-03 11:31:43

結構分析法監測

2025-11-11 04:15:00

FastMCPMCP服務器

2019-01-03 11:49:11

華為云
點贊
收藏

51CTO技術棧公眾號

9lporm自拍视频区在线| 91theporn国产在线观看| 欧美激情影院| 欧美在线观看视频一区二区| 樱空桃在线播放| 日韩专区第一页| 人人精品人人爱| 久久99久久99精品免观看粉嫩| 无码任你躁久久久久久老妇| 成人午夜精品| 亚洲自拍偷拍综合| 欧美一区二区三区四区五区六区| 亚洲一级片免费看| 影音先锋中文字幕一区| 中文字幕在线观看亚洲| 91视频在线免费| 精品久久毛片| 午夜精品影院在线观看| 亚洲精品视频一二三| 成人免费公开视频| 久久99精品网久久| 51精品在线观看| 黄色一级大片在线免费观看| 青青操综合网| 日韩欧美成人午夜| 久久精品影视大全| 福利影院在线看| 亚洲精品综合在线| 日本欧美精品久久久| 丁香六月天婷婷| 久久精品国产久精国产爱| 91成人在线播放| 玖玖爱免费视频| 欧美xxav| 亚洲美女精品成人在线视频| 美女扒开腿免费视频| 国产精品视频首页| 欧美日韩在线观看一区二区| jizzjizzxxxx| 91吃瓜在线观看| 亚洲综合激情网| 国产成人三级视频| av网页在线| 久久免费看少妇高潮| 国产视频一区二区不卡| 精品毛片在线观看| 国产在线精品一区二区夜色| 国产精品入口免费视| 男人天堂av在线播放| 欧美片第1页综合| 久久亚洲春色中文字幕| 国产一二三av| 日本a级不卡| 在线播放国产一区二区三区| 插吧插吧综合网| 人人网欧美视频| 亚洲精品久久久久久久久久久久 | 精品综合久久| 欧美 日韩 国产 成人 在线 | 欧美做受xxxxxⅹ性视频| 果冻天美麻豆一区二区国产| 日韩欧美国产高清| 国产探花一区二区三区| 欧美久久一区二区三区| 欧美一区二区私人影院日本| 九九热视频免费| 日韩一级淫片| 精品国产制服丝袜高跟| youjizz.com日本| 久久午夜影院| 亚洲丝袜在线视频| 男人的天堂官网 | 色多多国产成人永久免费网站| 欧美熟妇激情一区二区三区| 成人无号精品一区二区三区| 日日狠狠久久偷偷四色综合免费 | 色综合天天狠狠| 男人插女人下面免费视频| 欧美性片在线观看| 欧美久久久久久久久| 中文字幕55页| 老汉色老汉首页av亚洲| 亚洲色图国产精品| www.99re6| 亚洲午夜极品| 日本电影亚洲天堂| 91激情在线观看| 成人禁用看黄a在线| 久久99精品久久久久久久青青日本| 日韩av免费观影| 国产精品免费av| www国产无套内射com| 成人在线黄色电影| 欧美在线制服丝袜| 无码人妻少妇色欲av一区二区| 麻豆一区二区| www.日本久久久久com.| 久久精品一区二区三| 国产精品久久久一区二区| 国产精品一区二区三区免费视频| 亚洲av无码一区二区三区性色| 91丨porny丨首页| 日本一区二区三区在线视频| 国产一二三区在线观看| 欧美日韩视频免费播放| 潘金莲激情呻吟欲求不满视频| 高清一区二区三区| 中文字幕亚洲国产| 国产成人亚洲欧洲在线| 久久精品久久综合| 蜜桃成人在线| 美足av综合网| 欧美高清精品3d| www在线观看免费视频| 午夜精品网站| 国产精品免费小视频| 韩国av电影在线观看| 国产清纯在线一区二区www| 日韩欧美猛交xxxxx无码| 亚洲精品一区三区三区在线观看| 精品乱人伦一区二区三区| 337人体粉嫩噜噜噜| 超碰精品在线| 久久久精品视频在线观看| 69国产精品视频免费观看| 国产成人午夜视频| 自拍偷拍一区二区三区| 成人开心激情| 亚洲欧洲在线观看| 日韩av一区二区在线播放| 国产乱妇无码大片在线观看| 一区二区三区在线观看www| 欲香欲色天天天综合和网| 日韩欧美激情一区| 国产免费久久久久| 老汉av免费一区二区三区| 欧美精品久久久| 国产传媒av在线| 欧美精品一区二区蜜臀亚洲| 男人操女人的视频网站| 毛片av一区二区三区| 日韩久久精品一区二区三区| 97se综合| 亚洲欧美日韩精品久久奇米色影视 | 中文字幕日日夜夜| 欧美激情综合在线| 午夜视频在线瓜伦| 国产精品嫩草影院在线看| 97精品在线视频| 欧美一区二不卡视频| 亚洲一区二区三区四区在线| 精品国产免费久久久久久婷婷| 欧美一区二区三区久久精品茉莉花| 国产日韩欧美自拍| 欧美日韩在线资源| 91麻豆精品国产91久久久久久久久| 国产日韩精品中文字无码| 日本亚洲欧美天堂免费| 日韩一区二区电影在线观看| 成人国产一区| www.亚洲免费视频| 国产偷人妻精品一区二区在线| 亚洲欧美日韩中文字幕一区二区三区| 青青草原播放器| 欧美va天堂在线| 国产综合欧美在线看| 性欧美freesex顶级少妇| 亚洲色图狂野欧美| 在线视频1卡二卡三卡| 中文字幕在线播放不卡一区| 日韩av影视大全| 尤物在线精品| 欧美激情一区二区三区在线视频| 日本欧美日韩| 日韩专区在线播放| 亚洲高清视频在线播放| 婷婷一区二区三区| 亚洲午夜精品久久久久久高潮| 九一久久久久久| 免费的av在线| 日韩精品导航| 国产一区二区香蕉| 国产美女一区视频| 亚洲天堂免费视频| 国产人妻精品一区二区三| 亚洲一区二区三区视频在线 | 亚洲少妇屁股交4| 在线观看亚洲免费视频| 日韩电影在线一区二区| 欧美aaa在线观看| 牛牛影视久久网| 国产精品尤物福利片在线观看| 在线观看小视频| 亚洲欧美综合v| 99久久精品国产一区二区成人| 性感美女久久精品| 网爆门在线观看| 不卡一区在线观看| 爱情岛论坛亚洲首页入口章节| 你懂的国产精品| 日韩区国产区| 韩国精品福利一区二区三区| 成人两性免费视频| 亚洲最大网站| 欧美日韩成人精品| av大片在线看| 日韩高清免费观看| 精品乱子伦一区二区| 欧美视频第二页| 成年人视频在线免费看| 一区二区三区不卡视频在线观看| 三区四区在线观看| 91啪亚洲精品| 国产视频精品视频| 国产精品综合在线视频| 北条麻妃av高潮尖叫在线观看| 极品中文字幕一区| 97精品国产97久久久久久粉红| 国产欧美日韩在线观看视频| 好吊色欧美一区二区三区四区| 91精品啪在线观看国产爱臀| 成人黄色免费网站在线观看| 日韩精选视频| 国产91久久婷婷一区二区| 1区2区在线| 久久久久免费精品国产| a毛片在线观看| 久久亚洲一区二区三区四区五区高| 韩国中文字幕2020精品| 日韩精品极品在线观看| 日批视频免费播放| 日韩精品中午字幕| www.爱爱.com| 欧美一区二区在线播放| 国产精品女同一区二区| 欧美日本视频在线| 一二区在线观看| 欧美精选一区二区| 91国偷自产中文字幕久久| 欧美日韩国产一级| 亚洲一级av毛片| 欧美精品自拍偷拍动漫精品| 中文字幕免费视频观看| 欧美视频一二三| 亚洲综合一二三| 精品日本高清在线播放| 欧美日韩国产精品综合 | 成人欧美一区二区| 亚洲三级av| 91久久大香伊蕉在人线| 色综合.com| 91在线观看网站| 成人免费91| 亚洲va欧美va国产综合久久| 亚洲超碰在线观看| 亚洲一区二区自拍| www一区二区三区| 99精品在线直播| 视频二区欧美| 国产精品国色综合久久| 久久男人av| 久久精品国产精品青草色艺| 林ゆな中文字幕一区二区| 久久99导航| 国产精品一区二区99| 欧美中日韩一区二区三区| 亚洲精品无吗| 青娱乐国产91| 成人影院在线| 亚洲综合首页| 中文字幕亚洲综合久久五月天色无吗''| 一本色道久久99精品综合| 久久99国产精品视频| 一本一本久久a久久精品综合妖精| 成人高清av| 正在播放亚洲| 亚洲人成高清| 99精品视频播放| 欧美bbbbb| 九九久久久久久| 国产69精品久久久久777| 少妇一级淫免费放| 国产在线观看一区二区| 六十路息与子猛烈交尾| 久久免费的精品国产v∧| 国产又黄又粗的视频| 一区二区三区毛片| 欧美一级视频免费观看| 色婷婷av一区二区三区大白胸| 一二三区中文字幕| 精品美女被调教视频大全网站| 天堂а√在线8种子蜜桃视频| 中文字幕一精品亚洲无线一区 | 成人av在线播放观看| 亚洲国产高清视频| 久久久久人妻精品一区三寸| 黑人巨大精品欧美黑白配亚洲| 亚洲女则毛耸耸bbw| 丁香啪啪综合成人亚洲小说 | 91蜜桃免费观看视频| 免费视频91蜜桃| 亚洲第一在线综合网站| 日本免费精品视频| 欧美一级夜夜爽| 福利视频在线导航| 欧美理论电影在线播放| 日韩激情电影| 99久久免费国| 欧美日韩有码| 美国av在线播放| 久久激情一区| 野花视频免费在线观看| gogogo免费视频观看亚洲一| 国产一区二区视频在线观看免费| 精品国产91乱高清在线观看| 中文字幕精品无码亚| 亚洲成人在线网| 毛片在线播放a| 国产999精品| 白嫩白嫩国产精品| 亚洲精品一区二区三区樱花 | 91地址最新发布| 国产一区二区三区免费在线| 美女三级99| 在线亚洲伦理| 久久久久久无码精品人妻一区二区| 99国产精品久久久久久久久久久| 强乱中文字幕av一区乱码| 欧美综合欧美视频| 少妇高潮一区二区三区99小说| 欧美剧在线观看| 久久伊人国产| 欧美激情第六页| 久久综合五月| 日批在线观看视频| 亚洲天堂免费在线观看视频| 神马久久久久久久| 亚洲福利小视频| 99在线视频影院| 91视频最新| 欧美在线精品一区| 男女爽爽爽视频| 91亚洲精品久久久蜜桃网站| 精品少妇theporn| 91精品国产全国免费观看| 国产成人l区| 成人在线视频福利| 国产大片一区| 中文字幕免费高清在线| 国产视频一区不卡| 中文资源在线播放| 亚洲性猛交xxxxwww| 在线免费三级电影网站| 久久精品日韩精品| 最新日韩av| 一本色道久久综合亚洲精品图片| 亚洲福利一区二区| 欧美熟妇另类久久久久久不卡| 97在线视频免费观看| 2021年精品国产福利在线| 欧美精品久久96人妻无码| 国产一区91精品张津瑜| 亚洲欧美精品aaaaaa片| 欧美肥妇毛茸茸| 成人在线观看免费网站| 亚洲综合成人婷婷小说| 亚洲调教视频在线观看| 性欧美18—19sex性高清| 狠狠久久亚洲欧美专区| 青青国产在线| 国产精品久久久久久影视| 999久久久91| 永久免费黄色片| 亚洲激情图片qvod| 免费a级片在线观看| 欧美亚洲另类在线| 日韩夫妻性生活xx| caoporm在线视频| 国产精品久久久久久一区二区三区| 97超碰人人模人人人爽人人爱| 久久久久www| 四虎国产精品永久在线国在线 | x88av在线| 欧美性受xxxx| 成人免费一区二区三区牛牛| 美女亚洲精品| 久久成人久久爱| 亚欧视频在线观看| 亚洲天堂精品在线| 91亚洲精品视频在线观看| 国产a级一级片| 国产精品美女一区二区在线观看| www.好吊色| 欧美一二三视频| 亚洲最新av| 人妻熟女aⅴ一区二区三区汇编| 欧美色道久久88综合亚洲精品| 麻豆影院在线| 国产在线一区二| 国产精品一区二区久久精品爱涩|