视频-摄像机-推流

本文主要介绍使用 WVP+ZLMediaKit+MediaServerUI 实现通过 GB28181 进行海康、大华、宇视等品牌的 IPCNVRDVR 接入,完成摄像头监控播放,控制,录制。

一、概念

IPC是(IP Camera 即网络摄像机)缩写,由网络编码模块和模拟摄像机组合而成。网络编码模块将模拟摄像机采集到的模拟视频信号编码压缩成数字信号,从而可以直接接入网络交换及路由设备。

NVR是(Network Video Recorder即网络硬盘录像机)缩写,主要是通过网络接收IPC设备传输的数字视频码流, 并进行存储、管理。 通过Nvr,可同时观看、浏览、回放、管理、存储多个网络摄像机。

DVR是(Digital Video Recorder即数字视频录像机)缩写,采用硬盘录像,被称为硬盘录像机。它是一套图像计算存储处理的计算机系统,具有对图像/语音和动态帧等进行长时间录像、录音、远程监视和控制的功能,DVR集合录像机、画面分割器、云台镜头控制、报警控制、网络传输等五种功能于一身,用一台设备就能取代模拟监控系统一大堆设备。

DVR将模拟视频进行数字化编码压缩并储存在硬盘上,主要涉及编码及储存技术,与网络传输关系不大,因此DVR常安装在模拟摄像机附近。而NVR从网络上获取经编码压缩的视频流然后存储转发,因此在NVR设备上一般看不到视频信号的直接连接,其输入、输出都是已编码并添加了网络协议的IP数据。

二、准备工作

1.服务运行环境,Linux / OS X / Windows 均可,但推荐 Linux

2.海康云台摄像头一个

3.运行 sip 服务 WVP https://github.com/swwheihei/wvp-GB28181

4.运行流媒体服务 ZLMediaKit https://github.com/xiongziliang/ZLMediaKit

5.运行前端展示项目 MediaServerUI https://gitee.com/kkkkk5G/MediaServerUI/tree/gb28181/

三、运行 WVP

3.1 安装 Redis

WVP 项目中将设备信息等存放在 Redis 中,所以需安装 Redis。

3.2 配置运行 SIP

首先修改 WVP 项目配置文件:

spring:application:name: iot-vmp-vmanager# 影子数据存储方式,支持redis、jdbcdatabase: redis# 通信方式,支持kafka、httpcommunicate: httpredis: # Redis服务器IPhost: 127.0.0.1#端口号port: 6379datebase: 0#访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接password: 123123#超时时间timeout: 10000datasource: name: eioturl: jdbc:mysql://host.docker.internal:3306/eiot?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=trueusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driver
sip:# SIP 所在服务IP,就是本机IPip: 192.168.1.102port: 5060# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)# 后两位为行业编码,定义参照附录D.3# 3701020049标识山东济南历下区 信息行业接入domain: 3701020049id: 37010200492000000002# 默认设备认证密码,后续扩展使用设备单独密码password: 123456
media:# 流媒体服务的IP,内网测试可填内网IP,公网填公网服务器IP并放开端口ip: 177.11.11.111port: 10000

然后登录海康摄像头管理页面,修改配置:

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

平台接入选择 28181;传输协议可自选,公网建议TCP;协议版本选择 GB/T28181-2016(目前WVP只支持该协议,2011后会适配)

SIP服务器IDSIP服务器域密码 要和 WVP 项目配置的一致。

SIP服务器地址 填写 WVP 项目的地址,内网写内网IP地址,云服务器填写公网IP,端口写配置文件中配置的端口。

因为摄像头平台接入配置好后,摄像头会请求 SIP 服务,所以这个一定要配置好。

配置完后就可运行项目了!如果 SIP 服务启动成功后,会看到这个日志 “Sip Server 启动成功”

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

如果摄像头连接到 SIP 服务,项目日志如下,显示 200 OK(公网服务器记得放开sip端口):

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

建立好连接后,就可控制查询摄像头了。

GET /api/devices 查询所有设备信息

[{"deviceId":"37010200492000000001","name":"IP DOME","manufacturer":"Hikvision","model":"DS-2DC4223IW-D/GLT","firmware":"V5.6.15","transport":"TCP","host":{"ip":"192.168.1.101","port":1609,"address":"192.168.1.101:1609"},"online":1,"channelMap":{"34020000001320000001":{"channelId":"34020000001320000001","name":"IPdome","manufacture":"Hikvision","model":"IP Camera","owner":"Owner","civilCode":"37010123123","block":null,"address":"Address","parental":0,"parentId":null,"safetyWay":0,"registerWay":1,"certNum":null,"certifiable":0,"errCode":0,"endTime":null,"secrecy":"0","ipAddress":null,"port":0,"password":null,"status":1,"longitude":0,"latitude":0}}}
]

POST /api/ptz/{deviceId}/{channelId} 云台控制指定设备通道

http://127.0.0.1:8080/api/ptz/34020000001320000001/34020000001320000001?leftRight=1&upDown=0&inOut=0&moveSpeed=50&zoomSpeed=1

zoomSpeed 的数字不能太大,不然运行不了,无效。

WVP 项目所有接口:https://github.com/swwheihei/wvp-GB28181/wiki/API-%E6%8E%A5%E5%8F%A3

四、运行流媒体服务 ZLMediaKit

4.1 获取代码

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xiahcu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init

4.2 构建项目

项目开发者提供了三个shell脚本在项目根目录:

  • build_docker_images.sh 构建为docker镜像
  • build_for_linux.sh linux下构建项目
  • build_for_mac.sh mac下构建项目

打开以后看到是用CMake编译的,可直接选择运行shell脚本。

构建好后打开 release/xx/Debug 目录,看到 config.ini 是项目的配置文件:https://github.com/xiongziliang/ZLMediaKit/blob/master/conf/config.ini

其中需要特别注意的有两个地方:

一是 [http] 的 port,因为 ZLMediaKit 项目也有很多 API 接口,都要通过这个接口访问,都是这个端口,可自行配置。

二是 [rtp_proxy] 的 port,是上面 SIP 项目配置的 media.port

4.3 运行项目

Linux 下启动:

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &

使用守护进程模式启动后,通过 ps -axj 来查看进程

运行成功后有如下日志:

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

可做推流测试,非必须操作,,具体操作查看文档:https://github.com/xiongziliang/ZLMediaKit/wiki/ZLMediaKit%E6%8E%A8%E6%B5%81%E6%B5%8B%E8%AF%95

下载个视频文件 big_buck_bunny.mp4 放在当前目录上,用rtp方式推流,在文件所在目录输入命令(需要先安装ffmpeg):

ffmpeg -re -i "big_buck_bunny.mp4" -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000

运行后,查看 ZLMediaKit 项目有类似这样的日志:

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

使用可播放流的播放器(如:PotPlayer,IINA)打开 http://服务器IP/rtp/xxxxx.flv 就能播放了。

http://服务器IP/rtp/061484E1.flv

项目推流

SIP 服务和流媒体服务就绪了,就可以推流了。用 /api/devices 查到 deviceId 和 channelId,然后调 SIP 服务的播放接口

GET /api/play/37010200492000000001/34020000001320000001 预览指定设备通道的音视频

成功调用后会返回ssrc:

{"ssrc":"0102008033"}

ssrc 转换为16进制后为 061484E1

查看流媒体服务的日志如下:

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

注:公网服务器如没收到推流日志,记得开放端口并检查 wvp 项目的 media 配置是否正确。

那怎么拿到播放地址呢?https://github.com/xiongziliang/ZLMediaKit/wiki/%E6%92%AD%E6%94%BEurl%E8%A7%84%E5%88%99

如果公网IP是177.11.11.111,转换过来就是:

rtsp://177.11.11.111:554/rtp/061484E1?token=abcdefg&field=value

rtmp://177.11.11.111/rtp/061484E1

http://177.11.11.111/rtp/061484E1.flv

http://177.11.11.111/rtp/061484E1/hls.m3u8

此外 ZLMediaKit 还提供录制,截图,动态添加拉流代理等功能。

五、运行MediaServerUI

拉下项目代码:https://gitee.com/kkkkk5G/MediaServerUI/tree/gb28181/

项目启动后,SIP 服务调用 play 接口,流媒体服务收到消息,在项目的“视频广场”中就能看到视频了。

该项目需注意配置,本项目和流媒体服务关联的,调用接口也是流媒体 ZLMediaKit 的 API。

打开项目根目录下的 global.js

const serverip="172.16.63.208"
const host = 'http://' + serverip + '/index/api';
const secret = '035c73f7-bb6b-4889-a715-d9eb2d1925cc';
const baseMediaUrl='ws://' + serverip + '/';
function genApiUrl(method){return host+method+"?secret="+secret;
}
export default{serverip,host,secret,genApiUrl,baseMediaUrl
}

serverip是流媒体服务IP,如果 ZLMediaKit 配置文件中 [http] 配置项的端口改成其它,记得在这里加端口号。

secret 需要和流媒体服务配置一样。

baseMediaUrl 是拉流的url,可改成如 rtsp,rtmp,http。

六、整个视频请求的流程图

其中流媒体模块指 ZLMediaServer ,接口模块与信令模块指 WVP,视频设备指 IPC、NVR

WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制

七、FFmpeg 源码结构

FFMPEG中结构体很多。最关键的结构体分成以下几类:

a) 解协议(http,rtsp,rtmp,mms)

AVIOContext,URLProtocol,URLContext主要存储视音频用的协议类型及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)

协议httpflvrtmphlsdash
传输方式http流tcp流httphttp
视频封装格式flvflv tagTs文件Mp4 3gp webm
延时
数据分段连续流连续流切片文件切片文件
Html5播放通过html5解封包播放(flv.js)不支持通过html5解封包播放(hls.js)如dash文件列表是mp4webm文件,可直接播放
  • 用HTTP方式: 通过服务器将FLV下到本地,然后通过NetConnection的本地连接播放,这种方法是播放本地视频,在本地缓存可找到该FLV。

    将直播流模拟成FLV文件,通过HTTP协议下载模式实现流媒体传输的协议,端口号80。建议用HTTP FLV,实时性和RTMP相等。

    优点:服务器下完FLV,服务器就无消耗了,节省服务器消耗,HTTP比RTMP省去协议交互时间,首屏时间更短。HTTP可拓展;
    缺点:FLV缓存客户端,对FLV保密性不好。

  • 用RTMP方式: 通过NetConnection连到FMS(Flash Media Server)或Red5服务器,并实时播放服务器FLV文件,可任意选择视频播放点,并不象HTTP方式需缓存整个FLV文件到本地才可选择播放点。

    由上可知,Http方式是本地播放,而RTMP方式是服务器实时播放。目前的CDN都是基于RTMP的。端口号1935,网络用户均可用,包括非IOS平台用户,对非80端口(如1935)无限制的网络环境用户。

    RTMP(Real Time Messaging Protocol 实时消息传输协议),是 Adobe Systems 公司为 Flash 播放器与服务器音频、视频和数据传输开发的开放流媒体传输协议。

    RTMP 协议基于 TCP,是个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等变种,由Adobe公司为Flash播放器和服务器之间音频、视频传输开发的实时数据通信的网络协议。

    优点:FLV 不缓存在客户端,FLV 保密性好,防 HTTP 下载,延时短;
    缺点:消耗服务器资源,连接始终是实时的。

  • RTSP: RTSP 1.0标准没预测到互联网的快速增长 、IPv4 地址短缺导致的 NAT 技术广泛使用 及代理服务器大量存在,它在传输可靠性和易用性上都有缺陷。虽然各家厂商都有修补,如支持 RTSP over HTTP、NAT 穿透等,但2005 网络视频大爆炸时,RTSP 1.0并没得到youtube, hulu, 土豆,优酷等视频服务提供商的青睐,相反,Adobe公司的私有流媒体技术 RTMP 以其优秀的易用性和富媒体的一体化集成,得到多数视频服务提供商追捧,成为事实的标准.

    缺点:web端播放rtsp流的话,需写插件,且对浏览器也很挑剔,flash不支持rtsp,需做 activeX 插件

  • HLS(Http Living Streaming): 是苹果公司实现的基于 HTTP 的流媒体传输协议。2010 苹果在 iOS 设备支持”Live HTTP”的流媒体技术,并不再支持 RTSP 和 Flash 。Live HTTP 本质跟基于 HTTP 的文件分段下载接近。在带宽充裕时,live HTTP 能实现跟RTSP和RTMP同样的流媒体播放效果,有更好的易用性,更简单的控制。在HTML5中,视频文件的点播也采用HTTP作为其承载协议。

    HLS 可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。

    HLS: IOS平台下的流媒体传输协议 ,端口号80
    优点:H5浏览器支持较好,IOS,安卓原生支持。
    缺点:延迟较大。

    HLS 基本原理是当采集推流端将视频流推送到流媒体服务器时,服务器将收到的流信息每缓存一段时间就封包成一个新 ts 文件,同时服务器建立个 m3u8 索引文件来维护最新几个 ts 片段索引。当播放端获取直播时,它是从 m3u8 索引文件获取最新 ts 视频文件片段播放,保证用户在任何时候都看到较新内容,实现近似直播体验。相对于常见流媒体直播协议,如 RTMP 协议、RTSP 协议等,HLS 最大不同在于直播客户端获取到的并不是个完整的数据流,而是连续的、短时长的媒体文件,客户端不断的下载并播放这些小文件。这种方式理论最小延时为一个 ts 文件的时长,一般情况为 2-3 个 ts 文件的时长。HLS 分段策略,基本上推荐是 10 秒一个分片,这就看出了 HLS 的缺点:

    • 通常 HLS 直播延时会达到 20-30s,而高延时对需实时互动的直播是不可接受的。
    • HLS 基于短连接 HTTP,意味着 HLS 需不断与服务器建立连接,TCP 每次建立连接时的三次握手、慢启动过程、断开连接时的四次挥手都会产生消耗。

    不过 HLS 也有它的优点:

    • 数据通过 HTTP 协议传输,采用 HLS 时不用考虑防火墙或代理问题。
    • 使用短时长的分片文件播放,客户端可平滑的切换码率,以适应不同带宽的播放。
    • HLS 是苹果推出的流媒体协议,iOS 平台获得天然的支持,采用系统提供的 AVPlayer 就能直接播放,不用开发播放器。
  • HTTP FLV 则是将RTMP封装在HTTP协议之上,可更好的穿透防火墙等。

    目前,有两种Http-Flv的实现方式:一种是基于文件方式,一种是基于包方式

    Http_flv & RTMP

    这两个协议实际传输的数据一样,数据都是flv文件的tag。http_flv是个无限大的http流文件,只能直播,而rtmp还可推流和更多操作。但http的好处是以80端口通信的,穿透性强,且rtmp是非开放协议。

    这两个协议是如今直播平台主选的直播方式,主要原因是延时极低。

    RTMP延迟1s左右,HTTPFLV延迟1-2s左右,可用于对延迟较苛刻的场景,但要注意兼容性。

b) 解封装(flv、avi、rmvb、mp4)

AVFormatContext 主要存储视音频封装格式中的信息;AVInputFormat 存储输入视音频用的封装格式。每种视音频封装格式都对应个AVInputFormat 结构。

c) 解码(h264、mpeg2、aac、mp3)

每个 AVStream 存储一个视频/音频流的相关数据;每个 AVStream 对应个AVCodecContext,存储该视频/音频流使用解码方式的相关数据;每个AVCodecContext 中对应一个AVCodec,包含该视频/音频对应的解码器。每种解码器都对应个AVCodec结构。

d) 存数据

视频一般每个 AVPacket 是一帧;音频可能有好几帧

解码前数据:AVPacket(h264、aac)
解码后数据:AVFrame(yuv、pcm)

他们间的对应关系如下:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27398.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTP协议转发视频流

RTP转发 做完上次的读取摄像头之后,项目需要将视频转发给客户端,所以研究了下RTP并且做了一个小程序测试功能,现在分享出来。 原料:VS2017,RTP.NET,摄像头 语言:C# 标签:EmguCV&…

实时视频流播放 和 流 推流器

ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件 顾文锦 2014-9-24 11:06:51 阅读(2853) 评论(0) 本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中。 1、VS2010建…

RTMP推流平台/视频直播点播分析平台/人脸识别系统EasyDSS如何实现RTMP负载均衡?

负载均衡实际上是我们集群的时候提到的一个概念,作为有集群需要的视频直播点播平台EasyDSS,我们在实现多路推流的时候,也需要做到RTMP负载均衡。如何在EasyDSS上实现RTMP负载均衡将是我们在本文中主要讨论的问题。 负载均能能够提供一种廉价、…

基于Gstreamer的实时视频流的分发

1 Overview Gstreamer是一款功能强大、易扩展、可复用的、跨平台的用流媒体应用程序的框架。 该框架大致包含了应用层接口、主核心框架以及扩展插件三个部分。 Fig 1.0Gstreamer 应用层接口主要是给各类应用程序提供接口如:多媒体播放器、流媒体服务器、视频编辑…

ChatGPT还没玩明白,自主人工智能已经来了

Datawhale干货 最新:AutoGPT,来源:机器之心 OpenAI 的 Andrej Karpathy 都大力宣传,认为 AutoGPT 是 prompt 工程的下一个前沿。 近日,AI 界貌似出现了一种新的趋势:自主人工智能。 这不是空穴来风&#x…

炸裂!Hugging Face 发布重磅更新,人手一个 AutoGPT!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! Hugging Face,作为 AI 开源圈最为知名的「网红」创业公司,成立仅几年,便在 GitHub 开源了诸多实用开源项目,受到了不少开发者的赞赏。 其中影…

这对情侣火了,你猜是因为啥

注意看,这张情侣照在网上转疯了: —— 本文转载自量子位 旧厂街风格,带着浓浓90年代氛围感,但是,他俩一夜爆火的原因,你可能想象不到—— 这二位并不是真人!而是由AI一键生成的! &am…

OpenAI 发布 GPT-4 ,功能炸裂!网友:真人工智能更近一步!

编辑:金磊 梦晨转自:量子位 | 公众号 QbitAI 一觉醒来,万众期待的GPT-4,它来了! OpenAI老板Sam Altman直接开门见山地介绍说: 这是我们迄今为止功能最强大的模型! 有多强? 根据OpenA…

Redis Plus 来了,性能炸裂!

点击关注公众号,Java干货及时送达 学习 Spring Cloud 微服务的正确姿势! 用上 ChatGPT 啦,强的离谱! 博客园在绝境求生。。 来源:https://developer.aliyun.com/article/705239 1 什么是KeyDB? KeyDB是Redi…

OpenAI 重磅发布 GPT-4 !ChatGPT 炸裂大升级,直接能考上哈佛,抢先体验后我慌了...

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​ 一觉醒来,万众期待的GPT-4,它来了! OpenAI老板Sam Altman直接开门见山地介绍说: 这是我们迄今为止功能最强大的模型! …

QQ、微信、lol自动发消息工具

写了一个电脑自动发消息的工具,脱离双手,让我们聊天更方便跟简洁! 电脑软件。 自动发消息,双手离开键盘!能设置次数和发送间隔。 ​​​​​​链接在这:阿里云盘分享提取码:51ar 一定要先看…

AIGC的下一步,AIGA改写企业软件

▎在AIGC产品里,我们已经证明了生成式自动化在大模型和超级自动化时代是完全可行的。 编者按: 贾岿博士是弘玑Cyclone首席产品官,曾担任UiPath全球研发中心高级研发总监、微软Azure云计算主任架构师。弘玑Cyclone 是一家专注于RPA的厂商&…

zblog仿站必看!附加zblog所有必备标签调用规则和中文说明

Z-Blog是一个开源的PHP博客程序,具有轻量、简洁、易用等特点,非常适合新手搭建个人博客。以下是Z-Blog仿站教程,包含了基本的代码示例。 1. 下载Z-Blog程序并安装 首先,需要到官网下载Z-Blog程序,解压缩后上传到服务器…

老板用了ChatGPT后,决定扩招40%程序员...

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 陆奇在最近的分享中提出一个观点:“生成式AI,不会抢程序员的饭碗,相反会增加程序员的岗位。” 理由很简单,AI大幅提升程序员的工作效率,同样…

只需要两步就能快速接入GPT

缘起 最近一个朋友提出,让我出个关于如何快速接入GPT的教程,今天就给大家安排上。 需要的工具 经过实测,这是迄今为止最便捷的接入方式,而且亲测有效。 首先,第一步你需要下载最新版的微软Edge浏览器,去…

强推宝藏网站

最近还是有很强烈的感受,方法大于努力。最近就整理了一下大学期间比较好用的网站,也陪我度过了一段时间了,排名不分先后,把压箱底的东西拿出来了。 ChatGPT WeTab 新标签页https://www.wetab.link/ 这个就不用多说,最…

如果让chatAI来写代码,会是怎么样的效果?

近日,我在刷B站的时候看到了由UP主老耗游戏发布的这个视频这下键盘不会废了! 在这个视频中,我了解到了这个网站:WeTab新标签页,也在这个网站中真正的接触到了ChatAI。 这个网站的chatAI功能实际上还是需要下载安装如谷…

GPT免费网站分享(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

一个iPhone/iPad可以无成本使用GPT的方法

WeTab新标签页 虽然gpt已经上线app store,但是国内的iPhone用户还是无法快速拥有。而最近WeTab新标签页上线了iOS和iPadOS端,直接在app store就能下载,并且无使用成本。 一直以来WeTab新标签页的PC端浏览器插件就受到了很多用户的喜爱&…

大数据看惊天逆转+绝杀,亚洲杯时隔16年夺冠,恭喜女足

在北京时间2022年2月6日晚结束的女足亚洲杯决赛中,在上半场0:2落后的局面下,’ 中国女足下半场5分钟连进两球,顽强扳平比分。 在随后的比赛中,中国女足在伤停补时阶段又打进1球,以最终比分3:2夺冠! 第9次夺…