Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
streamPushPressure
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
李远洪
streamPushPressure
Commits
0b5d2c53
Commit
0b5d2c53
authored
Dec 28, 2020
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成了flv视频的压力测试脚本
parent
c6a518d5
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
191 additions
and
17 deletions
+191
-17
lib/service/StreamH264.py
lib/service/StreamH264.py
+3
-1
lib/service/StreamH264Flv.py
lib/service/StreamH264Flv.py
+13
-6
lib/testCase/FlvPressureTest.py
lib/testCase/FlvPressureTest.py
+118
-0
lib/testCase/H264PresureTest.py
lib/testCase/H264PresureTest.py
+16
-7
run.py
run.py
+41
-3
ui/__init__.py
ui/__init__.py
+0
-0
No files found.
lib/service/StreamH264.py
View file @
0b5d2c53
...
@@ -74,6 +74,8 @@ class StreamH264():
...
@@ -74,6 +74,8 @@ class StreamH264():
self
.
host
=
data
self
.
host
=
data
def
setPort
(
self
,
data
):
def
setPort
(
self
,
data
):
self
.
port
=
data
self
.
port
=
data
def
setIsLoop
(
self
,
data
):
self
.
isLoop
=
data
####################################################
####################################################
# 设置视频帧率
# 设置视频帧率
...
...
lib/service/StreamH264Flv.py
View file @
0b5d2c53
...
@@ -20,11 +20,12 @@ class StreamH264Flv():
...
@@ -20,11 +20,12 @@ class StreamH264Flv():
self
.
channel
=
1
# 频道号
self
.
channel
=
1
# 频道号
self
.
isSendAudio
=
1
# 是否发送音频0:不发送 1:发送
self
.
isSendAudio
=
1
# 是否发送音频0:不发送 1:发送
self
.
host
=
"10.100.11.125"
# self.host = "10.100.11.125" # 开发环境
# self.host = "10.16.12.249"
# self.host = "10.16.12.249"
# self.host = "10.100.12.3"
self
.
host
=
"10.100.12.3"
# 测试环境
# self.host = "localhost"
# self.host = "localhost"
self
.
port
=
1078
self
.
port
=
1078
self
.
videoPath
=
"../../flv/bbb3.flv"
# 要推流的视频路劲
def
setMobile
(
self
,
data
):
def
setMobile
(
self
,
data
):
self
.
mobile
=
data
self
.
mobile
=
data
...
@@ -40,6 +41,8 @@ class StreamH264Flv():
...
@@ -40,6 +41,8 @@ class StreamH264Flv():
self
.
port
=
data
self
.
port
=
data
def
setSendDur
(
self
,
data
):
def
setSendDur
(
self
,
data
):
self
.
sendDur
=
data
self
.
sendDur
=
data
def
setVideoPath
(
self
,
data
):
self
.
videoPath
=
data
####################################################
####################################################
...
@@ -57,8 +60,8 @@ class StreamH264Flv():
...
@@ -57,8 +60,8 @@ class StreamH264Flv():
####################################################
####################################################
# 读取flv文件,并发送 (h264编码,并且音频为aac编码格式)
# 读取flv文件,并发送 (h264编码,并且音频为aac编码格式)
####################################################
####################################################
def
readFlvAndSend
(
self
,
fileName
):
def
readFlvAndSend
(
self
):
with
open
(
fileName
,
'rb'
)
as
fi
:
with
open
(
self
.
videoPath
,
'rb'
)
as
fi
:
con
=
fi
.
read
(
self
.
readSize
)
con
=
fi
.
read
(
self
.
readSize
)
data
=
con
.
hex
()
data
=
con
.
hex
()
if
self
.
isFileHead
==
0
:
if
self
.
isFileHead
==
0
:
...
@@ -95,6 +98,7 @@ class StreamH264Flv():
...
@@ -95,6 +98,7 @@ class StreamH264Flv():
else
:
else
:
AVdata
=
AVtag
AVdata
=
AVtag
data
=
data
[(
tagSize
*
2
+
30
):]
data
=
data
[(
tagSize
*
2
+
30
):]
self
.
client
.
close
()
####################################################
####################################################
# 发送视频帧
# 发送视频帧
...
@@ -236,10 +240,13 @@ class StreamH264Flv():
...
@@ -236,10 +240,13 @@ class StreamH264Flv():
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
obj
=
StreamH264Flv
()
obj
=
StreamH264Flv
()
obj
.
setSendDur
(
0.00
8
)
obj
.
setSendDur
(
0.00
3
)
obj
.
setIsSendAudio
(
1
)
obj
.
setIsSendAudio
(
1
)
obj
.
setMobile
(
"013146201117"
)
obj
.
setMobile
(
"013146201117"
)
obj
.
setChannel
(
1
)
obj
.
setChannel
(
1
)
obj
.
setHost
(
"10.100.12.3"
)
obj
.
setPort
(
1078
)
obj
.
setVideoPath
(
"../../flv/bbb3.flv"
)
obj
.
connectServer
()
obj
.
connectServer
()
obj
.
readFlvAndSend
(
"../../flv/yyy.flv"
)
obj
.
readFlvAndSend
()
lib/testCase/FlvPressureTest.py
0 → 100644
View file @
0b5d2c53
#coding: utf-8
import
threading
import
time
import
cv2
from
lib.service.StreamH264Flv
import
StreamH264Flv
class
FlvPressureTest
():
def
__init__
(
self
):
self
.
mobileStart
=
100000000000
# 开始手机号
self
.
channel
=
1
# 频道号
self
.
terNum
=
2
# 要压力测试的线程数
self
.
flvPath
=
"../../flv/aaa3.flv"
# 要推流的视频路劲
self
.
host
=
"10.100.12.3"
self
.
port
=
1078
self
.
sendDur
=
0.005
# socket消息发送间隔
self
.
isShowFrame
=
0
# 拉流是否展示画面 0:不展示 1:展示
self
.
threadInfo
=
{}
# 存放线程集
self
.
threadInfo
[
"threadObj"
]
=
{}
self
.
threadInfo
[
"sucessT"
]
=
{}
self
.
threadInfo
[
"failT"
]
=
{}
self
.
threadInfoPull
=
{}
# 存放线程集(拉流线程)
self
.
threadInfoPull
[
"threadObj"
]
=
{}
self
.
threadInfoPull
[
"sucessT"
]
=
{}
self
.
threadInfoPull
[
"failT"
]
=
{}
self
.
isOpenPullStream
=
1
# 是否开启视频拉流 0:不 1:是
self
.
pullUrl
=
"http://10.100.11.125:8085/live?port=1985&app=vandyo&stream="
def
setTerNum
(
self
,
data
):
self
.
terNum
=
data
def
setMobileStart
(
self
,
data
=
"10000000000"
):
self
.
mobileStart
=
data
def
setChannel
(
self
,
data
):
self
.
channel
=
data
def
setFlvPath
(
self
,
data
):
self
.
flvPath
=
data
def
setHost
(
self
,
data
):
self
.
host
=
data
def
setPort
(
self
,
data
):
self
.
port
=
data
def
setIsOpenPullStream
(
self
,
data
):
self
.
isOpenPullStream
=
data
def
setSendDur
(
self
,
data
):
self
.
sendDur
=
data
def
setIsShowFrame
(
self
,
data
):
self
.
isShowFrame
=
data
def
testServicePush
(
self
,
cloudMirror
):
cloudMirror
.
readFlvAndSend
()
def
testServicePull
(
self
,
mobile
):
pullUrl
=
self
.
pullUrl
+
mobile
+
"-"
+
str
(
self
.
channel
)
cap
=
cv2
.
VideoCapture
(
pullUrl
)
while
(
cap
.
isOpened
()):
ret
,
frame
=
cap
.
read
()
if
ret
==
False
:
break
if
self
.
isShowFrame
==
1
:
cv2
.
imshow
(
"video"
,
frame
)
if
cv2
.
waitKey
(
1
)
&
0xFF
==
ord
(
'q'
):
break
print
(
"拉流结束"
)
cap
.
release
()
cv2
.
destroyAllWindows
()
def
runPush
(
self
,
mobile
,
threadId
):
cloudMirror
=
StreamH264Flv
()
cloudMirror
.
setHost
(
self
.
host
)
cloudMirror
.
setPort
(
self
.
port
)
cloudMirror
.
connectServer
()
cloudMirror
.
setVideoPath
(
self
.
flvPath
)
cloudMirror
.
setMobile
(
mobile
)
cloudMirror
.
setChannel
(
self
.
channel
)
cloudMirror
.
setSendDur
(
self
.
sendDur
)
conThread
=
threading
.
Thread
(
target
=
self
.
testServicePush
,
args
=
(
cloudMirror
,))
self
.
threadInfo
[
"threadObj"
][
threadId
]
=
conThread
conThread
.
start
()
print
(
threadId
+
"启动了:"
+
mobile
+
"-"
+
str
(
self
.
channel
))
def
runPull
(
self
,
mobile
,
threadId
):
pullThread
=
threading
.
Thread
(
target
=
self
.
testServicePull
,
args
=
(
mobile
,))
self
.
threadInfoPull
[
"threadObj"
][
threadId
]
=
pullThread
pullThread
.
start
()
print
(
threadId
+
"启动了:"
+
mobile
+
"-"
+
str
(
self
.
channel
))
def
start
(
self
):
for
i
in
range
(
0
,
self
.
terNum
):
mobile
=
self
.
mobileStart
+
i
mobile
=
"0"
+
str
(
mobile
)
threadId
=
"threadId__"
+
str
(
i
)
self
.
runPush
(
mobile
,
threadId
)
time
.
sleep
(
0.01
)
if
self
.
isOpenPullStream
==
1
:
for
j
in
range
(
0
,
self
.
terNum
):
mobile
=
self
.
mobileStart
+
j
mobile
=
"0"
+
str
(
mobile
)
threadPullId
=
"threadPullId__"
+
str
(
j
)
self
.
runPull
(
mobile
,
threadPullId
)
time
.
sleep
(
0.01
)
if
__name__
==
"__main__"
:
test
=
FlvPressureTest
()
test
.
setHost
(
"10.100.12.3"
)
test
.
setPort
(
1078
)
test
.
setMobileStart
(
10000000000
)
test
.
setChannel
(
1
)
test
.
setTerNum
(
2
)
test
.
setIsOpenPullStream
(
1
)
# 设置是否开启拉流
test
.
setIsShowFrame
(
1
)
# 拉流是否显示预览画面
test
.
setSendDur
(
0.001
)
test
.
setFlvPath
(
"../../flv/aaa3.flv"
)
test
.
start
()
\ No newline at end of file
lib/testCase/H264PresureTest.py
View file @
0b5d2c53
...
@@ -3,10 +3,11 @@ import threading
...
@@ -3,10 +3,11 @@ import threading
import
time
import
time
import
cv2
import
cv2
from
lib.service.StreamH264
import
StreamH264
from
lib.service.StreamH264
import
StreamH264
'''
使用H264视频文件 和aac音频文件作为推流的压力测试
'''
class
H264PresureTest
():
class
H264PresureTest
():
def
__init__
(
self
):
def
__init__
(
self
):
...
@@ -17,6 +18,8 @@ class H264PresureTest():
...
@@ -17,6 +18,8 @@ class H264PresureTest():
self
.
audioPath
=
"../../h264/bbb3.aac"
# 要推流的音频路劲
self
.
audioPath
=
"../../h264/bbb3.aac"
# 要推流的音频路劲
self
.
host
=
"10.100.12.3"
self
.
host
=
"10.100.12.3"
self
.
port
=
1078
self
.
port
=
1078
self
.
sendDur
=
0.001
self
.
isShowFrame
=
0
# 拉流是否展示画面 0:不展示 1:展示
self
.
threadInfo
=
{}
# 存放线程集
self
.
threadInfo
=
{}
# 存放线程集
self
.
threadInfo
[
"threadObj"
]
=
{}
self
.
threadInfo
[
"threadObj"
]
=
{}
...
@@ -47,6 +50,10 @@ class H264PresureTest():
...
@@ -47,6 +50,10 @@ class H264PresureTest():
self
.
port
=
data
self
.
port
=
data
def
setIsOpenPullStream
(
self
,
data
):
def
setIsOpenPullStream
(
self
,
data
):
self
.
isOpenPullStream
=
data
self
.
isOpenPullStream
=
data
def
setSendDur
(
self
,
data
):
self
.
sendDur
=
data
def
setIsShowFrame
(
self
,
data
):
self
.
isShowFrame
=
data
def
testServicePush
(
self
,
cloudMirror
):
def
testServicePush
(
self
,
cloudMirror
):
...
@@ -59,6 +66,7 @@ class H264PresureTest():
...
@@ -59,6 +66,7 @@ class H264PresureTest():
ret
,
frame
=
cap
.
read
()
ret
,
frame
=
cap
.
read
()
if
ret
==
False
:
if
ret
==
False
:
break
break
if
self
.
isShowFrame
==
1
:
cv2
.
imshow
(
"video"
,
frame
)
cv2
.
imshow
(
"video"
,
frame
)
if
cv2
.
waitKey
(
1
)
&
0xFF
==
ord
(
'q'
):
if
cv2
.
waitKey
(
1
)
&
0xFF
==
ord
(
'q'
):
break
break
...
@@ -70,11 +78,10 @@ class H264PresureTest():
...
@@ -70,11 +78,10 @@ class H264PresureTest():
cloudMirror
=
StreamH264
()
cloudMirror
=
StreamH264
()
cloudMirror
.
setHost
(
self
.
host
)
cloudMirror
.
setHost
(
self
.
host
)
cloudMirror
.
setPort
(
self
.
port
)
cloudMirror
.
setPort
(
self
.
port
)
cloudMirror
.
setSendDur
(
0
)
cloudMirror
.
setSendDur
(
self
.
sendDur
)
cloudMirror
.
connectServer
()
cloudMirror
.
connectServer
()
cloudMirror
.
setFPSVideo
(
30
)
cloudMirror
.
setFPSVideo
(
30
)
cloudMirror
.
setFPSAudio
(
47
)
cloudMirror
.
setFPSAudio
(
47
)
cloudMirror
.
setSendDur
(
0
)
cloudMirror
.
setVideoPath
(
self
.
videoPath
)
cloudMirror
.
setVideoPath
(
self
.
videoPath
)
cloudMirror
.
setAudioPath
(
self
.
audioPath
)
cloudMirror
.
setAudioPath
(
self
.
audioPath
)
cloudMirror
.
setMobile
(
mobile
)
cloudMirror
.
setMobile
(
mobile
)
...
@@ -114,8 +121,10 @@ if __name__ == "__main__":
...
@@ -114,8 +121,10 @@ if __name__ == "__main__":
test
.
setPort
(
1078
)
test
.
setPort
(
1078
)
test
.
setMobileStart
(
10000000000
)
test
.
setMobileStart
(
10000000000
)
test
.
setChannel
(
1
)
test
.
setChannel
(
1
)
test
.
setTerNum
(
1
)
test
.
setTerNum
(
10
)
test
.
setIsOpenPullStream
(
1
)
# 设置是否开启拉流
test
.
setSendDur
(
0.001
)
test
.
setIsOpenPullStream
(
0
)
# 设置是否开启拉流
test
.
setIsShowFrame
(
0
)
test
.
setVideoPath
(
"../../h264/bbb3.h264"
)
test
.
setVideoPath
(
"../../h264/bbb3.h264"
)
test
.
setAudioPath
(
"../../aac/bbb3.aac"
)
test
.
setAudioPath
(
"../../aac/bbb3.aac"
)
test
.
start
()
test
.
start
()
\ No newline at end of file
run.py
View file @
0b5d2c53
#coding: utf-8
#coding: utf-8
from
lib.service.StreamH264
import
StreamH264
from
lib.testCase.FlvPressureTest
import
FlvPressureTest
###########################################
# 推流h264 和 aac 文件压力测试
###########################################
from
lib.testCase.H264PresureTest
import
H264PresureTest
def
h264FilePushTest
():
test
=
H264PresureTest
()
test
.
setHost
(
"10.100.12.3"
)
test
.
setPort
(
1078
)
test
.
setMobileStart
(
10000000000
)
test
.
setChannel
(
1
)
test
.
setTerNum
(
10
)
test
.
setSendDur
(
0.001
)
test
.
setIsOpenPullStream
(
0
)
# 设置是否开启拉流
test
.
setIsShowFrame
(
0
)
test
.
setVideoPath
(
"h264/bbb3.h264"
)
test
.
setAudioPath
(
"aac/bbb3.aac"
)
test
.
start
()
###########################################
# 推流flv文件压力测试
###########################################
def
flvFilePushTest
():
test
=
FlvPressureTest
()
test
.
setHost
(
"10.100.12.3"
)
test
.
setPort
(
1078
)
test
.
setMobileStart
(
10000000000
)
test
.
setChannel
(
1
)
test
.
setTerNum
(
10
)
test
.
setIsOpenPullStream
(
0
)
# 设置是否开启拉流
test
.
setIsShowFrame
(
1
)
# 拉流是否显示预览画面
test
.
setSendDur
(
0.001
)
test
.
setFlvPath
(
"flv/aaa3.flv"
)
test
.
start
()
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
StreamH264
()
.
readStreamFromFileAndSend
(
"h264/aaa2.264"
)
flvFilePushTest
(
)
#
StreamH264().readTest("h264/aaa2.264"
)
#
h264FilePushTest(
)
ui/__init__.py
0 → 100644
View file @
0b5d2c53
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