Skip to content

Commit 6e2b1db

Browse files
tonychanchenoldcodefarmer
authored andcommitted
添加云存拉取云api接口
tapd:https://tapd.woa.com/NEW_IOT/prong/stories/view/1020393192876733571 Change-Id: I95259fb58610e2dbdaecef003ab5623408767f2f
1 parent b151d0b commit 6e2b1db

File tree

5 files changed

+84
-0
lines changed

5 files changed

+84
-0
lines changed

sdk/video-link-android/src/main/java/com/tencent/iot/video/link/service/VideoBaseService.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,20 @@ open class VideoBaseService(secretId: String, secretKey: String) {
7878
param, headerParams, callback, VideoRequestCode.video_describe_video_url)
7979
}
8080

81+
fun getMJPEGVideoUrl(productId: String, devName: String, startTime: kotlin.Long, callback: VideoCallback) {
82+
var headerParams = videoCommonHeaderParams("DescribeCloudStorageStreamData", "2021-11-25")
83+
val param = TreeMap<String, Any>()
84+
param["ProductId"] = productId
85+
param["DeviceName"] = devName
86+
param["StartTime"] = startTime
87+
val authorization = sign(VideoHttpUtil.VIDEO_SERVICE, headerParams, param)
88+
if (authorization != null) {
89+
headerParams["Authorization"] = authorization
90+
}
91+
basePost(VideoHttpUtil.VIDEO_SERVICE + VideoHttpUtil.REST_HOST_URL,
92+
param, headerParams, callback, VideoRequestCode.video_describe_video_url)
93+
}
94+
8195
fun getIPCRecordData(productId: String, devName: String, startDate: Date, endDate: Date, callback: VideoCallback) {
8296
var headerParams = videoCommonHeaderParams("DescribeCloudStorageEvents", "2020-12-15")
8397
val param = TreeMap<String, Any>()

sdkdemo/src/main/java/com/tencent/iot/explorer/link/demo/video/DevInfo.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class DevInfo {
1010
var Online = 0
1111
var EnableState =0
1212
var Channel = 0
13+
var mjpeg = 0
1314

1415
set(value) {
1516
field = value

sdkdemo/src/main/java/com/tencent/iot/explorer/link/demo/video/playback/cloudPlayback/SignedUrlResponse.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ package com.tencent.iot.explorer.link.demo.video.playback.cloudPlayback
33
class SignedUrlResponse {
44
var requestId = ""
55
var signedVideoURL = ""
6+
}
7+
8+
class SignedMJPEGUrlResponse {
9+
var audioStream = ""
10+
var videoStream = ""
11+
var startTime = ""
612
}

sdkdemo/src/main/java/com/tencent/iot/explorer/link/demo/video/playback/cloudPlayback/VideoCloudPlaybackFragment.kt

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,12 @@ class VideoCloudPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
212212
var url = String.format(URL_FORMAT, presenter.getBaseUrl(),
213213
(it.list.get(pos).startTime).toString(),
214214
endtime)
215+
216+
if (devInfo!!.mjpeg == 1) {
217+
// if (true) {
218+
playMJPEGVideo(url, it.list.get(pos).startTime)
219+
return
220+
}
215221
playVideo(url, 0)
216222
}
217223
}
@@ -293,6 +299,61 @@ class VideoCloudPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
293299
}
294300
}
295301

302+
private fun playMJPEGVideo(url: String, startTime: Long) {
303+
App.data.accessInfo?.let {
304+
var expireDate = Date((Date().time + 60 * 60 * 1000))
305+
var time = expireDate.time / 1000
306+
VideoBaseService(it.accessId, it.accessToken).getMJPEGVideoUrl(it.productId, devInfo!!.DeviceName, startTime, object : VideoCallback{
307+
override fun fail(msg: String?, reqCode: Int) {
308+
ToastDialog(context, ToastDialog.Type.WARNING, msg ?: "", 2000).show()
309+
}
310+
311+
override fun success(response: String?, reqCode: Int) {
312+
var json = JSONObject.parseObject(response)
313+
Log.d("响应mjpeg===>url", response)
314+
Log.d(tag, "响应mjpeg===>url=${response} end")
315+
json?.let {
316+
it.getJSONObject("Response")?.let {
317+
var eventResp = JSONObject.parseObject(it.toJSONString(), SignedMJPEGUrlResponse::class.java)
318+
eventResp?.let {
319+
var url1Play = URLDecoder.decode(it.videoStream)
320+
var url2Play = URLDecoder.decode(it.audioStream)
321+
startMJPEGVideo(url1Play, url2Play)
322+
}
323+
}
324+
}
325+
}
326+
})
327+
}
328+
}
329+
330+
private fun startMJPEGVideo(vUrl: String, aUrl: String) {
331+
player.reset()
332+
player.setSurface(this.surface)
333+
player.dataSource = vUrl
334+
335+
seekBarJob?.cancel()
336+
player.prepareAsync()
337+
player.setOnErrorListener(onErrorListener)
338+
player.setOnInfoListener(onInfoListener)
339+
player.setOnCompletionListener(onCompletionListener)
340+
player.setOnPreparedListener {
341+
var realOffset = it.duration
342+
tv_current_pos.text = CommonUtils.formatTime(realOffset)
343+
tv_all_time.text = CommonUtils.formatTime(it.duration)
344+
video_seekbar.max = (it.duration / 1000).toInt()
345+
startJobRereshTimeAndProgress()
346+
iv_start.isClickable = true
347+
it.start()
348+
launch(Dispatchers.Main) {
349+
delay(10)
350+
if (!isShowing) {
351+
iv_start.performClick()
352+
}
353+
}
354+
}
355+
}
356+
296357
private fun startVideo(url: String, offset: Long) {
297358
if (TextUtils.isEmpty(url)) return
298359
player.reset()

sdkdemo/src/main/java/com/tencent/iot/explorer/link/demo/video/preview/VideoPreviewMJPEGActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ class VideoPreviewMJPEGActivity : VideoBaseActivity(), EventView, TextureView.Su
107107
}
108108

109109
override fun initView() {
110+
XP2P.setLogEnable(false, false)
110111
presenter = EventPresenter(this@VideoPreviewMJPEGActivity)
111112
var bundle = intent.getBundleExtra(VideoConst.VIDEO_CONFIG)
112113
bundle?.let {
@@ -310,6 +311,7 @@ class VideoPreviewMJPEGActivity : VideoBaseActivity(), EventView, TextureView.Su
310311
radio_playback.setOnClickListener {
311312
var dev = DevInfo()
312313
dev.DeviceName = presenter.getDeviceName()
314+
dev.mjpeg = 1
313315
VideoPlaybackActivity.startPlaybackActivity(this@VideoPreviewMJPEGActivity, dev)
314316
}
315317
radio_photo.setOnClickListener {

0 commit comments

Comments
 (0)