Commit f6c46144 authored by liyuanhong's avatar liyuanhong

修复mac下开启音视频日志崩溃问题

parent 6bf4e020
...@@ -6,6 +6,8 @@ import time ...@@ -6,6 +6,8 @@ import time
import traceback import traceback
import requests import requests
import wx
from pubsub import pub
from lib.protocal.Protocal_1078 import Protocal_1078 from lib.protocal.Protocal_1078 import Protocal_1078
from lib.socket.ClientSocket import ClientSocket from lib.socket.ClientSocket import ClientSocket
...@@ -213,7 +215,9 @@ class StreamH264Flv(): ...@@ -213,7 +215,9 @@ class StreamH264Flv():
pkgs = self.protocal_1078.genPkgsByFrame() pkgs = self.protocal_1078.genPkgsByFrame()
for msg in pkgs: for msg in pkgs:
if self.isOpenVideoLog != 0: if self.isOpenVideoLog != 0:
print("发送视频消息:" + msg) # print("发送视频消息:" + msg)
msgTxt = "发送视频消息:" + msg
wx.CallAfter(pub.sendMessage, "showLog", msg=msgTxt)
try: try:
self.client.send(binascii.a2b_hex(msg)) self.client.send(binascii.a2b_hex(msg))
except: except:
...@@ -235,7 +239,9 @@ class StreamH264Flv(): ...@@ -235,7 +239,9 @@ class StreamH264Flv():
pkgs = self.protocal_1078.genAudioPkgsByFrame() pkgs = self.protocal_1078.genAudioPkgsByFrame()
for msg in pkgs: for msg in pkgs:
if self.isOpenAudioLog != 0: if self.isOpenAudioLog != 0:
print("发送音频消息:" + msg) # print("发送音频消息:" + msg)
msgTxt = "发送音频消息:" + msg
wx.CallAfter(pub.sendMessage, "showLog", msg=msgTxt)
self.client.send(binascii.a2b_hex(msg)) self.client.send(binascii.a2b_hex(msg))
time.sleep(self.sendDur) time.sleep(self.sendDur)
...@@ -359,7 +365,8 @@ if __name__ == "__main__": ...@@ -359,7 +365,8 @@ if __name__ == "__main__":
obj.setSendDur(0.007) obj.setSendDur(0.007)
obj.setIsSendAudio(1) obj.setIsSendAudio(1)
# obj.setMobile("013146201117") # obj.setMobile("013146201117")
obj.setMobile("142043390091") # obj.setMobile("142043390091")
obj.setMobile("013146200000")
obj.setChannel(1) obj.setChannel(1)
obj.setHost("10.100.11.125") obj.setHost("10.100.11.125")
# obj.setHost("video-test.vandyo.com") # obj.setHost("video-test.vandyo.com")
......
...@@ -11,7 +11,7 @@ from lib.protocal.Protocal_1078 import Protocal_1078 ...@@ -11,7 +11,7 @@ from lib.protocal.Protocal_1078 import Protocal_1078
from lib.socket.ClientSocket import ClientSocket from lib.socket.ClientSocket import ClientSocket
class StreamH264Flv(): class StreamH264Flv_bak():
def __init__(self): def __init__(self):
self.isFileHead = 0 # 读取文件的时候,是否是文件的开头 0:不是 1:是 self.isFileHead = 0 # 读取文件的时候,是否是文件的开头 0:不是 1:是
...@@ -131,22 +131,45 @@ class StreamH264Flv(): ...@@ -131,22 +131,45 @@ class StreamH264Flv():
AVtag = tag[30:] # 音视频 tag AVtag = tag[30:] # 音视频 tag
if self.multiPushStatus < 1: if self.multiPushStatus < 1:
avTimeStamp = self.getAVTimeStamp(tag) #获取时间戳 avTimeStamp = self.getAVTimeStamp(tag) #获取时间戳
timeStamp = avTimeStamp
if tagType == "09": if tagType == "09":
timeStamp = timeStamp + self.getCompositionTime(AVtag) avTimeStamp = avTimeStamp + self.getCompositionTime(AVtag)
timeStamp = avTimeStamp
else: else:
avTimeStamp = self.getAVTimeStamp(tag) + self.timeStampSeek # 获取时间戳 avTimeStamp = self.getAVTimeStamp(tag) + self.timeStampSeek # 获取时间戳
timeStamp = avTimeStamp
if tagType == "09": if tagType == "09":
timeStamp = timeStamp + self.getCompositionTime(AVtag) avTimeStamp = avTimeStamp + self.getCompositionTime(AVtag)
timeStamp = avTimeStamp
if doCount < 30: ####################################################################
frameMap[timeStamp] = AVtag 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 doCount = doCount + 1
data = data[(tagSize * 2 + 30):]
else: else:
frameMap[timeStamp] = AVtag 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
frameArr = sorted(frameMap.keys(),reverse = True) 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 avTimeStamp > 100:
if self.isGetPlayUrl == 0: if self.isGetPlayUrl == 0:
self.getPlayUrl(self.mobile,self.channel) self.getPlayUrl(self.mobile,self.channel)
...@@ -169,32 +192,6 @@ class StreamH264Flv(): ...@@ -169,32 +192,6 @@ class StreamH264Flv():
data = data[(tagSize * 2 + 30):] data = data[(tagSize * 2 + 30):]
else: else:
time.sleep(1) 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("已连网") self.pushStatusText.SetValue("已连网")
timeCur = self.getCurTime() timeCur = self.getCurTime()
self.multiPushStatus = self.multiPushStatus + 1 self.multiPushStatus = self.multiPushStatus + 1
...@@ -362,6 +359,18 @@ class StreamH264Flv(): ...@@ -362,6 +359,18 @@ class StreamH264Flv():
compositionTime = int(AVTag[4:10],16) compositionTime = int(AVTag[4:10],16)
return compositionTime 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,获取音频帧数据 # 根据AVtag,获取音频帧数据
#################################################### ####################################################
...@@ -395,16 +404,16 @@ class StreamH264Flv(): ...@@ -395,16 +404,16 @@ class StreamH264Flv():
if __name__ == "__main__": if __name__ == "__main__":
obj = StreamH264Flv() obj = StreamH264Flv_bak()
obj.setSendDur(0.003) obj.setSendDur(0.007)
obj.setIsSendAudio(1) obj.setIsSendAudio(1)
# obj.setMobile("013146201117") # obj.setMobile("013146201117")
obj.setMobile("142043390091") obj.setMobile("013146200000")
obj.setChannel(1) obj.setChannel(1)
obj.setHost("10.100.11.125") obj.setHost("10.100.11.125")
# obj.setHost("video-test.vandyo.com") # obj.setHost("video-test.vandyo.com")
obj.setPort(1078) obj.setPort(1078)
obj.setVideoPath("../../flv/aaa3.flv") obj.setVideoPath("../../flv/bbb3.flv")
obj.connectServer() obj.connectServer()
obj.readFlvAndSend() obj.readFlvAndSend()
......
...@@ -12,6 +12,7 @@ import subprocess ...@@ -12,6 +12,7 @@ import subprocess
import requests import requests
import wx import wx
import yaml import yaml
from pubsub import pub
from lib.service.StreamH264Flv import StreamH264Flv from lib.service.StreamH264Flv import StreamH264Flv
...@@ -178,8 +179,12 @@ class CameraArea(): ...@@ -178,8 +179,12 @@ class CameraArea():
boxSizer_bottom.Add(logArea,60,flag=wx.EXPAND | wx.ALL) boxSizer_bottom.Add(logArea,60,flag=wx.EXPAND | wx.ALL)
boxSizer_bottom.Add(ctrArea, 40, flag=wx.EXPAND | wx.LEFT,border=10) boxSizer_bottom.Add(ctrArea, 40, flag=wx.EXPAND | wx.LEFT,border=10)
bottomPanel.SetSizer(boxSizer_bottom) bottomPanel.SetSizer(boxSizer_bottom)
pub.subscribe(self.showAVLog, "showLog")
return bottomPanel return bottomPanel
def showAVLog(self,msg):
self.logTextCtr.WriteText(msg + "\n")
################################################# #################################################
# 打开文件选择对话框 # 打开文件选择对话框
################################################# #################################################
......
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