Commit f6c46144 authored by liyuanhong's avatar liyuanhong

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

parent 6bf4e020
......@@ -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")
......
......@@ -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] = AVtag
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.003)
obj = StreamH264Flv_bak()
obj.setSendDur(0.007)
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/aaa3.flv")
obj.setVideoPath("../../flv/bbb3.flv")
obj.connectServer()
obj.readFlvAndSend()
......
......@@ -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")
#################################################
# 打开文件选择对话框
#################################################
......
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