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
f6c46144
Commit
f6c46144
authored
Jan 12, 2021
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复mac下开启音视频日志崩溃问题
parent
6bf4e020
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
43 deletions
+64
-43
lib/service/StreamH264Flv.py
lib/service/StreamH264Flv.py
+10
-3
lib/service/StreamH264Flv_bak.py
lib/service/StreamH264Flv_bak.py
+49
-40
ui/CameraArea.py
ui/CameraArea.py
+5
-0
No files found.
lib/service/StreamH264Flv.py
View file @
f6c46144
...
...
@@ -6,6 +6,8 @@ import time
import
traceback
import
requests
import
wx
from
pubsub
import
pub
from
lib.protocal.Protocal_1078
import
Protocal_1078
from
lib.socket.ClientSocket
import
ClientSocket
...
...
@@ -213,7 +215,9 @@ class StreamH264Flv():
pkgs
=
self
.
protocal_1078
.
genPkgsByFrame
()
for
msg
in
pkgs
:
if
self
.
isOpenVideoLog
!=
0
:
print
(
"发送视频消息:"
+
msg
)
# print("发送视频消息:" + msg)
msgTxt
=
"发送视频消息:"
+
msg
wx
.
CallAfter
(
pub
.
sendMessage
,
"showLog"
,
msg
=
msgTxt
)
try
:
self
.
client
.
send
(
binascii
.
a2b_hex
(
msg
))
except
:
...
...
@@ -235,7 +239,9 @@ class StreamH264Flv():
pkgs
=
self
.
protocal_1078
.
genAudioPkgsByFrame
()
for
msg
in
pkgs
:
if
self
.
isOpenAudioLog
!=
0
:
print
(
"发送音频消息:"
+
msg
)
# print("发送音频消息:" + msg)
msgTxt
=
"发送音频消息:"
+
msg
wx
.
CallAfter
(
pub
.
sendMessage
,
"showLog"
,
msg
=
msgTxt
)
self
.
client
.
send
(
binascii
.
a2b_hex
(
msg
))
time
.
sleep
(
self
.
sendDur
)
...
...
@@ -359,7 +365,8 @@ if __name__ == "__main__":
obj
.
setSendDur
(
0.007
)
obj
.
setIsSendAudio
(
1
)
# obj.setMobile("013146201117")
obj
.
setMobile
(
"142043390091"
)
# obj.setMobile("142043390091")
obj
.
setMobile
(
"013146200000"
)
obj
.
setChannel
(
1
)
obj
.
setHost
(
"10.100.11.125"
)
# obj.setHost("video-test.vandyo.com")
...
...
lib/service/StreamH264Flv_bak.py
View file @
f6c46144
...
...
@@ -11,7 +11,7 @@ from lib.protocal.Protocal_1078 import Protocal_1078
from
lib.socket.ClientSocket
import
ClientSocket
class
StreamH264Flv
():
class
StreamH264Flv
_bak
():
def
__init__
(
self
):
self
.
isFileHead
=
0
# 读取文件的时候,是否是文件的开头 0:不是 1:是
...
...
@@ -131,22 +131,45 @@ class StreamH264Flv():
AVtag
=
tag
[
30
:]
# 音视频 tag
if
self
.
multiPushStatus
<
1
:
avTimeStamp
=
self
.
getAVTimeStamp
(
tag
)
#获取时间戳
timeStamp
=
avTimeStamp
if
tagType
==
"09"
:
timeStamp
=
timeStamp
+
self
.
getCompositionTime
(
AVtag
)
avTimeStamp
=
avTimeStamp
+
self
.
getCompositionTime
(
AVtag
)
timeStamp
=
avTimeStamp
else
:
avTimeStamp
=
self
.
getAVTimeStamp
(
tag
)
+
self
.
timeStampSeek
# 获取时间戳
timeStamp
=
avTimeStamp
if
tagType
==
"09"
:
timeStamp
=
timeStamp
+
self
.
getCompositionTime
(
AVtag
)
if
doCount
<
30
:
frameMap
[
timeStamp
]
=
AVtag
avTimeStamp
=
avTimeStamp
+
self
.
getCompositionTime
(
AVtag
)
timeStamp
=
avTimeStamp
####################################################################
if
doCount
<
60
:
if
int
(
avTimeStamp
*
10
)
in
frameMap
.
keys
():
avTimeStamp10
=
avTimeStamp
*
10
q
=
1
while
int
(
avTimeStamp10
)
in
frameMap
.
keys
():
avTimeStamp10
=
avTimeStamp
*
10
+
q
q
=
q
+
1
frameMap
[
int
(
avTimeStamp10
)]
=
tag
else
:
frameMap
[
int
(
avTimeStamp
*
10
)]
=
tag
doCount
=
doCount
+
1
data
=
data
[(
tagSize
*
2
+
30
):]
else
:
if
int
(
avTimeStamp
*
10
)
in
frameMap
.
keys
():
avTimeStamp10
=
avTimeStamp
*
10
q
=
1
while
int
(
avTimeStamp10
)
in
frameMap
.
keys
():
avTimeStamp10
=
avTimeStamp
*
10
+
q
q
=
q
+
1
frameMap
[
int
(
avTimeStamp10
)]
=
tag
else
:
frameMap
[
timeStamp
]
=
AV
tag
frameMap
[
int
(
avTimeStamp
*
10
)]
=
tag
frameArr
=
sorted
(
frameMap
.
keys
(),
reverse
=
True
)
AVtag
=
frameMap
.
pop
(
frameArr
.
pop
())
times
=
frameArr
.
pop
()
avTimeStamp
=
int
(
times
/
10
)
timeStamp
=
avTimeStamp
tag
=
frameMap
.
pop
(
times
)
tagType
=
self
.
getTagType
(
tag
)
AVtag
=
tag
[
30
:]
####################################################################
if
avTimeStamp
>
100
:
if
self
.
isGetPlayUrl
==
0
:
self
.
getPlayUrl
(
self
.
mobile
,
self
.
channel
)
...
...
@@ -169,32 +192,6 @@ class StreamH264Flv():
data
=
data
[(
tagSize
*
2
+
30
):]
else
:
time
.
sleep
(
1
)
while
len
(
frameMap
)
>
0
:
frameArr
=
sorted
(
frameMap
.
keys
(),
reverse
=
True
)
AVtag
=
frameMap
.
pop
(
frameArr
.
pop
())
if
avTimeStamp
>
100
:
if
self
.
isGetPlayUrl
==
0
:
self
.
getPlayUrl
(
self
.
mobile
,
self
.
channel
)
self
.
isGetPlayUrl
=
1
if
tagType
==
"08"
:
# 音频
AVdata
=
AVtag
[
4
:]
# 音频数据
if
self
.
isSendAudio
==
1
:
frameInfo
=
self
.
getAudioFrame
(
AVtag
)
for
frame
in
frameInfo
[
"frames"
]:
self
.
sendAudioFrame
(
frame
,
avTimeStamp
)
elif
tagType
==
"09"
:
# 视频
AVdata
=
AVtag
[
10
:]
# 视频数据
frameInfo
=
self
.
getVideoFrame
(
AVtag
)
for
frame
in
frameInfo
[
"frames"
]:
self
.
sendVideoFrame
(
frame
,
avTimeStamp
,
AVtag
)
elif
tagType
==
"12"
:
# 脚本
AVdata
=
AVtag
# 脚本数据
else
:
AVdata
=
AVtag
data
=
data
[(
tagSize
*
2
+
30
):]
self
.
pushStatusText
.
SetValue
(
"已连网"
)
timeCur
=
self
.
getCurTime
()
self
.
multiPushStatus
=
self
.
multiPushStatus
+
1
...
...
@@ -362,6 +359,18 @@ class StreamH264Flv():
compositionTime
=
int
(
AVTag
[
4
:
10
],
16
)
return
compositionTime
####################################################
# 获取视频帧的CompositionTime
####################################################
def
getCompositionTime
(
self
,
AVTag
):
AVCPkgType
=
int
(
AVTag
[
2
:
4
],
16
)
compositionTime
=
0
if
AVCPkgType
==
0
:
pass
else
:
compositionTime
=
int
(
AVTag
[
4
:
10
],
16
)
return
compositionTime
####################################################
# 根据AVtag,获取音频帧数据
####################################################
...
...
@@ -395,16 +404,16 @@ class StreamH264Flv():
if
__name__
==
"__main__"
:
obj
=
StreamH264Flv
()
obj
.
setSendDur
(
0.00
3
)
obj
=
StreamH264Flv
_bak
()
obj
.
setSendDur
(
0.00
7
)
obj
.
setIsSendAudio
(
1
)
# obj.setMobile("013146201117")
obj
.
setMobile
(
"
142043390091
"
)
obj
.
setMobile
(
"
013146200000
"
)
obj
.
setChannel
(
1
)
obj
.
setHost
(
"10.100.11.125"
)
# obj.setHost("video-test.vandyo.com")
obj
.
setPort
(
1078
)
obj
.
setVideoPath
(
"../../flv/
aaa
3.flv"
)
obj
.
setVideoPath
(
"../../flv/
bbb
3.flv"
)
obj
.
connectServer
()
obj
.
readFlvAndSend
()
...
...
ui/CameraArea.py
View file @
f6c46144
...
...
@@ -12,6 +12,7 @@ import subprocess
import
requests
import
wx
import
yaml
from
pubsub
import
pub
from
lib.service.StreamH264Flv
import
StreamH264Flv
...
...
@@ -178,8 +179,12 @@ class CameraArea():
boxSizer_bottom
.
Add
(
logArea
,
60
,
flag
=
wx
.
EXPAND
|
wx
.
ALL
)
boxSizer_bottom
.
Add
(
ctrArea
,
40
,
flag
=
wx
.
EXPAND
|
wx
.
LEFT
,
border
=
10
)
bottomPanel
.
SetSizer
(
boxSizer_bottom
)
pub
.
subscribe
(
self
.
showAVLog
,
"showLog"
)
return
bottomPanel
def
showAVLog
(
self
,
msg
):
self
.
logTextCtr
.
WriteText
(
msg
+
"
\n
"
)
#################################################
# 打开文件选择对话框
#################################################
...
...
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