367 lines
160 KiB
HTML
367 lines
160 KiB
HTML
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
|
||
<title>tums-player使用说明</title><style type='text/css'>html {overflow-x: initial !important;}:root { --node-fill: #ECECFF; --node-border: #CCCCFF; --note-fill: #fff5ad; --note-border: #aaaa33; --cluster-fill: #ffffde !important; --cluster-border: #aaaa33 !important; }
|
||
.mermaid .label { color: var(--text-color); }
|
||
.node rect, .node circle, .node ellipse, .node polygon { fill: var(--node-fill); stroke: var(--node-border); stroke-width: 1px; }
|
||
.edgePath .path { stroke: var(--text-color); }
|
||
.edgeLabel { background-color: var(--bg-color); }
|
||
.cluster rect { fill: rgb(255, 255, 222) !important; rx: 4 !important; stroke: rgb(170, 170, 51) !important; stroke-width: 1px !important; }
|
||
.cluster text { fill: var(--text-color); }
|
||
.actor { stroke: var(--node-border); fill: var(--node-fill); }
|
||
text.actor { fill: var(--text-color); stroke: none; }
|
||
.actor-line { stroke: grey; }
|
||
.messageLine0 { stroke-width: 1.5; stroke: var(--text-color); }
|
||
.messageLine1 { stroke-width: 1.5; stroke: var(--text-color); }
|
||
#arrowhead { fill: var(--text-color); }
|
||
#crosshead path { fill: var(--text-color) !important; stroke: var(--text-color) !important; }
|
||
.messageText { fill: var(--text-color); stroke: none; }
|
||
.labelBox { stroke: var(--node-border); fill: var(--node-fill); }
|
||
.labelText { fill: var(--text-color); stroke: none; }
|
||
.loopText { fill: var(--text-color); stroke: none; }
|
||
.loopLine { stroke-width: 2; stroke: var(--node-border); }
|
||
.note { stroke: var(--note-border); fill: var(--note-fill); }
|
||
.noteText { fill: var(--text-color); stroke: none; font-size: 14px; }
|
||
.section { stroke: none; opacity: 0.2; }
|
||
.section0 { fill: rgba(102, 102, 255, 0.49); }
|
||
.section2 { fill: rgb(255, 244, 0); }
|
||
.section1, .section3 { fill: white; opacity: 0.2; }
|
||
.sectionTitle0 { fill: var(--text-color); }
|
||
.sectionTitle1 { fill: var(--text-color); }
|
||
.sectionTitle2 { fill: var(--text-color); }
|
||
.sectionTitle3 { fill: var(--text-color); }
|
||
.sectionTitle { text-anchor: start; font-size: 11px; }
|
||
.grid .tick { stroke: lightgrey; opacity: 0.3; shape-rendering: crispedges; }
|
||
.grid path { stroke-width: 0; }
|
||
.today { fill: none; stroke: red; stroke-width: 2px; }
|
||
.task { stroke-width: 2; }
|
||
.taskText { text-anchor: middle; font-size: 11px; }
|
||
.taskTextOutsideRight { fill: black; text-anchor: start; font-size: 11px; }
|
||
.taskTextOutsideLeft { fill: black; text-anchor: end; font-size: 11px; }
|
||
.taskText0, .taskText1, .taskText2, .taskText3 { fill: white; }
|
||
.task0, .task1, .task2, .task3 { fill: rgb(138, 144, 221); stroke: rgb(83, 79, 188); }
|
||
.taskTextOutside0, .taskTextOutside2 { fill: var(--text-color); }
|
||
.taskTextOutside1, .taskTextOutside3 { fill: var(--text-color); }
|
||
.active0, .active1, .active2, .active3 { fill: rgb(191, 199, 255); stroke: rgb(83, 79, 188); }
|
||
.activeText0, .activeText1, .activeText2, .activeText3 { fill: black !important; }
|
||
.done0, .done1, .done2, .done3 { stroke: grey; fill: lightgrey; stroke-width: 2; }
|
||
.doneText0, .doneText1, .doneText2, .doneText3 { fill: black !important; }
|
||
.crit0, .crit1, .crit2, .crit3 { stroke: rgb(255, 136, 136); fill: red; stroke-width: 2; }
|
||
.activeCrit0, .activeCrit1, .activeCrit2, .activeCrit3 { stroke: rgb(255, 136, 136); fill: rgb(191, 199, 255); stroke-width: 2; }
|
||
.doneCrit0, .doneCrit1, .doneCrit2, .doneCrit3 { stroke: rgb(255, 136, 136); fill: lightgrey; stroke-width: 2; cursor: pointer; shape-rendering: crispedges; }
|
||
.doneCritText0, .doneCritText1, .doneCritText2, .doneCritText3 { fill: black !important; }
|
||
.activeCritText0, .activeCritText1, .activeCritText2, .activeCritText3 { fill: black !important; }
|
||
.titleText { text-anchor: middle; font-size: 18px; fill: black; }
|
||
.node text { font-size: 14px; }
|
||
div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-size: 12px; background: rgb(255, 255, 222); border: 1px solid rgb(170, 170, 51); border-radius: 2px; pointer-events: none; z-index: 100; }
|
||
#write .md-diagram-panel .md-diagram-panel-preview div { width: initial; }
|
||
|
||
|
||
:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; }
|
||
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
|
||
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
|
||
iframe { margin: auto; }
|
||
a.url { word-break: break-all; }
|
||
a:active, a:hover { outline: 0px; }
|
||
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
|
||
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
|
||
#write.first-line-indent p { text-indent: 2em; }
|
||
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
|
||
#write.first-line-indent li { margin-left: 2em; }
|
||
.for-image #write { padding-left: 8px; padding-right: 8px; }
|
||
body.typora-export { padding-left: 30px; padding-right: 30px; }
|
||
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
|
||
@media screen and (max-width: 500px) {
|
||
body.typora-export { padding-left: 0px; padding-right: 0px; }
|
||
#write { padding-left: 20px; padding-right: 20px; }
|
||
.CodeMirror-sizer { margin-left: 0px !important; }
|
||
.CodeMirror-gutters { display: none !important; }
|
||
}
|
||
#write li > figure:last-child { margin-bottom: 0.5rem; }
|
||
#write ol, #write ul { position: relative; }
|
||
img { max-width: 100%; vertical-align: middle; }
|
||
button, input, select, textarea { color: inherit; font: inherit; }
|
||
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
|
||
*, ::after, ::before { box-sizing: border-box; }
|
||
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
|
||
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
|
||
p { line-height: inherit; }
|
||
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 2; }
|
||
p { orphans: 4; }
|
||
h1 { font-size: 2rem; }
|
||
h2 { font-size: 1.8rem; }
|
||
h3 { font-size: 1.6rem; }
|
||
h4 { font-size: 1.4rem; }
|
||
h5 { font-size: 1.2rem; }
|
||
h6 { font-size: 1rem; }
|
||
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
|
||
.hidden { display: none; }
|
||
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
|
||
a { cursor: pointer; }
|
||
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
|
||
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
|
||
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
|
||
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
|
||
figure > table { margin: 0px !important; }
|
||
tr { break-inside: avoid; break-after: auto; }
|
||
thead { display: table-header-group; }
|
||
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
|
||
table.md-table td { min-width: 32px; }
|
||
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
|
||
.CodeMirror-linenumber { user-select: none; }
|
||
.CodeMirror { text-align: left; }
|
||
.CodeMirror-placeholder { opacity: 0.3; }
|
||
.CodeMirror pre { padding: 0px 4px; }
|
||
.CodeMirror-lines { padding: 0px; }
|
||
div.hr:focus { cursor: none; }
|
||
#write pre { white-space: pre-wrap; }
|
||
#write.fences-no-line-wrapping pre { white-space: pre; }
|
||
#write pre.ty-contain-cm { white-space: normal; }
|
||
.CodeMirror-gutters { margin-right: 4px; }
|
||
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
|
||
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
|
||
#write .md-fences.mock-cm { white-space: pre-wrap; }
|
||
.md-fences.md-fences-with-lineno { padding-left: 0px; }
|
||
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
|
||
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
|
||
.CodeMirror-line, twitterwidget { break-inside: avoid; }
|
||
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
|
||
.footnotes + .footnotes { margin-top: 0px; }
|
||
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
|
||
li div { padding-top: 0px; }
|
||
blockquote { margin: 1rem 0px; }
|
||
li .mathjax-block, li p { margin: 0.5rem 0px; }
|
||
li { margin: 0px; position: relative; }
|
||
blockquote > :last-child { margin-bottom: 0px; }
|
||
blockquote > :first-child, li > :first-child { margin-top: 0px; }
|
||
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
|
||
#write .footnote-line { white-space: pre-wrap; }
|
||
@media print {
|
||
body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; }
|
||
#write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
|
||
.typora-export * { -webkit-print-color-adjust: exact; }
|
||
html.blink-to-pdf { font-size: 13px; }
|
||
.typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
|
||
.typora-export #write::after { height: 0px; }
|
||
}
|
||
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
|
||
a img, img a { cursor: pointer; }
|
||
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
|
||
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
|
||
p > .md-image:only-child { display: inline-block; width: 100%; }
|
||
#write .MathJax_Display { margin: 0.8em 0px 0px; }
|
||
.md-math-block { width: 100%; }
|
||
.md-math-block:not(:empty)::after { display: none; }
|
||
[contenteditable="true"]:active, [contenteditable="true"]:focus { outline: 0px; box-shadow: none; }
|
||
.md-task-list-item { position: relative; list-style-type: none; }
|
||
.task-list-item.md-task-list-item { padding-left: 0px; }
|
||
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
|
||
.math { font-size: 1rem; }
|
||
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
|
||
.md-toc-content { position: relative; margin-left: 0px; }
|
||
.md-toc-content::after, .md-toc::after { display: none; }
|
||
.md-toc-item { display: block; color: rgb(65, 131, 196); }
|
||
.md-toc-item a { text-decoration: none; }
|
||
.md-toc-inner:hover { text-decoration: underline; }
|
||
.md-toc-inner { display: inline-block; cursor: pointer; }
|
||
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
|
||
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
|
||
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
|
||
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
|
||
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
|
||
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
|
||
@media screen and (max-width: 48em) {
|
||
.md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
|
||
.md-toc-h4 .md-toc-inner { margin-left: 5em; }
|
||
.md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
|
||
.md-toc-h6 .md-toc-inner { margin-left: 8em; }
|
||
}
|
||
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
|
||
.footnote-line a:not(.reversefootnote) { color: inherit; }
|
||
.md-attr { display: none; }
|
||
.md-fn-count::after { content: "."; }
|
||
code, pre, samp, tt { font-family: var(--monospace); }
|
||
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
|
||
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
|
||
code { text-align: left; vertical-align: initial; }
|
||
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
|
||
.md-inline-math .MathJax_SVG .noError { display: none !important; }
|
||
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
|
||
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
|
||
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
|
||
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
|
||
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
|
||
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
|
||
.MathJax_SVG * { transition: none 0s ease 0s; }
|
||
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
|
||
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
|
||
.md-diagram-panel > svg { max-width: 100%; }
|
||
[lang="mermaid"] svg, [lang="flow"] svg { max-width: 100%; height: auto; }
|
||
[lang="mermaid"] .node text { font-size: 1rem; }
|
||
table tr th { border-bottom: 0px; }
|
||
video { max-width: 100%; display: block; margin: 0px auto; }
|
||
iframe { max-width: 100%; width: 100%; border: none; }
|
||
.highlight td, .highlight tr { border: 0px; }
|
||
|
||
|
||
.CodeMirror { height: auto; }
|
||
.CodeMirror.cm-s-inner { background: inherit; }
|
||
.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
|
||
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
|
||
.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
|
||
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
|
||
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
|
||
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
|
||
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
|
||
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
|
||
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
|
||
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
|
||
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
|
||
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
|
||
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
|
||
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
|
||
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
|
||
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
|
||
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
|
||
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
|
||
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
|
||
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
|
||
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
|
||
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
|
||
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
|
||
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
|
||
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
|
||
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
|
||
.cm-negative { color: rgb(221, 68, 68); }
|
||
.cm-positive { color: rgb(34, 153, 34); }
|
||
.cm-header, .cm-strong { font-weight: 700; }
|
||
.cm-del { text-decoration: line-through; }
|
||
.cm-em { font-style: italic; }
|
||
.cm-link { text-decoration: underline; }
|
||
.cm-error { color: red; }
|
||
.cm-invalidchar { color: red; }
|
||
.cm-constant { color: rgb(38, 139, 210); }
|
||
.cm-defined { color: rgb(181, 137, 0); }
|
||
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
|
||
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
|
||
.cm-s-inner .CodeMirror-activeline-background { background: inherit; }
|
||
.CodeMirror { position: relative; overflow: hidden; }
|
||
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
|
||
.CodeMirror-sizer { position: relative; }
|
||
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }
|
||
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
|
||
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }
|
||
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
|
||
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
|
||
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }
|
||
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
|
||
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
|
||
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
|
||
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
|
||
.CodeMirror-lines { cursor: text; }
|
||
.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
|
||
.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
|
||
.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
|
||
.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
|
||
.CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }
|
||
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
|
||
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
|
||
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
|
||
.CodeMirror-measure pre { position: static; }
|
||
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
|
||
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
|
||
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
|
||
.cm-searching { background: rgba(255, 255, 0, 0.4); }
|
||
@media print {
|
||
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
|
||
}
|
||
|
||
|
||
:root { --side-bar-bg-color: #fafafa; --control-text-color: #777; }
|
||
html { font-size: 16px; }
|
||
body { font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; color: rgb(51, 51, 51); line-height: 1.6; }
|
||
#write { max-width: 860px; margin: 0px auto; padding: 30px 30px 100px; }
|
||
#write > ul:first-child, #write > ol:first-child { margin-top: 30px; }
|
||
a { color: rgb(65, 131, 196); }
|
||
h1, h2, h3, h4, h5, h6 { position: relative; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.4; cursor: text; }
|
||
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { text-decoration: none; }
|
||
h1 tt, h1 code { font-size: inherit; }
|
||
h2 tt, h2 code { font-size: inherit; }
|
||
h3 tt, h3 code { font-size: inherit; }
|
||
h4 tt, h4 code { font-size: inherit; }
|
||
h5 tt, h5 code { font-size: inherit; }
|
||
h6 tt, h6 code { font-size: inherit; }
|
||
h1 { padding-bottom: 0.3em; font-size: 2.25em; line-height: 1.2; border-bottom: 1px solid rgb(238, 238, 238); }
|
||
h2 { padding-bottom: 0.3em; font-size: 1.75em; line-height: 1.225; border-bottom: 1px solid rgb(238, 238, 238); }
|
||
h3 { font-size: 1.5em; line-height: 1.43; }
|
||
h4 { font-size: 1.25em; }
|
||
h5 { font-size: 1em; }
|
||
h6 { font-size: 1em; color: rgb(119, 119, 119); }
|
||
p, blockquote, ul, ol, dl, table { margin: 0.8em 0px; }
|
||
li > ol, li > ul { margin: 0px; }
|
||
hr { height: 2px; padding: 0px; margin: 16px 0px; background-color: rgb(231, 231, 231); border: 0px none; overflow: hidden; box-sizing: content-box; }
|
||
li p.first { display: inline-block; }
|
||
ul, ol { padding-left: 30px; }
|
||
ul:first-child, ol:first-child { margin-top: 0px; }
|
||
ul:last-child, ol:last-child { margin-bottom: 0px; }
|
||
blockquote { border-left: 4px solid rgb(223, 226, 229); padding: 0px 15px; color: rgb(119, 119, 119); }
|
||
blockquote blockquote { padding-right: 0px; }
|
||
table { padding: 0px; word-break: initial; }
|
||
table tr { border-top: 1px solid rgb(223, 226, 229); margin: 0px; padding: 0px; }
|
||
table tr:nth-child(2n), thead { background-color: rgb(248, 248, 248); }
|
||
table tr th { font-weight: bold; border-width: 1px 1px 0px; border-top-style: solid; border-right-style: solid; border-left-style: solid; border-top-color: rgb(223, 226, 229); border-right-color: rgb(223, 226, 229); border-left-color: rgb(223, 226, 229); border-image: initial; border-bottom-style: initial; border-bottom-color: initial; text-align: left; margin: 0px; padding: 6px 13px; }
|
||
table tr td { border: 1px solid rgb(223, 226, 229); text-align: left; margin: 0px; padding: 6px 13px; }
|
||
table tr th:first-child, table tr td:first-child { margin-top: 0px; }
|
||
table tr th:last-child, table tr td:last-child { margin-bottom: 0px; }
|
||
.CodeMirror-lines { padding-left: 4px; }
|
||
.code-tooltip { box-shadow: rgba(0, 28, 36, 0.3) 0px 1px 1px 0px; border-top: 1px solid rgb(238, 242, 242); }
|
||
.md-fences, code, tt { border: 1px solid rgb(231, 234, 237); background-color: rgb(248, 248, 248); border-radius: 3px; padding: 2px 4px 0px; font-size: 0.9em; }
|
||
code { background-color: rgb(243, 244, 244); padding: 0px 2px; }
|
||
.md-fences { margin-bottom: 15px; margin-top: 15px; padding-top: 8px; padding-bottom: 6px; }
|
||
.md-task-list-item > input { margin-left: -1.3em; }
|
||
@media print {
|
||
html { font-size: 13px; }
|
||
table, pre { break-inside: avoid; }
|
||
pre { overflow-wrap: break-word; }
|
||
}
|
||
.md-fences { background-color: rgb(248, 248, 248); }
|
||
#write pre.md-meta-block { padding: 1rem; font-size: 85%; line-height: 1.45; background-color: rgb(247, 247, 247); border: 0px; border-radius: 3px; color: rgb(119, 119, 119); margin-top: 0px !important; }
|
||
.mathjax-block > .code-tooltip { bottom: 0.375rem; }
|
||
.md-mathjax-midline { background: rgb(250, 250, 250); }
|
||
#write > h3.md-focus::before { left: -1.5625rem; top: 0.375rem; }
|
||
#write > h4.md-focus::before { left: -1.5625rem; top: 0.285714rem; }
|
||
#write > h5.md-focus::before { left: -1.5625rem; top: 0.285714rem; }
|
||
#write > h6.md-focus::before { left: -1.5625rem; top: 0.285714rem; }
|
||
.md-image > .md-meta { border-radius: 3px; padding: 2px 0px 0px 4px; font-size: 0.9em; color: inherit; }
|
||
.md-tag { color: rgb(167, 167, 167); opacity: 1; }
|
||
.md-toc { margin-top: 20px; padding-bottom: 20px; }
|
||
.sidebar-tabs { border-bottom: none; }
|
||
#typora-quick-open { border: 1px solid rgb(221, 221, 221); background-color: rgb(248, 248, 248); }
|
||
#typora-quick-open-item { background-color: rgb(250, 250, 250); border-color: rgb(254, 254, 254) rgb(229, 229, 229) rgb(229, 229, 229) rgb(238, 238, 238); border-style: solid; border-width: 1px; }
|
||
.on-focus-mode blockquote { border-left-color: rgba(85, 85, 85, 0.12); }
|
||
header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", Arial, sans-serif; }
|
||
.file-node-content:hover .file-node-icon, .file-node-content:hover .file-node-open-state { visibility: visible; }
|
||
.mac-seamless-mode #typora-sidebar { background-color: var(--side-bar-bg-color); }
|
||
.md-lang { color: rgb(180, 101, 77); }
|
||
.html-for-mac .context-menu { --item-hover-bg-color: #E6F0FE; }
|
||
#md-notification .btn { border: 0px; }
|
||
.dropdown-menu .divider { border-color: rgb(229, 229, 229); }
|
||
|
||
|
||
</style>
|
||
</head>
|
||
<body class='typora-export os-windows' >
|
||
<div id='write' class = 'is-node'><h1><a name="tums-player-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E" class="md-header-anchor"></a><span>tums-player 使用说明</span></h1><div class='md-toc' mdtype='toc'><p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n0"><a class="md-toc-inner" style="cursor: pointer;" href="#tums-player-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E">tums-player 使用说明</a></span><span class="md-toc-item md-toc-h2" data-ref="n35"><a class="md-toc-inner" style="cursor: pointer;" href="#1.-%E7%AE%80%E4%BB%8B">1. 简介</a></span><span class="md-toc-item md-toc-h2" data-ref="n45"><a class="md-toc-inner" style="cursor: pointer;" href="#2.-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">2. 使用方法</a></span><span class="md-toc-item md-toc-h3" data-ref="n46"><a class="md-toc-inner" style="cursor: pointer;" href="#2.1-%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8Cdemo">2.1 本地运行demo</a></span><span class="md-toc-item md-toc-h3" data-ref="n54"><a class="md-toc-inner" style="cursor: pointer;" href="#2.2-%E6%AD%A3%E5%BC%8F%E9%83%A8%E7%BD%B2">2.2 正式部署</a></span><span class="md-toc-item md-toc-h2" data-ref="n65"><a class="md-toc-inner" style="cursor: pointer;" href="#3.-%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B------demo.html">3. 代码示例——demo.html</a></span><span class="md-toc-item md-toc-h2" data-ref="n78"><a class="md-toc-inner" style="cursor: pointer;" href="#4.-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E">4. 使用说明</a></span><span class="md-toc-item md-toc-h3" data-ref="n79"><a class="md-toc-inner" style="cursor: pointer;" href="#4.1-%E5%8F%82%E6%95%B0">4.1 参数</a></span><span class="md-toc-item md-toc-h3" data-ref="n331"><a class="md-toc-inner" style="cursor: pointer;" href="#4.2-%E4%BA%8B%E4%BB%B6">4.2 事件</a></span><span class="md-toc-item md-toc-h3" data-ref="n386"><a class="md-toc-inner" style="cursor: pointer;" href="#4.3-%E6%96%B9%E6%B3%95">4.3 方法</a></span><span class="md-toc-item md-toc-h2" data-ref="n616"><a class="md-toc-inner" style="cursor: pointer;" href="#5.-%E6%8E%A5%E5%85%A5tp-link%E5%95%86%E7%94%A8%E4%BA%91%E5%B9%B3%E5%8F%B0%E6%8C%87%E5%8D%97">5. 接入TP-LINK商用云平台指南</a></span><span class="md-toc-item md-toc-h3" data-ref="n628"><a class="md-toc-inner" style="cursor: pointer;" href="#5.1-%E9%A2%84%E8%A7%88%E6%B5%81%E7%A8%8B">5.1 预览流程</a></span><span class="md-toc-item md-toc-h3" data-ref="n636"><a class="md-toc-inner" style="cursor: pointer;" href="#5.2-%E5%9B%9E%E6%94%BE%E6%B5%81%E7%A8%8B">5.2 回放流程</a></span><span class="md-toc-item md-toc-h2" data-ref="n644"><a class="md-toc-inner" style="cursor: pointer;" href="#6.%E6%8E%A5%E5%85%A5tp-link-tums%E5%B9%B3%E5%8F%B0%E6%8C%87%E5%8D%97">6.接入TP-LINK TUMS平台指南</a></span><span class="md-toc-item md-toc-h2" data-ref="n657"><a class="md-toc-inner" style="cursor: pointer;" href="#7.-%E9%99%84%E5%BD%95">7. 附录</a></span><span class="md-toc-item md-toc-h3" data-ref="n658"><a class="md-toc-inner" style="cursor: pointer;" href="#7.1-%E9%94%99%E8%AF%AF%E7%A0%81">7.1 错误码</a></span><span class="md-toc-item md-toc-h3" data-ref="n795"><a class="md-toc-inner" style="cursor: pointer;" href="#7.2-%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B%E7%BA%A6%E6%9D%9F">7.2 事件类型约束</a></span></p></div><figure><table><thead><tr><th><span>版本</span></th><th><span>备注</span></th></tr></thead><tbody><tr><td><span>V1.0.0</span></td><td><span>1. 创建文档</span><br><span>2. 支持预览功能</span></td></tr><tr><td><span>V1.1.0</span></td><td><span>1. 增加商云接口调用流程</span><br><span>2. 增加回放功能相关参数和方法</span></td></tr><tr><td><span>V1.2.0</span></td><td><span>1. 增加语音对讲相关参数和方法</span></td></tr><tr><td><span>V1.3.0</span></td><td><span>1. 增加本地平台回放功能</span></td></tr><tr><td><span>V1.4.0</span></td><td><span>1. 增加鱼眼画面显示模式相关参数和方法</span></td></tr><tr><td><span>V1.5.0</span></td><td><span>1. 增加云台功能相关参数和方法</span></td></tr><tr><td><span>V1.5.1</span></td><td><span>1. 补充语音对讲详细参数说明</span></td></tr><tr><td><span>V2.0.0</span></td><td><span>1. 增加webcodecs解码方案及相关参数配置</span></td></tr><tr><td><span>V2.0.1</span></td><td><span>1. 增加画面旋转、镜头遮蔽、画面镜像功能</span></td></tr></tbody></table></figure><p> </p><h2><a name="1.-%E7%AE%80%E4%BB%8B" class="md-header-anchor"></a><span>1. 简介</span></h2><p><span>tums-player是基于TP-LINK平台封装的视频播放组件,使用过程中不必学习专业的业务概念,更不用调用繁琐的接口,能够以极简的嵌入方式,快速在应用中集成视频功能。</span></p><p><span>覆盖的平台包含:H5/web</span></p><p><span>浏览器支持:</span></p><ul><li><span>Chrome 60+</span></li><li><span>FireFox 55+</span></li></ul><p> </p><h2><a name="2.-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95" class="md-header-anchor"></a><span>2. 使用方法</span></h2><h3><a name="2.1-%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8Cdemo" class="md-header-anchor"></a><span>2.1 本地运行demo</span></h3><ol start='' ><li><span>下载tums-player-demo</span></li><li><span>解压代码</span></li><li><span>参考readme.pdf,启动demo</span></li></ol><h3><a name="2.2-%E6%AD%A3%E5%BC%8F%E9%83%A8%E7%BD%B2" class="md-header-anchor"></a><span>2.2 正式部署</span></h3><ol start='' ><li><span>下载tums-player</span></li><li><span>将压缩包移至服务器或前端项目后解压,需注意播放器资源路径要求为xxx/tums-player/</span></li><li><span>参照代码示例开发页面</span></li><li><span>运行服务器使用</span></li></ol><p> </p><h2><a name="3.-%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B------demo.html" class="md-header-anchor"></a><span>3. 代码示例——demo.html</span></h2><p><strong><span>创建dom</span></strong></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="html"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"><</span><span class="cm-tag">html</span><span class="cm-tag cm-bracket">></span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-tag cm-bracket"><</span><span class="cm-tag">body</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-tag cm-bracket"><</span><span class="cm-tag">div</span> <span class="cm-attribute">id</span>=<span class="cm-string">"video-container"</span><span class="cm-tag cm-bracket">></</span><span class="cm-tag">div</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-tag cm-bracket"></</span><span class="cm-tag">body</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"></</span><span class="cm-tag">html</span><span class="cm-tag cm-bracket">></span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 115px;"></div><div class="CodeMirror-gutters" style="display: none; height: 115px;"></div></div></div></pre><p><strong><span>引入sdk</span></strong></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="html"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment"><!-- 假设sdk在/static/tums-player/路径下 --></span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"><</span><span class="cm-tag">script</span> <span class="cm-attribute">src</span>=<span class="cm-string">"/static/tums-player/tums-player.umd.min.js"</span><span class="cm-tag cm-bracket">></</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 46px;"></div><div class="CodeMirror-gutters" style="display: none; height: 46px;"></div></div></div></pre><p><strong><span>初始化播放器</span></strong></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="html"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><span><span></span>x</span></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"><</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">TumsPlayer</span> <span class="cm-operator">=</span> <span class="cm-variable">window</span>[<span class="cm-string">'tums-player'</span>].<span class="cm-property">default</span>;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">player</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable">TumsPlayer</span>(<span class="cm-string">'video-container'</span>, {</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">type</span>: <span class="cm-string">'relay'</span>, <span class="cm-comment">// 协议类型,rtsp/relay</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">url</span>: <span class="cm-string">'https://xxx/requestRelayUrl?token=xxx'</span> <span class="cm-comment">// 取流地址</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">pluginPath</span>: <span class="cm-string">'/static'</span> <span class="cm-comment">// 当sdk资源不在根路径下时,需配置pluginPath</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> });</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"></</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text=""></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">// 或</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"><</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">TumsPlayer</span> <span class="cm-operator">=</span> <span class="cm-variable">window</span>[<span class="cm-string">'tums-player'</span>].<span class="cm-property">default</span>;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">player</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable">TumsPlayer</span>(<span class="cm-string">'video-container'</span>);</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">player</span>.<span class="cm-property">init</span>({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">type</span>: <span class="cm-string">'relay'</span>, <span class="cm-comment">// 协议类型,rtsp/relay</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">url</span>: <span class="cm-string">'https://xxx/requestRelayUrl?token=xxx'</span> <span class="cm-comment">// 取流地址</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> });</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"></</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text=""></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">// 对接TUMS平台</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"><</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">TumsPlayer</span> <span class="cm-operator">=</span> <span class="cm-variable">window</span>[<span class="cm-string">'tums-player'</span>].<span class="cm-property">default</span>;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">var</span> <span class="cm-def">player</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable">TumsPlayer</span>(<span class="cm-string">'video-container'</span>, {</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">type</span>: <span class="cm-string">'rtsp'</span>, <span class="cm-comment">// 协议类型,rtsp/relay</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">url</span>: <span class="cm-string">'rtsp://xxx'</span> <span class="cm-comment">// 取流地址</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">socket</span>: <span class="cm-string">'wss://xxx/ws'</span>, <span class="cm-comment">// websocket地址</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">pluginPath</span>: <span class="cm-string">'/static'</span> <span class="cm-comment">// 当sdk资源不在根路径下时,需配置pluginPath</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> });</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket"></</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">></span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 667px;"></div><div class="CodeMirror-gutters" style="display: none; height: 667px;"></div></div></div></pre><blockquote><p><span>对接TUMS平台,若websocket地址为IP或缺少TLS/SSL证书的域名,首次连接会出现失败的情况,需浏览器先主动访问</span><a href='https://xxx/ws' target='_blank' class='url'>https://xxx/ws</a><span> (wss替换为https),然后选择高级-继续前往对当前https地址进行授权</span></p></blockquote><p><strong><span>方法调用</span></strong></p><p><span>示例:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">start</span>(); <span class="cm-comment">// 开始播放(autoplay为false时可调用此方法)</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">pause</span>(); <span class="cm-comment">// 暂停</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">play</span>(); <span class="cm-comment">// 继续播放</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">destroy</span>().<span class="cm-property">then</span>(() <span class="cm-operator">=></span> {</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-comment">// do something</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}); <span class="cm-comment">// 销毁</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">on</span>(<span class="cm-string">'ready'</span>, (<span class="cm-def">evt</span>) <span class="cm-operator">=></span> {</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">console</span>.<span class="cm-property">log</span>(<span class="cm-variable-2">evt</span>.<span class="cm-property">detail</span>);</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}); <span class="cm-comment">// 事件监听</span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 207px;"></div><div class="CodeMirror-gutters" style="display: none; height: 207px;"></div></div></div></pre><p> </p><h2><a name="4.-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E" class="md-header-anchor"></a><span>4. 使用说明</span></h2><h3><a name="4.1-%E5%8F%82%E6%95%B0" class="md-header-anchor"></a><span>4.1 参数</span></h3><p><span>TumsPlayer类:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">TumsPlayer(node, options);</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><p><span>options说明:</span></p><figure><table><thead><tr><th><span>参数</span></th><th><span>说明</span></th><th><span>类型</span></th><th><span>可选值</span></th><th><span>默认值</span></th><th><span>是否必选</span></th></tr></thead><tbody><tr><td><span>type</span></td><td><span>视频流类型。目前取值有: rtsp(对接TP-LINK TUMS平台使用); relay(对接TP-LINK商用云平台使用)</span></td><td><span>String</span></td><td><span>rtsp/relay</span></td><td><span>rtsp</span></td><td><span>Y</span></td></tr><tr><td><span>url</span></td><td><span>取流地址: TP-LINK TUMS平台使用提供的getPreviewUrl/getPlaybackUrl/getMultitransUrl接口获取; TP-LINK商用云平台通过提供的requestStreamUrl接口获取;</span></td><td><span>String</span></td><td><span>--</span></td><td><span>--</span></td><td><span>Y</span></td></tr><tr><td><span>socket</span></td><td><span>websocket连接地址,type为rtsp时必填</span></td><td><span>String</span></td><td><span>--</span></td><td><span>--</span></td><td><span>N</span></td></tr><tr><td><span>decoderType</span></td><td><span>解码类型,目前取值有wasm(webAssembly软解),webcodecs(webcodecs API硬解,仅少数浏览器支持)。</span><br><span>未配置此参数会自动根据当前浏览器环境使用对应解码方式。</span><br><span>配置此参数会判断当前浏览器是否支持,若不支持会出现报错。</span></td><td><span>String</span></td><td><span>wasm/webcodecs</span></td><td><span>--</span></td><td><span>N</span></td></tr><tr><td><span>pluginPath</span></td><td><span>sdk资源地址,默认是在根路径下。比如sdk路径为/static/tums-player,则pluginPath值为/static</span></td><td><span>String</span></td><td><span>--</span></td><td><span>‘/’</span></td><td><span>N</span></td></tr><tr><td><span>autoplay</span></td><td><span>自动播放</span></td><td><span>Boolean</span></td><td><span>--</span></td><td><span>true</span></td><td><span>N</span></td></tr><tr><td><span>resolution</span></td><td><span>分辨率,目前取值有VGA(子码流),HD(主码流),初始传入此值仅用于标记当前实例的分辨率,实际播放效果以url为准</span></td><td><span>String</span></td><td><span>VGA/HD</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>cover</span></td><td><span>显示的画面是否覆盖父节点宽高,默认按画面原始比例显示</span></td><td><span>Boolean</span></td><td><span>--</span></td><td><span>false</span></td><td><span>N</span></td></tr><tr><td><span>streamType</span></td><td><span>流类型,目前取值有video(预览),sdvod(回放,仅支持TP-LINK商用云平台)</span></td><td><span>String</span></td><td><span>video/sdvod</span></td><td><span>video</span></td><td><span>N</span></td></tr><tr><td><span>userId</span></td><td><span>searchVideo接口返回的用户id,type为relay且streamType为sdvod时必填</span></td><td><span>Number</span></td><td><span>--</span></td><td><span>--</span></td><td><span>N</span></td></tr><tr><td><span>startTime</span></td><td><span>回放开始时间戳(见注1)</span></td><td><span>Number</span></td><td><span>--</span></td><td><span>当天00:00</span></td><td><span>N</span></td></tr><tr><td><span>endTime</span></td><td><span>回放结束时间戳</span></td><td><span>Number</span></td><td><span>--</span></td><td><span>--</span></td><td><span>N</span></td></tr><tr><td><span>eventType</span></td><td><span>回放事件类型(仅支持TP-LINK商用云平台, TP-LINK TUMS平台 需要在获取回放url时设置)</span></td><td><span>Number[]</span></td><td><span>见注2</span></td><td><span>[1, 2]</span></td><td><span>N</span></td></tr><tr><td><span>scale</span></td><td><span>回放倍速</span></td><td><span>Number</span></td><td><span>[0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16]</span></td><td><span>1</span></td><td><span>N</span></td></tr><tr><td><span>talkEnable</span></td><td><span>语音对讲使能</span></td><td><span>Boolean</span></td><td><span>--</span></td><td><span>true</span></td><td><span>N</span></td></tr><tr><td><span>screenshotEnable</span></td><td><span>截图使能</span></td><td><span>Boolean</span></td><td><span>--</span></td><td><span>true</span></td><td><span>N</span></td></tr><tr><td><span>volume</span></td><td><span>音量</span></td><td><span>Number</span></td><td><span>[1, 100]</span></td><td><span>50</span></td><td><span>N</span></td></tr><tr><td><span>fishEyeDisplayMode</span></td><td><span>鱼眼画面显示模式</span></td><td><span>String</span></td><td><span>'ORIGIN': 原图;</span><br><span>‘FISHEYE_360D’:顶装360度全景;</span><br><span>‘FISHEYE_180D’:顶装180度全景;</span><br><span>‘FISHEYE_WIN_PLANE_T</span><br><span>OP_QUAD’:顶装四分屏;</span><br><span>‘FISHEYE_LONGITUDE’:壁装全景拉伸;</span></td><td><span>‘ORIGIN’</span></td><td><span>N</span></td></tr><tr><td><span>authSessionId</span></td><td><span>鉴权Id(/tums/account/v1/login登录接口获取的sessionId,TP-LINK TUMS平台回放功能必选)</span></td><td><span>String</span></td><td><span>--</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>queryAddress</span></td><td><span>回放api访问前缀(TP-LINK TUMS平台回放功能必选)</span></td><td><span>String</span></td><td><span>--</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>videoSessionId</span></td><td><span>回放功能视频数据会话id(通过addPlaybackChn接口获取,TP-LINK TUMS平台回放功能必选)</span></td><td><span>String</span></td><td><span>--</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>videoDevId</span></td><td><span>设备id(TP-LINK TUMS平台回放功能必选)</span></td><td><span>String</span></td><td><span>--</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>storageDevId</span></td><td><span>回放数据存储设备id</span></td><td><span>String</span></td><td><span>--</span></td><td><span>''</span></td><td><span>N</span></td></tr><tr><td><span>useMultitrans</span></td><td><span>本地平台回放功能是否使用Multitrans协议</span></td><td><span>Boolean</span></td><td><span>--</span></td><td><span>false</span></td><td><span>N</span></td></tr></tbody></table></figure><p> </p><p><span>对接TP-LINK商用云平台,使用云台功能需传递以下参数:</span></p><figure><table><thead><tr><th><span>参数</span></th><th><span>说明</span></th><th><span>类型</span></th><th><span>可选值</span></th><th><span>默认值</span></th><th><span>是否必选</span></th></tr></thead><tbody><tr><td><span>appKey</span></td><td><span>从商用云平台获取的开发者密钥ID (AK)</span></td><td><span>String</span></td><td><span>-</span></td><td><span>-</span></td><td><span>Y</span></td></tr><tr><td><span>appSecret</span></td><td><span>从商用云平台获取的开发者密钥(SK)</span></td><td><span>String</span></td><td><span>-</span></td><td><span>-</span></td><td><span>Y</span></td></tr><tr><td><span>proxyServer</span></td><td><span>商用云平台地址</span></td><td><span>String</span></td><td><span>-</span></td><td><span>'</span><a href='https://api-smbcloud.tplinkcloud.com.cn/' target='_blank' class='url'>https://api-smbcloud.tplinkcloud.com.cn/</a><span>'</span></td><td><span>N</span></td></tr></tbody></table></figure><p><span>使用镜头遮蔽、画面镜像、画面旋转时需要传递以下参数:</span></p><figure><table><thead><tr><th><span>参数</span></th><th><span>说明</span></th><th><span>类型</span></th><th><span>可选值</span></th><th><span>默认值</span></th><th><span>是否必选</span></th></tr></thead><tbody><tr><td><span>parentId</span></td><td><span>nvr设备id</span></td><td><span>String</span></td><td><span>-</span></td><td><span>-</span></td><td><span>ipc通过nvr接入时需传递</span></td></tr><tr><td><span>channel</span></td><td><span>ipc通道号</span></td><td><span>Number</span></td><td><span>-</span></td><td><span>-</span></td><td><span>ipc通过nvr接入时需传递</span></td></tr><tr><td><span>devId</span></td><td><span>ipc设备id</span></td><td><span>String</span></td><td><span>-</span></td><td><span>-</span></td><td><span>Y</span></td></tr></tbody></table></figure><p><span>注:</span></p><ol start='' ><li><p><span>时间戳指从1970年1月1日开始所经过的毫秒数。</span></p></li><li><p><span>事件类型定义,需要区分直连IPC和NVR通道。</span></p><p><span>直连IPC(取值范围见6.2):</span></p><p><span>数组包含指定事件类型即可。eg: [1, 2, 3] 表示同时回放定时、移动侦测和遮挡侦测类型。</span></p><p><span>NVR通道:</span></p><p><span>目前仅支持:1 定时类型,2 动检类型。传值[1, 0]表示只回放定时类型,[2, 0]表示只回放动检类型,[3, 0]表示同时回放两种类型。</span></p></li></ol><p> </p><h3><a name="4.2-%E4%BA%8B%E4%BB%B6" class="md-header-anchor"></a><span>4.2 事件</span></h3><figure><table><thead><tr><th><span>事件</span></th><th><span>说明</span></th><th><span>回调参数</span></th></tr></thead><tbody><tr><td><span>ready</span></td><td><span>当播放器实例化完成时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>play</span></td><td><span>当媒介数据将要开始播放时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>pause</span></td><td><span>当媒介数据暂停时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>stream</span></td><td><span>开始推流时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>playing</span></td><td><span>当媒介数据已开始播放时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>error</span></td><td><span>发生错误时触发</span></td><td><span>event: {detail: {code: 0, message: '', type: 'audio'/'video'}},code详见错误码列表, type默认为video</span></td></tr><tr><td><span>warning</span></td><td><span>发生警告时触发</span></td><td><span>event: {detail: {code: 0, message: ''}},code详见错误码列表</span></td></tr><tr><td><span>disconnected</span></td><td><span>与服务器断开连接时触发</span></td><td><span>event: { detail: { code: 0, reason: '' } }</span></td></tr><tr><td><span>ended</span></td><td><span>当媒介数据播放结束时触发</span></td><td><span>event: {detail: player实例 }</span></td></tr><tr><td><span>zoom</span></td><td><span>当画面放大时触发</span></td><td><span>event: {detail: {scale: 放大的倍率,见注3} }</span></td></tr><tr><td><span>videoRecordFinished</span></td><td><span>录制文件下载时触发,目前录制超过10min将会自动下载</span></td><td><span>无</span></td></tr></tbody></table></figure><p><span>注:</span></p><ol start='3' ><li><span>进入电子放大状态后,在画面中单击鼠标左键放大画面,右键缩小画面,也可使用滚轮操作;放大范围:[1, 5],粒度为0.25。</span></li></ol><p> </p><h3><a name="4.3-%E6%96%B9%E6%B3%95" class="md-header-anchor"></a><span>4.3 方法</span></h3><figure><table><thead><tr><th><span>方法</span></th><th><span>说明</span></th><th><span>参数</span></th><th><span>返回值</span></th></tr></thead><tbody><tr><td><span>init</span></td><td><span>播放器初始化</span></td><td><span>同options</span></td><td><span>无</span></td></tr><tr><td><span>destroy</span></td><td><span>播放器销毁</span></td><td><span>无</span></td><td><span>Promise</span></td></tr><tr><td><span>start</span></td><td><span>开始播放</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>stop</span></td><td><span>停止播放</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>pause</span></td><td><span>暂停播放</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>play</span></td><td><span>继续播放</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>fullscreen</span></td><td><span>全屏放大</span></td><td><span>(controlEl: HtmlDomElement, forceRotate: Boolean)</span><br><span>controlEl: 全屏放大后在画面中插入的dom节点,可选</span><br><span>forceRotate: 是否强制横屏,默认为false</span></td><td><span>无</span></td></tr><tr><td><span>exitFullscreen</span></td><td><span>退出全屏</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>screenshot</span></td><td><span>视频截图</span></td><td><span>(download: Boolean)</span><br><span>download: 是否自动下载截图,默认为true</span></td><td><span>base64格式图片数据,png格式</span></td></tr><tr><td><span>on</span></td><td><span>监听事件,与事件列表对应</span></td><td><span>(eventName: String, callback: Function)</span></td><td><span>无</span></td></tr><tr><td><span>off</span></td><td><span>注销事件</span></td><td><span>(eventName: String, callback: Function)</span></td><td><span>无</span></td></tr><tr><td><span>setResolution</span></td><td><span>设置分辨率</span></td><td><span>(url: String, resolution: String)</span><br><span>url: 新分辨率对应视频流地址,</span><br><span>resolution: VGA(子码流)、HD(主码流),可选</span></td><td><span>无</span></td></tr><tr><td><span>setPlaybackConfig</span></td><td><span>设置回放参数</span></td><td><span>(options: Object)</span><br><span>options参数内容如下</span><br><span>startTime、endTime、scale、eventType(可任意组合)</span></td><td><span>无</span></td></tr><tr><td><span>getPlaybackTime</span></td><td><span>获取当前回放时间戳</span></td><td><span>无</span></td><td><span>timestamp:Number</span></td></tr><tr><td><span>toggleZoomState</span></td><td><span>切换电子放大状态(见注3)</span></td><td><span>(state: Number)</span><br><span>state: 1,进入放大状态;0,退出放大状态</span></td><td><span>无</span></td></tr><tr><td><span>setZoomScale</span></td><td><span>设置放大倍率</span></td><td><span>(scale: Number)</span><br><span>scale: 取值[1, 5],超过范围的值不生效</span></td><td><span>无</span></td></tr><tr><td><span>startVoiceIntercom</span></td><td><span>开始语音对讲</span></td><td><span>(options: Object)</span><br><span>详细内容见下方语音对讲参数说明</span></td><td><span>无</span></td></tr><tr><td><span>stopVoiceIntercom</span></td><td><span>结束语音对讲</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>playAudio</span></td><td><span>移动端需在用户操作页面触发touch等事件后,在事件回调中执行此方法开始播放音频</span></td><td><span>无</span></td><td><span>无</span></td></tr><tr><td><span>getVolume</span></td><td><span>获取当前播放音量</span></td><td><span>无</span></td><td><span>volume: Number</span></td></tr><tr><td><span>setVolume</span></td><td><span>设置播放音量</span></td><td><span>(volume: Number)</span><br><span>volume: 取值[0, 100]</span></td><td><span>无</span></td></tr><tr><td><span>setFishEyeDisplayMode</span></td><td><span>设置鱼眼画面显示模式</span></td><td><span>(mode: String)</span></td><td><span>无</span></td></tr><tr><td><span>startRecording</span></td><td><span>开启预览录像。受浏览器内存限制,建议录像时间不超过1分钟</span></td><td><span>(options: Object)</span><br><span>options参数内容如下</span><br><span>micStream: Boolean,是否录制麦克风声音,默认false</span></td><td><span>Promise</span><br><span>开始录像后resolve</span></td></tr><tr><td><span>stopRecording</span></td><td><span>停止预览录像并下载录像文件</span></td><td><span>(fileName: String, download: Boolean)</span><br><span>fileName: 文件名,最终下载文件名格式为</span><code>${文件名}_${时间戳}.mp4</code><br><span>download: 是否自动下载文件,默认true</span></td><td><span>Promise</span><br><span>返回录像文件blob类型数据</span></td></tr><tr><td><span>getRecordInfo</span></td><td><span>获取预览录像信息</span></td><td><span>无</span></td><td><span>recordInfo: Object</span><br><span>包含参数内容如下:</span><br><span>time: 录像时间,单位毫秒</span><br><span>size: 录像文件大小,单位kb</span></td></tr><tr><td><span>getLensMaskValue</span></td><td><span>获取镜头遮蔽状态</span></td><td><span>无</span></td><td><span>Promise</span><br><span>设备不支持时将返回error_code信息</span><br><span>设备支持时可从 result.lens_mask.lens_mask_info.enabled中取得具体状态</span></td></tr><tr><td><span>setLensMaskValue</span></td><td><span>设置镜头遮蔽状态</span></td><td><span>(maskStatus: String)</span><br><span>maskStatus: on/off</span></td><td><span>Promise</span><br><span>根据返回的error_code信息判断设置成功或者失败</span></td></tr><tr><td><span>getImageSwitch</span></td><td><span>获取图像切换配置,目前可包含镜像和画面旋转</span></td><td><span>无</span></td><td><span>Promise</span><br><span>失败时返回相关error_code信息</span><br><span>成功时可以通过result.flip_type和result.rotate_type分别取得镜像状态和旋转状态。</span></td></tr><tr><td><span>saveImageSwitch</span></td><td><span>设置图像切换配置,目前可包含镜像和画面旋转</span></td><td><span>(config: Object)</span><br><span>config.flip_type: 镜像状态</span><br><span>取值:</span><br><span>off:关闭</span><br><span>left_and_right:左右</span><br><span>up_and_down:上下</span><br><span>center:中心</span><br><span>config.rotate_type:旋转状态</span><br><span>off :关闭</span><br><span>anticlockwise_180 :逆时针旋转180</span><br><span>clockwise_90 :顺时针旋转90</span><br><span>anticlockwise_90 :逆时针旋转90</span></td><td><span>Promise</span><br><span>根据返回的error_code信息判断设置成功或者失败</span></td></tr><tr><td><span>getModuleSpec</span></td><td><span>获取设备能力集,目前包含镜像和镜头遮蔽,画面旋转默认全部ipc均支持</span></td><td><span>无</span></td><td><span>Promise</span><br><span>失败时返回相关error_code信息</span><br><span>成功时返回data</span><br><span>data. lensMaskEnable: 镜头遮蔽使能</span><br><span>data. flipEnable: 画面镜像使能</span><br><span>data.rotateEnable: 画面旋转使能</span></td></tr></tbody></table></figure><p> </p><p><strong><span>语音对讲参数说明</span></strong></p><p><span>对接TP-LINK商用云平台:</span></p><figure><table><thead><tr><th><span>参数</span></th><th><span>说明</span></th><th><span>类型</span></th><th><span>是否必选</span></th></tr></thead><tbody><tr><td><span>url</span></td><td><span>通过requestStreamUrl接口获取的语音对接地址</span></td><td><span>String</span></td><td><span>是</span></td></tr><tr><td><span>mode</span></td><td><span>通话模式,取值:</span><br><span>half_duplex:半双工模式</span><br><span>vad:VAD人声检测模式</span><br><span>aec:AEC全双工模式</span><br><span>默认为aec(双向语音对讲)</span></td><td><span>String</span></td><td><span>否</span></td></tr></tbody></table></figure><p><span>示例:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// 获取url流程</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">...</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// player为播放器实例</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">startVoiceIntercom</span>({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">url</span>: <span class="cm-string">'https://xxx/requestRelayUrl?token=xxx'</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 138px;"></div><div class="CodeMirror-gutters" style="display: none; height: 138px;"></div></div></div></pre><p><span>对接TP-LINK TUMS平台(接口调用详见第6节):</span></p><figure><table><thead><tr><th><span>参数</span></th><th><span>说明</span></th><th><span>类型</span></th><th><span>是否必选</span></th></tr></thead><tbody><tr><td><span>url</span></td><td><span>rtsp地址:</span><br><span>使用getMultitransUrl接口获取的rtspUrl或</span><br><span>使用requestBidirectionStream接口获取的参数拼接</span><br><code>${protocol}://${serverUrl}:${port}/</code></td><td><span>String</span></td><td><span>是</span></td></tr><tr><td><span>wssUrl</span></td><td><span>websocket地址:</span><br><span>使用getMultitransUrl接口获取的wssUrl或</span><br><span>使用requestBidirectionStream接口获取的参数拼接</span><br><code>wss://${serverUrl}:${port}/ws/</code></td><td><span>String</span></td><td><span>是</span></td></tr><tr><td><span>slpData</span></td><td><span>requestBidirectionStream接口响应的result数据</span><br><span>(使用getMultitransUrl接口获取url时不需要传此参数)</span></td><td><span>String</span></td><td><span>否</span></td></tr><tr><td><span>mode</span></td><td><span>同上</span></td><td><span>String</span></td><td><span>否</span></td></tr></tbody></table></figure><p><span>示例:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// 获取url流程</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">...</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// player为播放器实例</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">startVoiceIntercom</span>({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">url</span>: <span class="cm-string">'rtsp://xxxx'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">wssUrl</span>: <span class="cm-string">'wss://xxx/ws'</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 161px;"></div><div class="CodeMirror-gutters" style="display: none; height: 161px;"></div></div></div></pre><p> </p><p><strong><span>云台方法</span></strong><span>(仅对接TP-LINK商用云平台支持)</span></p><figure><table><thead><tr><th><span>方法</span></th><th><span>说明</span></th><th><span>参数</span></th><th><span>参数详解</span></th><th><span>返回值</span></th></tr></thead><tbody><tr><td><span>setPtzParams</span></td><td><span>云台的转动、调焦</span></td><td><span>(options: Object)</span><br><span>options参数内容如下</span><br><span> id 、 direction 、 startOrNot、speed</span></td><td><span>id:设备索引,可通过getDeviceInRegionWithPermission等接口获取;</span><br><span>direction:移动方向( 0表示左上、1表示上、2表示右上 、 3表示左、4表示持续水平转动、5表示右 、 6表示左下、7表示下、8表示右下 、 9表示缩小画面、10表示放大画面、 11表示聚焦近处、12表示聚焦远处) ; </span><br><span>startOrNot :开始或停止移动( 0表示停止,1表示开始 );</span><br><span>speed:移动速度(浮点型字符串,0-1之间),默认值‘0.571’</span></td><td><span>Promise,设备不支持相关指令时将返回error_code信息</span></td></tr><tr><td><span>resetPtzDevicePosition</span></td><td><span>云台复位</span></td><td><span>(id: String)</span></td><td><span>id:设备索引,可通过getDeviceInRegionWithPermission等接口获取;</span></td><td><span>Promise,设备不支持相关指令时将返回error_code信息</span></td></tr></tbody></table></figure><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">// mousedown 开始移动</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">player.setPtzParams({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> id: '574674137700770163',</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> direction: 3,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> startOrNot: 1</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}).then((response) => {</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> // Do something</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">// mouseup 停止移动</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">player.setPtzParams({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> id: '574674137700770163',</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> direction: 3,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> startOrNot: 0</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 322px;"></div><div class="CodeMirror-gutters" style="display: none; height: 322px;"></div></div></div></pre><p> </p><h2><a name="5.-%E6%8E%A5%E5%85%A5tp-link%E5%95%86%E7%94%A8%E4%BA%91%E5%B9%B3%E5%8F%B0%E6%8C%87%E5%8D%97" class="md-header-anchor"></a><span>5. 接入TP-LINK商用云平台指南</span></h2><p><span>用户需注册TP-LINK商用云平台账号成为开发者。</span></p><p><span>该账号需要安全保存,因为后续所有的开发流程都需要基于此账号进行,更重要的是,后续添加的设备与购买的服务,都归属于该账号。该账号还将作为超级管理员,可以创建子账号,从而实现应用内权限 的分配与管理:</span></p><ol start='' ><li><span>设备添加到开发者账号下。</span></li><li><span>开发者账号授权设备权限给子账户A。</span></li><li><span>用户A通过子账户A的权限来操作设备</span></li></ol><p><span>开发者后台通过账户登录TP-LINK商用云平台后,可通过相关协议文档获取到用于预览的视频流地址和鉴权token等信息。具体流程如下:</span></p><p> </p><h3><a name="5.1-%E9%A2%84%E8%A7%88%E6%B5%81%E7%A8%8B" class="md-header-anchor"></a><span>5.1 预览流程</span></h3><p><span>开发者获取到AK/SK并计算出请求签名后,可参考以下请求流程获取预览链接:</span></p><div class="md-diagram-panel"><svg id="mermaidChart0" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 582.7109375 843" style=""><style></style><style>#mermaidChart0 {
|
||
color: rgb(51, 51, 51);
|
||
font: normal normal 400 normal 14.4px / 23.04px "Lucida Console", Consolas, Courier, monospace;
|
||
}</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M309.8203125,63L309.8203125,99.5L309.8203125,136" marker-end="url(#arrowhead41)" style="fill:none"></path><defs><marker id="arrowhead41" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M309.8203125,179L309.8203125,215.5L309.8203125,252" marker-end="url(#arrowhead42)" style="fill:none"></path><defs><marker id="arrowhead42" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M271.5379175646552,295L206.546875,331.5L206.546875,368" marker-end="url(#arrowhead43)" style="fill:none"></path><defs><marker id="arrowhead43" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M206.546875,411L206.546875,447.5L271.5379175646552,484" marker-end="url(#arrowhead44)" style="fill:none"></path><defs><marker id="arrowhead44" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M348.1027074353448,295L413.09375,331.5L413.09375,389.5L413.09375,447.5L348.1027074353448,484" marker-end="url(#arrowhead45)" style="fill:none"></path><defs><marker id="arrowhead45" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M309.8203125,527L309.8203125,563.5L309.8203125,600" marker-end="url(#arrowhead46)" style="fill:none"></path><defs><marker id="arrowhead46" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M309.8203125,643L309.8203125,679.5L309.8203125,716" marker-end="url(#arrowhead47)" style="fill:none"></path><defs><marker id="arrowhead47" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(309.8203125,99.5)" style="opacity: 1;"><g transform="translate(-73.7578125,-11.5)" class="label"><foreignObject width="147.515625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getEnterpriseList</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(309.8203125,215.5)" style="opacity: 1;"><g transform="translate(-73.7578125,-11.5)" class="label"><foreignObject width="147.515625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getAllProjectInfo</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(206.546875,331.5)" style="opacity: 1;"><g transform="translate(-173.53125,-11.5)" class="label"><foreignObject width="347.0625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getRootRegionsExcludeEmptyWithPermission</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(206.546875,447.5)" style="opacity: 1;"><g transform="translate(-186.546875,-11.5)" class="label"><foreignObject width="373.09375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getRegionChildrenExcludeEmptyWithPermission</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(309.8203125,563.5)" style="opacity: 1;"><g transform="translate(-134.4921875,-11.5)" class="label"><foreignObject width="268.984375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getDeviceInRegionWithPermission</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(309.8203125,679.5)" style="opacity: 1;"><g transform="translate(-69.4140625,-11.5)" class="label"><foreignObject width="138.828125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">requestStreamUrl</span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="a" transform="translate(309.8203125,41.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-188.890625" y="-21.5" width="377.78125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-178.890625,-11.5)"><foreignObject width="357.78125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取企业列表, 请求头需携带X-Authorization,下同</div></foreignObject></g></g></g><g class="node" id="b" transform="translate(309.8203125,157.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取项目列表</div></foreignObject></g></g></g><g class="node" id="c" transform="translate(309.8203125,273.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-175.6015625" y="-21.5" width="351.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-165.6015625,-11.5)"><foreignObject width="331.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取项目内区域根节点去除特定权限设备为空的区域</div></foreignObject></g></g></g><g class="node" id="d" transform="translate(206.546875,389.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-161.203125" y="-21.5" width="322.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-151.203125,-11.5)"><foreignObject width="302.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取区域的子区域去除有特定权限设备为空区域</div></foreignObject></g></g></g><g class="node" id="e" transform="translate(309.8203125,505.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-103.6015625" y="-21.5" width="207.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-93.6015625,-11.5)"><foreignObject width="187.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取区域内有指定权限的设备</div></foreignObject></g></g></g><g class="node" id="f" transform="translate(309.8203125,621.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-67.6015625" y="-21.5" width="135.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-57.6015625,-11.5)"><foreignObject width="115.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取设备预览地址</div></foreignObject></g></g></g><g class="node" id="g" transform="translate(309.8203125,737.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-93.6328125" y="-21.5" width="187.265625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-83.6328125,-11.5)"><foreignObject width="167.265625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">预览url传给sdk即可播放</div></foreignObject></g></g></g></g></g></g></svg></div><p><span>requestStreamUrl请求和响应参数示例:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="json" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="json"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">{</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-string cm-property">"clientType"</span>:<span class="cm-string">"browser"</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"clientUUID"</span>:<span class="cm-string">"8cb18a36-8cc4-143b-2214-641945094566"</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"devInfoId"</span>:<span class="cm-string">"574674137700825011"</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"resolution"</span>:<span class="cm-number">2</span>, <span class="cm-comment">// 0:流畅,2:高清</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"streamType"</span>:<span class="cm-string">"video"</span>, <span class="cm-comment">// video: 预览,sdvod:回放</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"cloudDomain"</span>:<span class="cm-string">"smbcloud.tp-link.com.cn"</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"windowUUID"</span>:<span class="cm-string">"c01984bd-0f28-8384-f66d-78f9325bf434"</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">{</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"result"</span>:{</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"sdkStreamUrl"</span>:<span class="cm-string">"https://smbcloud.tp-link.com.cn/tums/relay/v1/sdk/requestRelayUrl?token=12931-e3NhbHQgPSAtMTQyMzI0MTM3O2NsaWVu-4f17ec1306694dc5a0390a06f4a56f22&devInfoId=574674137700825011&clientUUID=8cb18a36-8cc4-143b-2214-641945094566&clientType=browser&streamType=video"</span> <span class="cm-comment">// url传入sdk即可播放</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> },</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-string cm-property">"error_code"</span>:<span class="cm-number">0</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 437px;"></div><div class="CodeMirror-gutters" style="display: none; height: 437px;"></div></div></div></pre><blockquote><p><span>预览时清晰度默认为流畅,若要修改清晰度,需重新调用requestStreamUrl接口配置resolution,以获取新的播放地址</span></p></blockquote><p> </p><h3><a name="5.2-%E5%9B%9E%E6%94%BE%E6%B5%81%E7%A8%8B" class="md-header-anchor"></a><span>5.2 回放流程</span></h3><p><span>获取设备前的流程与预览一致,前端拿到设备ID之后,可查询设备存储的录像并进行播放:</span></p><div class="md-diagram-panel"><svg id="mermaidChart1" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 444.484375 797" style=""><style></style><style>#mermaidChart1 {
|
||
color: rgb(51, 51, 51);
|
||
font: normal normal 400 normal 14.4px / 23.04px "Lucida Console", Consolas, Courier, monospace;
|
||
}</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M190.2421875,63L190.2421875,99.5L190.2421875,136" marker-end="url(#arrowhead86)" style="fill:none"></path><defs><marker id="arrowhead86" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M190.2421875,179L190.2421875,215.5L190.2421875,252" marker-end="url(#arrowhead87)" style="fill:none"></path><defs><marker id="arrowhead87" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M166.73959455818965,295L126.83984375,331.5L166.73959455818965,368" marker-end="url(#arrowhead88)" style="fill:none"></path><defs><marker id="arrowhead88" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M213.74478044181035,368L253.64453125,331.5L213.74478044181035,295" marker-end="url(#arrowhead89)" style="fill:none"></path><defs><marker id="arrowhead89" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M190.2421875,411L190.2421875,436L190.2421875,461" marker-end="url(#arrowhead90)" style="fill:none"></path><defs><marker id="arrowhead90" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M190.2421875,504L190.2421875,529L190.2421875,554" marker-end="url(#arrowhead91)" style="fill:none"></path><defs><marker id="arrowhead91" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M190.2421875,597L190.2421875,633.5L190.2421875,670" marker-end="url(#arrowhead92)" style="fill:none"></path><defs><marker id="arrowhead92" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(190.2421875,99.5)" style="opacity: 1;"><g transform="translate(-134.4921875,-11.5)" class="label"><foreignObject width="268.984375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getDeviceInRegionWithPermission</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(190.2421875,215.5)" style="opacity: 1;"><g transform="translate(-43.3828125,-11.5)" class="label"><foreignObject width="86.765625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">searchYear</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(126.83984375,331.5)" style="opacity: 1;"><g transform="translate(-47.7265625,-11.5)" class="label"><foreignObject width="95.453125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">searchVideo</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(253.64453125,331.5)" style="opacity: 1;"><g transform="translate(-59.078125,-11.5)" class="label"><foreignObject width="118.15625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">是, 继续查询录像</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(190.2421875,633.5)" style="opacity: 1;"><g transform="translate(-69.4140625,-11.5)" class="label"><foreignObject width="138.828125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">requestStreamUrl</span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="a" transform="translate(190.2421875,41.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-103.6015625" y="-21.5" width="207.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-93.6015625,-11.5)"><foreignObject width="187.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取区域内有指定权限的设备</div></foreignObject></g></g></g><g class="node" id="b" transform="translate(190.2421875,157.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-112.28125" y="-21.5" width="224.5625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-102.28125,-11.5)"><foreignObject width="204.5625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">查询设备具有录像的日期, 可选</div></foreignObject></g></g></g><g class="node" id="c" transform="translate(190.2421875,273.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-118" y="-21.5" width="236" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-108,-11.5)"><foreignObject width="216" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">查询设备在某天所存储的录像片段</div></foreignObject></g></g></g><g class="node" id="d" transform="translate(190.2421875,389.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-170.2421875" y="-21.5" width="340.484375" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-160.2421875,-11.5)"><foreignObject width="320.484375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">响应的录像片段长度 == endIdx - startIdx?</div></foreignObject></g></g></g><g class="node" id="e" transform="translate(190.2421875,482.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-146.984375" y="-21.5" width="293.96875" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-136.984375,-11.5)"><foreignObject width="273.96875" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">查询完成, 记录userId, 显示录像时间轴</div></foreignObject></g></g></g><g class="node" id="f" transform="translate(190.2421875,575.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取回放地址</div></foreignObject></g></g></g><g class="node" id="g" transform="translate(190.2421875,691.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-93.6328125" y="-21.5" width="187.265625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-83.6328125,-11.5)"><foreignObject width="167.265625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">回放url传给sdk即可播放</div></foreignObject></g></g></g></g></g></g></svg></div><p><span>回放时sdk传参必填项如下:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">var</span> <span class="cm-def">player</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable">TumsPlayer</span>(<span class="cm-string">'video-container'</span>, {</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-property">type</span>: <span class="cm-string">'relay'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-property">url</span>: <span class="cm-string">'https://xxx/requestRelayUrl?token=xxx&&streamType=sdvod'</span> <span class="cm-comment">// 取流地址</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">streamType</span>: <span class="cm-string">'sdvod'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-variable">userId</span>: <span class="cm-string">'1'</span>, <span class="cm-comment">// searchVideo接口获取</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 138px;"></div><div class="CodeMirror-gutters" style="display: none; height: 138px;"></div></div></div></pre><p><span>回放常用功能示例:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">getPlaybackTime</span>(); <span class="cm-comment">// 获取回放进度,更新时间轴可使用此方法</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">setPlaybackConfig</span>({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">startTime</span>: <span class="cm-string">'xxx'</span> <span class="cm-comment">// 跳转到指定时间开始回放</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">player</span>.<span class="cm-property">setPlaybackConfig</span>({</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">startTime</span>: <span class="cm-string">'xxx'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-property">scale</span>: <span class="cm-number">0.5</span> <span class="cm-comment">// 配置可组合,跳转时间并开启1/2倍速播放</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">});</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 184px;"></div><div class="CodeMirror-gutters" style="display: none; height: 184px;"></div></div></div></pre><p> </p><h2><a name="6.%E6%8E%A5%E5%85%A5tp-link-tums%E5%B9%B3%E5%8F%B0%E6%8C%87%E5%8D%97" class="md-header-anchor"></a><span>6.接入TP-LINK TUMS平台指南</span></h2><p><span>回放/预览接口调用流程:</span></p><div class="md-diagram-panel"><svg id="mermaidChart2" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 1149.7289123535156 2771.42813873291" style=""><style></style><style>#mermaidChart2 {
|
||
color: rgb(51, 51, 51);
|
||
font: normal normal 400 normal 14.4px / 23.04px "Lucida Console", Consolas, Courier, monospace;
|
||
}</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,63L392.3703155517578,99.5L392.3703155517578,136" marker-end="url(#arrowhead213)" style="fill:none"></path><defs><marker id="arrowhead213" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,179L392.3703155517578,215.5L392.3703155517578,252" marker-end="url(#arrowhead214)" style="fill:none"></path><defs><marker id="arrowhead214" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,295L392.3703155517578,331.5L392.3703155517578,368" marker-end="url(#arrowhead215)" style="fill:none"></path><defs><marker id="arrowhead215" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,411L392.3703155517578,447.5L392.3703155517578,484" marker-end="url(#arrowhead216)" style="fill:none"></path><defs><marker id="arrowhead216" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,527L392.3703155517578,563.5L392.3703155517578,600" marker-end="url(#arrowhead217)" style="fill:none"></path><defs><marker id="arrowhead217" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,643L392.3703155517578,691L392.3703155517578,739" marker-end="url(#arrowhead218)" style="fill:none"></path><defs><marker id="arrowhead218" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,782L392.3703155517578,807L392.3703155517578,832" marker-end="url(#arrowhead219)" style="fill:none"></path><defs><marker id="arrowhead219" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,875L392.3703155517578,911.5L392.3703155517578,948" marker-end="url(#arrowhead220)" style="fill:none"></path><defs><marker id="arrowhead220" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M338.9875030517578,978.6417550847902L120.8359375,1016L120.8359375,1041" marker-end="url(#arrowhead221)" style="fill:none"></path><defs><marker id="arrowhead221" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M120.8359375,1084L120.8359375,1109L120.8359375,1134" marker-end="url(#arrowhead222)" style="fill:none"></path><defs><marker id="arrowhead222" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M120.8359375,1177L120.8359375,1225L120.8359375,1372.1984405517578" marker-end="url(#arrowhead223)" style="fill:none"></path><defs><marker id="arrowhead223" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,991L392.3703155517578,1016L392.3703155517578,1041" marker-end="url(#arrowhead224)" style="fill:none"></path><defs><marker id="arrowhead224" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,1084L392.3703155517578,1109L392.3703155517578,1134" marker-end="url(#arrowhead225)" style="fill:none"></path><defs><marker id="arrowhead225" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M392.3703155517578,1177L392.3703155517578,1225L392.8703155517578,1273.500003051758" marker-end="url(#arrowhead226)" style="fill:none"></path><defs><marker id="arrowhead226" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M344.6992885386235,1466.725851038623L295.6007843017578,1539.3968811035156L295.6007843017578,1655.5375061035156" marker-end="url(#arrowhead227)" style="fill:none"></path><defs><marker id="arrowhead227" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M295.6007843017578,1698.5375061035156L295.6007843017578,1826.1781311035156L379.1351656700389,1961.8765716552734" marker-end="url(#arrowhead228)" style="fill:none"></path><defs><marker id="arrowhead228" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M441.04134012896526,1466.7258473710353L489.1398468017578,1539.3968811035156L489.1398468017578,1655.5375061035156" marker-end="url(#arrowhead229)" style="fill:none"></path><defs><marker id="arrowhead229" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M489.1398468017578,1698.5375061035156L489.1398468017578,1826.1781311035156L405.60546543347675,1961.8765716552734" marker-end="url(#arrowhead230)" style="fill:none"></path><defs><marker id="arrowhead230" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M445.7531280517578,975.2256783798181L825.9085998535156,1016L825.9085998535156,1041" marker-end="url(#arrowhead231)" style="fill:none"></path><defs><marker id="arrowhead231" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M825.9085998535156,1084L825.9085998535156,1109L825.9085998535156,1134" marker-end="url(#arrowhead232)" style="fill:none"></path><defs><marker id="arrowhead232" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M825.9085998535156,1177L825.9085998535156,1225L825.9085998535156,1372.1984405517578" marker-end="url(#arrowhead233)" style="fill:none"></path><defs><marker id="arrowhead233" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M825.9085998535156,1415.1984405517578L825.9085998535156,1539.3968811035156L826.4085998535156,1564.8968811035156" marker-end="url(#arrowhead234)" style="fill:none"></path><defs><marker id="arrowhead234" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M786.6210502344445,1750.3905814844445L744.4578170776367,1826.1781311035156L744.957817077636,1863.1781341552737" marker-end="url(#arrowhead235)" style="fill:none"></path><defs><marker id="arrowhead235" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M716.3792857163108,2075.996477793947L695.6898498535156,2140.5750122070312L695.6898498535156,2177.0750122070312" marker-end="url(#arrowhead236)" style="fill:none"></path><defs><marker id="arrowhead236" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M695.6898498535156,2220.0750122070312L695.6898498535156,2268.0750122070312L695.6898498535156,2316.0750122070312" marker-end="url(#arrowhead237)" style="fill:none"></path><defs><marker id="arrowhead237" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M883.0814594353144,1733.5052715217168L976.9281311035156,1826.1781311035156L976.9281311035156,1983.3765716552734L976.9281311035156,2140.5750122070312L963.8379842823949,2177.0750122070312" marker-end="url(#arrowhead238)" style="fill:none"></path><defs><marker id="arrowhead238" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M799.6420857299004,2049.890734399495L874.6765670776367,2140.5750122070312L925.9343872728019,2177.0750122070312" marker-end="url(#arrowhead239)" style="fill:none"></path><defs><marker id="arrowhead239" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M956.1273498535156,2220.0750122070312L956.1273498535156,2268.0750122070312L956.1273498535156,2316.0750122070312" marker-end="url(#arrowhead240)" style="fill:none"></path><defs><marker id="arrowhead240" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M956.1273498535156,2359.0750122070312L956.1273498535156,2407.0750122070312L956.6273498535146,2455.5750129699704" marker-end="url(#arrowhead241)" style="fill:none"></path><defs><marker id="arrowhead241" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M956.6273498535145,2571.9281364440917L956.1273498535156,2607.92813873291L956.1273498535156,2644.42813873291" marker-end="url(#arrowhead242)" style="fill:none"></path><defs><marker id="arrowhead242" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(392.3703155517578,99.5)" style="opacity: 1;"><g transform="translate(-21.6953125,-11.5)" class="label"><foreignObject width="43.390625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">login</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,215.5)" style="opacity: 1;"><g transform="translate(-73.7578125,-11.5)" class="label"><foreignObject width="147.515625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getAllProjectInfo</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,331.5)" style="opacity: 1;"><g transform="translate(-112.796875,-11.5)" class="label"><foreignObject width="225.59375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getRootRegionsExcludeEmpty</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,447.5)" style="opacity: 1;"><g transform="translate(-125.8125,-11.5)" class="label"><foreignObject width="251.625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getRegionChildrenExcludeEmpty</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,563.5)" style="opacity: 1;"><g transform="translate(-73.7578125,-11.5)" class="label"><foreignObject width="147.515625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">setCurrentProject</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,691)" style="opacity: 1;"><g transform="translate(-138.828125,-23)" class="label"><foreignObject width="277.65625" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getDeviceInRegionWithPermission <br> 注5</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(392.3703155517578,911.5)" style="opacity: 1;"><g transform="translate(-69.4140625,-11.5)" class="label"><foreignObject width="138.828125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getIpcCapability</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(120.8359375,1225)" style="opacity: 1;"><g transform="translate(-56.3984375,-11.5)" class="label"><foreignObject width="112.796875" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getPreviewUrl</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(295.6007843017578,1826.1781311035156)" style="opacity: 1;"><g transform="translate(-69.4140625,-11.5)" class="label"><foreignObject width="138.828125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getMultitransUrl</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(489.1398468017578,1826.1781311035156)" style="opacity: 1;"><g transform="translate(-104.125,-11.5)" class="label"><foreignObject width="208.25" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">requestBidirectionStream</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(825.9085998535156,1225)" style="opacity: 1;"><g transform="translate(-69.4140625,-23)" class="label"><foreignObject width="138.828125" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getStoragesById <br> 注1</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(744.4578170776367,1826.1781311035156)" style="opacity: 1;"><g transform="translate(-7.203125,-11.5)" class="label"><foreignObject width="14.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(695.6898498535156,2140.5750122070312)" style="opacity: 1;"><g transform="translate(-14.40625,-11.5)" class="label"><foreignObject width="28.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">支持</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(695.6898498535156,2268.0750122070312)" style="opacity: 1;"><g transform="translate(-73.7578125,-23)" class="label"><foreignObject width="147.515625" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getMultitransUrl <br> 注4</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(976.9281311035156,1983.3765716552734)" style="opacity: 1;"><g transform="translate(-7.203125,-11.5)" class="label"><foreignObject width="14.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">是</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(874.6765670776367,2140.5750122070312)" style="opacity: 1;"><g transform="translate(-21.6015625,-11.5)" class="label"><foreignObject width="43.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">不支持</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(956.1273498535156,2268.0750122070312)" style="opacity: 1;"><g transform="translate(-65.078125,-23)" class="label"><foreignObject width="130.15625" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">addPlaybackChn <br> 注2</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(956.1273498535156,2407.0750122070312)" style="opacity: 1;"><g transform="translate(-65.078125,-23)" class="label"><foreignObject width="130.15625" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">getPlaybackUrl <br> 注3</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(956.1273498535156,2607.92813873291)" style="opacity: 1;"><g transform="translate(-14.40625,-11.5)" class="label"><foreignObject width="28.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">成功</span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="A" transform="translate(392.3703155517578,41.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-77.8515625" y="-21.5" width="155.703125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-67.8515625,-11.5)"><foreignObject width="135.703125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">登录获取sessionId</div></foreignObject></g></g></g><g class="node" id="a" transform="translate(392.3703155517578,157.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取项目信息</div></foreignObject></g></g></g><g class="node" id="b" transform="translate(392.3703155517578,273.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-60.40625" y="-21.5" width="120.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-50.40625,-11.5)"><foreignObject width="100.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取根分组信息</div></foreignObject></g></g></g><g class="node" id="c" transform="translate(392.3703155517578,389.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-60.40625" y="-21.5" width="120.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-50.40625,-11.5)"><foreignObject width="100.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取子分组信息</div></foreignObject></g></g></g><g class="node" id="d" transform="translate(392.3703155517578,505.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">设置当前项目</div></foreignObject></g></g></g><g class="node" id="f" transform="translate(392.3703155517578,621.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-103.6015625" y="-21.5" width="207.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-93.6015625,-11.5)"><foreignObject width="187.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取分组下有预览权限的设备</div></foreignObject></g></g></g><g class="node" id="f1" transform="translate(392.3703155517578,760.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-38.8046875" y="-21.5" width="77.609375" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-28.8046875,-11.5)"><foreignObject width="57.609375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">选择设备</div></foreignObject></g></g></g><g class="node" id="f2" transform="translate(392.3703155517578,853.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-60.40625" y="-21.5" width="120.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-50.40625,-11.5)"><foreignObject width="100.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取设备能力集</div></foreignObject></g></g></g><g class="node" id="f3" transform="translate(392.3703155517578,969.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.3828125" y="-21.5" width="106.765625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.3828125,-11.5)"><foreignObject width="86.765625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">capability</div></foreignObject></g></g></g><g class="node" id="e" transform="translate(120.8359375,1062.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-24.40625" y="-21.5" width="48.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.40625,-11.5)"><foreignObject width="28.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">预览</div></foreignObject></g></g></g><g class="node" id="h" transform="translate(120.8359375,1155.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-51.8203125" y="-21.5" width="103.640625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-41.8203125,-11.5)"><foreignObject width="83.640625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取预览url</div></foreignObject></g></g></g><g class="node" id="i" transform="translate(120.8359375,1393.6984405517578)" style="opacity: 1;"><rect rx="0" ry="0" x="-100.8359375" y="-21.5" width="201.671875" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-90.8359375,-11.5)"><foreignObject width="181.671875" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">预览url传递给sdk即可播放</div></foreignObject></g></g></g><g class="node" id="e2" transform="translate(392.3703155517578,1062.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-38.8046875" y="-21.5" width="77.609375" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-28.8046875,-11.5)"><foreignObject width="57.609375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">语音对讲</div></foreignObject></g></g></g><g class="node" id="h1" transform="translate(392.3703155517578,1155.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-66.21875" y="-21.5" width="132.4375" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-56.21875,-11.5)"><foreignObject width="112.4375" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取语音对讲url</div></foreignObject></g></g></g><g class="node" id="h2" transform="translate(392.3703155517578,1393.6984405517578)" style="opacity: 1;"><polygon points="120.6984375,0 241.396875,-120.6984375 120.6984375,-241.396875 0,-120.6984375" rx="5" ry="5" transform="translate(-120.6984375,120.6984375)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-91.109375,-23)"><foreignObject width="182.21875" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">capability.multitrans<br>判断是否支持multitrans</div></foreignObject></g></g></g><g class="node" id="i1" transform="translate(295.6007843017578,1677.0375061035156)" style="opacity: 1;"><rect rx="0" ry="0" x="-24.40625" y="-21.5" width="48.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.40625,-11.5)"><foreignObject width="28.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">支持</div></foreignObject></g></g></g><g class="node" id="i3" transform="translate(392.3703155517578,1983.3765716552734)" style="opacity: 1;"><rect rx="0" ry="0" x="-145.6953125" y="-21.5" width="291.390625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-135.6953125,-11.5)"><foreignObject width="271.390625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">调用startVoiceIntercom方法开始对讲</div></foreignObject></g></g></g><g class="node" id="i2" transform="translate(489.1398468017578,1677.0375061035156)" style="opacity: 1;"><rect rx="0" ry="0" x="-31.6015625" y="-21.5" width="63.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-21.6015625,-11.5)"><foreignObject width="43.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">不支持</div></foreignObject></g></g></g><g class="node" id="e1" transform="translate(825.9085998535156,1062.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-24.40625" y="-21.5" width="48.8125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.40625,-11.5)"><foreignObject width="28.8125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">回放</div></foreignObject></g></g></g><g class="node" id="k" transform="translate(825.9085998535156,1155.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-89.203125" y="-21.5" width="178.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-79.203125,-11.5)"><foreignObject width="158.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取设备录像的存储位置</div></foreignObject></g></g></g><g class="node" id="l" transform="translate(825.9085998535156,1393.6984405517578)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">选择存储位置</div></foreignObject></g></g></g><g class="node" id="m" transform="translate(825.9085998535156,1677.0375061035156)" style="opacity: 1;"><polygon points="112.640625,0 225.28125,-112.640625 112.640625,-225.28125 0,-112.640625" rx="5" ry="5" transform="translate(-112.640625,112.640625)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-82.15625,-23)"><foreignObject width="164.3125" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">存储位置是否是nvr设备?<br>通过storageType判断</div></foreignObject></g></g></g><g class="node" id="n" transform="translate(744.4578170776367,1983.3765716552734)" style="opacity: 1;"><polygon points="120.6984375,0 241.396875,-120.6984375 120.6984375,-241.396875 0,-120.6984375" rx="5" ry="5" transform="translate(-120.6984375,120.6984375)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-91.109375,-23)"><foreignObject width="182.21875" height="46"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">capability.multitrans<br>判断是否支持multitrans</div></foreignObject></g></g></g><g class="node" id="p" transform="translate(695.6898498535156,2198.5750122070312)" style="opacity: 1;"><rect rx="0" ry="0" x="-109.6015625" y="-21.5" width="219.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-99.6015625,-11.5)"><foreignObject width="199.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取回放url,即wss与socket</div></foreignObject></g></g></g><g class="node" id="q" transform="translate(695.6898498535156,2337.5750122070312)" style="opacity: 1;"><rect rx="0" ry="0" x="-100.8359375" y="-21.5" width="201.671875" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-90.8359375,-11.5)"><foreignObject width="181.671875" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">回放url传递给sdk即可播放</div></foreignObject></g></g></g><g class="node" id="r1" transform="translate(956.1273498535156,2198.5750122070312)" style="opacity: 1;"><rect rx="0" ry="0" x="-53.203125" y="-21.5" width="106.40625" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-43.203125,-11.5)"><foreignObject width="86.40625" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">添加回放通道</div></foreignObject></g></g></g><g class="node" id="r2" transform="translate(956.1273498535156,2337.5750122070312)" style="opacity: 1;"><rect rx="0" ry="0" x="-109.6015625" y="-21.5" width="219.203125" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-99.6015625,-11.5)"><foreignObject width="199.203125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取回放url 即wss与socket</div></foreignObject></g></g></g><g class="node" id="r3" transform="translate(956.1273498535156,2513.2515754699707)" style="opacity: 1;"><polygon points="58.1765625,0 116.353125,-58.1765625 58.1765625,-116.353125 0,-58.1765625" rx="5" ry="5" transform="translate(-58.1765625,58.1765625)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-33.140625,-11.5)"><foreignObject width="66.28125" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">获取成功?</div></foreignObject></g></g></g><g class="node" id="r4" transform="translate(956.1273498535156,2665.92813873291)" style="opacity: 1;"><rect rx="0" ry="0" x="-100.8359375" y="-21.5" width="201.671875" height="43"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-90.8359375,-11.5)"><foreignObject width="181.671875" height="23"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">回放url传递给sdk即可播放</div></foreignObject></g></g></g></g></g></g></svg></div><p><span>注1:</span></p><p><span>getStoragesById:传递devId获取设备数据存储位置,即存储设备id(storageDevId)。</span></p><p><span>注2:</span></p><p><span>addPlaybackChn:传递设备id、存储设备id、事件类型、回放起止时间、回放速率(目前传递'1/1'即可)获取回放通道标识,即sessionId。</span></p><p><span>注3:</span></p><p><span>getPlaybackUrl:传递addPlaybackChnsessionId、设备id、storageDevId,获取的获取回放url,准备传给sdk。</span></p><p><span>注4:</span></p><p><span>getMultitransUrl:传递devId可以直接获取到httpsPort与socket地址,若无httpsPort则使用默认值10180 ,wss地址拼接格式如下:</span><code>ws://${host}:${httpsPort}/ws/</code><span>,其中host是socket中的ip部分。</span></p><p><span>注5:</span>
|
||
<span>getDeviceInRegionWithPermission接口可以根据预览权限进行设备列表查询,permissionList传</span><code>[0]</code><span>代表预览,传</span><code>[1]</code><span>代表回放。</span></p><p> </p><h2><a name="7.-%E9%99%84%E5%BD%95" class="md-header-anchor"></a><span>7. 附录</span></h2><h3><a name="7.1-%E9%94%99%E8%AF%AF%E7%A0%81" class="md-header-anchor"></a><span>7.1 错误码</span></h3><figure><table><thead><tr><th><span>code</span></th><th><span>含义</span></th></tr></thead><tbody><tr><td><span>1001</span></td><td><span>请求中止</span></td></tr><tr><td><span>1002</span></td><td><span>网络异常</span></td></tr><tr><td><span>1003</span></td><td><span>媒体资源解析错误</span></td></tr><tr><td><span>1004</span></td><td><span>不支持的媒体源</span></td></tr><tr><td><span>1005</span></td><td><span>媒体资源已加密</span></td></tr><tr><td><span>1006</span></td><td><span>媒体数据传输错误</span></td></tr><tr><td><span>1007</span></td><td><span>连接服务器失败</span></td></tr><tr><td><span>1008</span></td><td><span>不支持的解码类型</span></td></tr><tr><td><span>1101</span></td><td><span>商云服务器内部错误</span></td></tr><tr><td><span>1102</span></td><td><span>token过期或不存在</span></td></tr><tr><td><span>1104</span></td><td><span>设备ID无效</span></td></tr><tr><td><span>1105</span></td><td><span>达到带宽限制</span></td></tr><tr><td><span>1106</span></td><td><span>请求预览地址参数错误</span></td></tr><tr><td><span>1107</span></td><td><span>连接relay服务器失败</span></td></tr><tr><td><span>1108</span></td><td><span>取流失败</span></td></tr><tr><td><span>1109</span></td><td><span>暂不支持此视频流协议版本</span></td></tr><tr><td><span>1110</span></td><td><span>已达到拉流请求上限</span></td></tr><tr><td><span>1111</span></td><td><span>已长时间观看</span></td></tr><tr><td><span>1112</span></td><td><span>VIP窗口预览数达到上限</span></td></tr><tr><td><span>1113</span></td><td><span>VIP预览客户端数量达到上限</span></td></tr><tr><td><span>1114</span></td><td><span>分享时段结束</span></td></tr><tr><td><span>1115</span></td><td><span>权限不足</span></td></tr><tr><td><span>1120</span></td><td><span>多媒体数据加密状态发生变化</span></td></tr><tr><td><span>1121</span></td><td><span>设备正在通话中</span></td></tr><tr><td><span>1122</span></td><td><span>解绑设备</span></td></tr><tr><td><span>1201</span></td><td><span>设备不支持语音对讲</span></td></tr><tr><td><span>1202</span></td><td><span>用户拒绝提供信息</span></td></tr><tr><td><span>1203</span></td><td><span>浏览器不支持硬件设备</span></td></tr><tr><td><span>1204</span></td><td><span>无法发现指定的硬件设备</span></td></tr><tr><td><span>1205</span></td><td><span>无法打开麦克风</span></td></tr><tr><td><span>1206</span></td><td><span>通话模式不支持</span></td></tr><tr><td><span>1207</span></td><td><span>音频设备正忙,无法发起通话</span></td></tr><tr><td><span>1208</span></td><td><span>浏览器获取麦克风权限被拒绝</span></td></tr><tr><td><span>1301</span></td><td><span>设备离线</span></td></tr><tr><td><span>1302</span></td><td><span>设备被移除</span></td></tr><tr><td><span>1303</span></td><td><span>设备密码被修改</span></td></tr><tr><td><span>1401</span></td><td><span>未知错误</span></td></tr><tr><td><span>1402</span></td><td><span>操作超时</span></td></tr><tr><td><span>1403</span></td><td><span>网络异常</span></td></tr><tr><td><span>1404</span></td><td><span>服务器内部错误</span></td></tr><tr><td><span>1405</span></td><td><span>session过期或不存在</span></td></tr><tr><td><span>1501</span></td><td><span>回放配置失败</span></td></tr><tr><td><span>2001</span></td><td><span>分辨率过高导致视频卡顿</span></td></tr><tr><td><span>2002</span></td><td><span>网络不稳定导致视频卡顿</span></td></tr><tr><td><span>2003</span></td><td><span>解码性能不足</span></td></tr></tbody></table></figure><h3><a name="7.2-%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B%E7%BA%A6%E6%9D%9F" class="md-header-anchor"></a><span>7.2 事件类型约束</span></h3><figure><table><thead><tr><th><span>eventType</span></th><th><strong><span>事件类型</span></strong></th><th><span>eventType</span></th><th><strong><span>事件类型</span></strong></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>定时</span></td><td><span>2</span></td><td><span>移动侦测</span></td></tr><tr><td><span>3</span></td><td><span>遮挡侦测</span></td><td><span>4</span></td><td><span>越界侦测</span></td></tr><tr><td><span>5</span></td><td><span>区域入侵</span></td><td><span>6</span></td><td><span>进入区域</span></td></tr><tr><td><span>7</span></td><td><span>离开区域</span></td><td><span>8</span></td><td><span>徘徊侦测</span></td></tr><tr><td><span>9</span></td><td><span>人员聚集</span></td><td><span>10</span></td><td><span>快速移动</span></td></tr><tr><td><span>11</span></td><td><span>停车侦测</span></td><td><span>12</span></td><td><span>物品遗留</span></td></tr><tr><td><span>13</span></td><td><span>物品拿取</span></td><td><span>14</span></td><td><span>音频异常</span></td></tr><tr><td><span>15</span></td><td><span>虚焦侦测</span></td><td><span>16</span></td><td><span>场景变更</span></td></tr><tr><td><span>17</span></td><td><span>人脸侦测</span></td><td><span>18</span></td><td><span>报警</span></td></tr><tr><td><span>19</span></td><td><span>过线统计</span></td><td><span>20</span></td><td><span>登陆异常</span></td></tr><tr><td><span>21</span></td><td><span>SD卡满</span></td><td><span>22</span></td><td><span>SD卡错误</span></td></tr><tr><td><span>23</span></td><td><span>SD卡拔出</span></td><td><span>24</span></td><td><span>网线断开</span></td></tr><tr><td><span>25</span></td><td><span>IP冲突</span></td><td><span>26</span></td><td><span>人形检测</span></td></tr><tr><td><span>27</span></td><td><span>车辆侦测</span></td><td><span>28</span></td><td><span>物品遗漏拿取侦测</span></td></tr><tr><td><span>29</span></td><td><span>移动侦测云存</span></td><td><span>30</span></td><td><span>迎宾播报</span></td></tr><tr><td><span>31</span></td><td><span>视频留言</span></td><td><span>32</span></td><td><span>移动侦测人形加强</span></td></tr><tr><td><span>33</span></td><td><span>移动侦测车辆加强</span></td><td><span>34</span></td><td><span>区域入侵人形加强</span></td></tr><tr><td><span>35</span></td><td><span>区域入侵车辆加强</span></td><td><span>36</span></td><td><span>越界侦测人形加强</span></td></tr><tr><td><span>37</span></td><td><span>越界侦测车辆加强</span></td><td><span>38</span></td><td><span>人脸比对</span></td></tr><tr><td><span>39</span></td><td><span>人脸相册</span></td><td><span>40</span></td><td><span>进入区域人形加强</span></td></tr><tr><td><span>41</span></td><td><span>进入区域车辆加强</span></td><td><span>42</span></td><td><span>离开区域人形加强</span></td></tr><tr><td><span>43</span></td><td><span>离开区域车辆加强</span></td><td><span>44</span></td><td><span>客流量统计</span></td></tr><tr><td><span>45</span></td><td><span>门铃呼叫</span></td><td><span>46</span></td><td><span>人员到访</span></td></tr><tr><td><span>47</span></td><td><span>车位占用</span></td><td><span>48</span></td><td><span>哭声检测</span></td></tr><tr><td><span>49</span></td><td><span>人形相册</span></td><td><span>50</span></td><td><span>紧急呼救</span></td></tr></tbody></table></figure></div>
|
||
</body>
|
||
</html> |