Commit 0b5d2c53 authored by liyuanhong's avatar liyuanhong

完成了flv视频的压力测试脚本

parent c6a518d5
......@@ -74,6 +74,8 @@ class StreamH264():
self.host = data
def setPort(self,data):
self.port = data
def setIsLoop(self,data):
self.isLoop = data
####################################################
# 设置视频帧率
......
......@@ -20,11 +20,12 @@ class StreamH264Flv():
self.channel = 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.100.12.3"
self.host = "10.100.12.3" # 测试环境
# self.host = "localhost"
self.port = 1078
self.videoPath = "../../flv/bbb3.flv" # 要推流的视频路劲
def setMobile(self,data):
self.mobile = data
......@@ -40,6 +41,8 @@ class StreamH264Flv():
self.port = data
def setSendDur(self,data):
self.sendDur = data
def setVideoPath(self,data):
self.videoPath = data
####################################################
......@@ -57,8 +60,8 @@ class StreamH264Flv():
####################################################
# 读取flv文件,并发送 (h264编码,并且音频为aac编码格式)
####################################################
def readFlvAndSend(self,fileName):
with open(fileName, 'rb') as fi:
def readFlvAndSend(self):
with open(self.videoPath, 'rb') as fi:
con = fi.read(self.readSize)
data = con.hex()
if self.isFileHead == 0:
......@@ -95,6 +98,7 @@ class StreamH264Flv():
else:
AVdata = AVtag
data = data[(tagSize * 2 + 30):]
self.client.close()
####################################################
# 发送视频帧
......@@ -236,10 +240,13 @@ class StreamH264Flv():
if __name__ == "__main__":
obj = StreamH264Flv()
obj.setSendDur(0.008)
obj.setSendDur(0.003)
obj.setIsSendAudio(1)
obj.setMobile("013146201117")
obj.setChannel(1)
obj.setHost("10.100.12.3")
obj.setPort(1078)
obj.setVideoPath("../../flv/bbb3.flv")
obj.connectServer()
obj.readFlvAndSend("../../flv/yyy.flv")
obj.readFlvAndSend()
#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
......@@ -3,10 +3,11 @@ import threading
import time
import cv2
from lib.service.StreamH264 import StreamH264
'''
使用H264视频文件 和aac音频文件作为推流的压力测试
'''
class H264PresureTest():
def __init__(self):
......@@ -17,6 +18,8 @@ class H264PresureTest():
self.audioPath = "../../h264/bbb3.aac" # 要推流的音频路劲
self.host = "10.100.12.3"
self.port = 1078
self.sendDur = 0.001
self.isShowFrame = 0 # 拉流是否展示画面 0:不展示 1:展示
self.threadInfo = {} # 存放线程集
self.threadInfo["threadObj"] = {}
......@@ -47,6 +50,10 @@ class H264PresureTest():
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):
......@@ -59,6 +66,7 @@ class H264PresureTest():
ret, frame = cap.read()
if ret == False:
break
if self.isShowFrame == 1:
cv2.imshow("video", frame)
if cv2.waitKey(1)&0xFF==ord('q'):
break
......@@ -70,11 +78,10 @@ class H264PresureTest():
cloudMirror = StreamH264()
cloudMirror.setHost(self.host)
cloudMirror.setPort(self.port)
cloudMirror.setSendDur(0)
cloudMirror.setSendDur(self.sendDur)
cloudMirror.connectServer()
cloudMirror.setFPSVideo(30)
cloudMirror.setFPSAudio(47)
cloudMirror.setSendDur(0)
cloudMirror.setVideoPath(self.videoPath)
cloudMirror.setAudioPath(self.audioPath)
cloudMirror.setMobile(mobile)
......@@ -114,8 +121,10 @@ if __name__ == "__main__":
test.setPort(1078)
test.setMobileStart(10000000000)
test.setChannel(1)
test.setTerNum(1)
test.setIsOpenPullStream(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()
\ No newline at end of file
#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__":
StreamH264().readStreamFromFileAndSend("h264/aaa2.264")
# StreamH264().readTest("h264/aaa2.264")
flvFilePushTest()
# h264FilePushTest()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment