基于dragonboard 410c的智能魔镜设计(4)——视频消息检索及自动播放
2017-01-05 11:00
603 查看
前面给大家介绍了如何自动的检索指定用户的文本消息,并且采用html模板方式在qt控件上自动循环的播放文本消息,但是在智能魔镜中我们还可以向指定用户推送视频消息,实时显示视频消息,这里进一步向大家介绍如何在基于dragonboard 410c的智能魔镜上实现视频消息的自动检索和播放。
与检索文本消息类似,在我们构建的智能魔镜数据库中的pushInfo表中保存了视频消息的路径,如果在该表中的字段infoType==1的时候,为视频消息,这时候在pushInfo表中的filePath中将会记录该视频的具体的地址,可以是云端也可以是本地的视频路径,都可以支持,同样在视频消息中,字段isTop和viewWight依然对其其作用,可以控制该视频的播放顺序和是否播放,如果isTop为1表示该视频将优先播放,如果多个视频消息的isTop为1那么将根据时间先后来排序,如果viewWight为0表示该消息已经播放,不再播放,根据上述规则,本文在数据库类中构建getTextMessageList(self,userID)函数来完成对指定用户的视频消息的检索,具体实现代码如下:
def getUserVideoMessageList(self,userID):
format="select pushID,filePath from pushInfo where ownerID==%u and isTop==1 and infoType==1 order by pushTime desc"
values=(userID)
querySQL1=format % values
self.cu.execute(querySQL1)
result1=self.cu.fetchone()
#print result
format="select pushID,filePath,pushTime from pushInfo where ownerID=%u and isTop==0 and infoType==1 order by pushTime desc"
values=(userID)
querySQL2=format % values
self.cu.execute(querySQL2)
result2=self.cu.fetchone()
if result1!=None and result2 != None:
#result=result1+result2
return result1+result2
elif result1==None and result2!=None:
#result=result2
return result2
elif result1!=None and result2 == None:
#resutl=result1
return result1
else:
#result==None
return None
上述代码中,将返回消息的ID:infoID,视频路径:filePath,以列表的形式返回,用户获取该列表后,就可以调用视频播放器加载视频列表并且进行播放,这里我们使用的是mplayer视频播放器来实现视频的播放,该播放器的具体使用方式和控制方式大家可以参考我之前写过的http://blog.csdn.net/andymfc/article/details/53811212博客中的内容,这里我们直接上代码,具体的播放如下:
#show message end get video message info
if videoMsgList!=None:
print("start play video msg")
i=0
for videoMsg in videoMsgList:
if i%2==0:
print(videoMsg)
self.push_video_userID.append(videoMsg)
else:
print(videoMsg)
self.videoPathList.append(videoMsg)
i=i+1
videocmd="mplayer -vo x11 -playlist "
for video in self.videoPathList:
videocmd=videocmd+' '+video
os.system(videocmd)
这段代码我们集成到文本消息显示代码段中,就可以在加载完文本消息后,自动的按照顺序的播放视频了,同时文本消息还可以在后面循环的播放,视频播放完成后会自动的退出。
到这里我们就已经实现了智能魔镜的消息显示和视频播放的核心功能,后续将向大家进一步介绍如何将之前介绍过的人脸识别技术整合进来,通过人脸检测得到用户的ID,然后根据ID 完成该用户的视频、文本消息的检索、显示和播放等。
与检索文本消息类似,在我们构建的智能魔镜数据库中的pushInfo表中保存了视频消息的路径,如果在该表中的字段infoType==1的时候,为视频消息,这时候在pushInfo表中的filePath中将会记录该视频的具体的地址,可以是云端也可以是本地的视频路径,都可以支持,同样在视频消息中,字段isTop和viewWight依然对其其作用,可以控制该视频的播放顺序和是否播放,如果isTop为1表示该视频将优先播放,如果多个视频消息的isTop为1那么将根据时间先后来排序,如果viewWight为0表示该消息已经播放,不再播放,根据上述规则,本文在数据库类中构建getTextMessageList(self,userID)函数来完成对指定用户的视频消息的检索,具体实现代码如下:
def getUserVideoMessageList(self,userID):
format="select pushID,filePath from pushInfo where ownerID==%u and isTop==1 and infoType==1 order by pushTime desc"
values=(userID)
querySQL1=format % values
self.cu.execute(querySQL1)
result1=self.cu.fetchone()
#print result
format="select pushID,filePath,pushTime from pushInfo where ownerID=%u and isTop==0 and infoType==1 order by pushTime desc"
values=(userID)
querySQL2=format % values
self.cu.execute(querySQL2)
result2=self.cu.fetchone()
if result1!=None and result2 != None:
#result=result1+result2
return result1+result2
elif result1==None and result2!=None:
#result=result2
return result2
elif result1!=None and result2 == None:
#resutl=result1
return result1
else:
#result==None
return None
上述代码中,将返回消息的ID:infoID,视频路径:filePath,以列表的形式返回,用户获取该列表后,就可以调用视频播放器加载视频列表并且进行播放,这里我们使用的是mplayer视频播放器来实现视频的播放,该播放器的具体使用方式和控制方式大家可以参考我之前写过的http://blog.csdn.net/andymfc/article/details/53811212博客中的内容,这里我们直接上代码,具体的播放如下:
#show message end get video message info
if videoMsgList!=None:
print("start play video msg")
i=0
for videoMsg in videoMsgList:
if i%2==0:
print(videoMsg)
self.push_video_userID.append(videoMsg)
else:
print(videoMsg)
self.videoPathList.append(videoMsg)
i=i+1
videocmd="mplayer -vo x11 -playlist "
for video in self.videoPathList:
videocmd=videocmd+' '+video
os.system(videocmd)
这段代码我们集成到文本消息显示代码段中,就可以在加载完文本消息后,自动的按照顺序的播放视频了,同时文本消息还可以在后面循环的播放,视频播放完成后会自动的退出。
到这里我们就已经实现了智能魔镜的消息显示和视频播放的核心功能,后续将向大家进一步介绍如何将之前介绍过的人脸识别技术整合进来,通过人脸检测得到用户的ID,然后根据ID 完成该用户的视频、文本消息的检索、显示和播放等。
相关文章推荐
- 基于dragonboard 410c的智能魔镜设计(3)——文本消息检索及自动显示
- 基于dragonboard 410c的智能魔镜设计(6)——人脸检测及身份识别启动模块封装
- 基于dragonboard 410c的智能魔镜设计(1)——整体方案设计
- 基于dragonboard 410c的智能魔镜设计(7)——UI原型设计
- 基于dragonboard 410c的智能魔镜设计(2)——数据库设计与实现
- 基于dragonboard 410c的智能魔镜设计(8)——UI的python脚本实现
- 基于dragonboard 410c的智能魔镜设计(5)——基于人脸的用户身份识别
- 基于dragonboard 410c的智能魔镜设计——硬件搭建
- 基于Dragonboard 410c设计的智能管家
- 基于DragonBoard 410c的家庭智能环保卫士——(9)数据库设计
- 基于Dragonboard 410c的家庭智能环保卫士——(2)方案设计
- 基于Dragonboard 410c的自动感应调色灯软件方案设计
- 基于DragonBoard 410c 开发板的智能物料仓库调控系统之zigbee模块简介
- 基于DragonBoard 410c的家庭智能环保卫士——(10)数据库python代码实现
- 基于DragonBoard 410c的家庭智能环保卫士——(13)融合多数据处理的运动控制
- 基于Dragonboard 410c 的自动感应调色灯(二)
- 在dragonboard 410c上使用mplayer播放视频
- 基于DragonBoard 410c的智能门铃系列三之系统功能分析
- 基于Dragonboard 410c的智能开关
- 基于DragonBoard 410c的家庭智能环保卫士——(8)室内栅格定位