Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mirrorSimulator
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李远洪
mirrorSimulator
Commits
b88fdf62
Commit
b88fdf62
authored
Jan 05, 2021
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
做了一些优化
parent
9e675d61
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
5 deletions
+46
-5
lib/service/StreamH264Flv.py
lib/service/StreamH264Flv.py
+35
-2
ui/CameraArea.py
ui/CameraArea.py
+11
-3
No files found.
lib/service/StreamH264Flv.py
View file @
b88fdf62
...
...
@@ -34,6 +34,11 @@ class StreamH264Flv():
# self.getGetPlayUrl = "http://fb-test.vandyo.com/video/streamInfo" # 获取推流播放地址的url
self
.
isGetPlayUrl
=
0
# 是否已经获取了playUrl 0:没有 1:获取了
self
.
playUrl
=
""
# 视频播放地址
self
.
mainframe
=
None
# 图形界面主窗体,用于弹出对话框
self
.
logTextCtr
=
None
# 日志输出框,用于输出日志
self
.
pushStatusText
=
None
# 状态显示窗
self
.
multiPushStatus
=
0
# 多次推流标记, 0:该连接第一次推流 1:该连接第一次对流 2: 该连接第二次对流
self
.
timeStampSeek
=
0
# 时间搓偏移,推理完成后设置为最后一帧的时间搓值;循环推流的时候需要加上该值
def
setMobile
(
self
,
data
):
...
...
@@ -56,6 +61,12 @@ class StreamH264Flv():
self
.
isSend
=
data
def
setIsEndPush
(
self
,
data
):
self
.
isEndPush
=
data
def
setMainFrame
(
self
,
data
):
self
.
mainframe
=
data
def
setLogTextCtr
(
self
,
data
):
self
.
logTextCtr
=
data
def
setPushStatusText
(
self
,
data
):
self
.
pushStatusText
=
data
####################################################
...
...
@@ -82,6 +93,8 @@ class StreamH264Flv():
def
readFlvAndSend
(
self
):
self
.
isSend
=
1
# 控制暂停或继续推流
self
.
isEndPush
=
0
self
.
isFileHead
=
0
timeStamp
=
0
with
open
(
self
.
videoPath
,
'rb'
)
as
fi
:
con
=
fi
.
read
(
self
.
readSize
)
data
=
con
.
hex
()
...
...
@@ -107,7 +120,12 @@ class StreamH264Flv():
tag
=
data
[:
tagSize
*
2
+
30
]
# flv tag
tagType
=
self
.
getTagType
(
tag
)
# flv tag 类型,是音频 还是视频
AVtag
=
tag
[
30
:]
# 音视频 tag
avTimeStamp
=
self
.
getAVTimeStamp
(
tag
)
#获取时间戳
if
self
.
multiPushStatus
<
1
:
avTimeStamp
=
self
.
getAVTimeStamp
(
tag
)
#获取时间戳
timeStamp
=
avTimeStamp
else
:
avTimeStamp
=
self
.
getAVTimeStamp
(
tag
)
+
self
.
timeStampSeek
# 获取时间戳
timeStamp
=
avTimeStamp
if
avTimeStamp
>
100
:
if
self
.
isGetPlayUrl
==
0
:
self
.
getPlayUrl
(
self
.
mobile
,
self
.
channel
)
...
...
@@ -130,7 +148,12 @@ class StreamH264Flv():
data
=
data
[(
tagSize
*
2
+
30
):]
else
:
time
.
sleep
(
1
)
self
.
client
.
close
()
self
.
pushStatusText
.
SetValue
(
"已连网"
)
timeCur
=
self
.
getCurTime
()
self
.
multiPushStatus
=
self
.
multiPushStatus
+
1
self
.
timeStampSeek
=
self
.
timeStampSeek
+
timeStamp
+
5000
self
.
logTextCtr
.
WriteText
(
timeCur
+
"视频推流完,自动结束推流!
\n
"
)
# self.client.close()
####################################################
# 停止发送消息
...
...
@@ -295,6 +318,16 @@ class StreamH264Flv():
frameData
[
"frames"
]
=
frames
return
frameData
####################################################
# 获取当前时间
####################################################
def
getCurTime
(
self
):
timeCur
=
int
(
time
.
time
()
*
1000
)
timeArray
=
time
.
localtime
(
timeCur
/
1000
)
timeCur
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
timeCur
=
"["
+
timeCur
+
"] "
return
timeCur
if
__name__
==
"__main__"
:
obj
=
StreamH264Flv
()
...
...
ui/CameraArea.py
View file @
b88fdf62
...
...
@@ -242,6 +242,10 @@ class CameraArea():
obj
.
setMobile
(
devId
)
obj
.
setChannel
(
int
(
channel
))
obj
.
setVideoPath
(
flvPath
)
obj
.
setMainFrame
(
self
.
mainPanel
)
obj
.
setLogTextCtr
(
self
.
logTextCtr
)
obj
.
setPushStatusText
(
self
.
pushStatusText
)
self
.
pushObj
=
obj
self
.
pushObj
.
connectServer
()
timeCur
=
self
.
getCurTime
()
...
...
@@ -342,7 +346,7 @@ class CameraArea():
self
.
logTextCtr
.
WriteText
(
timeCur
+
"推流停止!
\n
"
)
self
.
pushStatusText
.
SetValue
(
"连网"
)
self
.
pushObj
.
setIsEndPush
(
1
)
self
.
pushObj
=
None
#
self.pushObj = None
####################################################
...
...
@@ -420,6 +424,10 @@ class CameraArea():
res
=
requests
.
post
(
self
.
getGetPlayUrl
,
data
=
json
.
dumps
({
'devId'
:
devId
,
'chan'
:
str
(
channel
)}))
.
text
res
=
json
.
loads
(
res
)
url
=
res
[
"data"
][
"url"
]
m_command
=
[
"ffplay.exe"
,
url
]
subprocess
.
run
(
m_command
)
if
self
.
getOsName
()
==
"Windows"
:
m_command
=
[
"ffplay.exe"
,
url
]
else
:
m_command
=
[
"ffplay"
,
url
]
CREATE_NO_WINDOW
=
0x08000000
subprocess
.
run
(
m_command
,
creationflags
=
CREATE_NO_WINDOW
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment