Ric*_*nop 9 python video udp ffmpeg video-streaming
嗯.我发现这看起来很有希望:
http://sourceforge.net/projects/mjpg-streamer/
好.我将尝试清楚地详细解释我想要做的事情.
我有一个带摄像头和wifi棒的小型人形机器人(这是机器人).机器人的wifi贴平均wifi传输速率为1769KB/s.机器人有500Mhz CPU和256MB RAM,因此它不足以进行任何严肃的计算(此外,机器人上已经运行了几个模块用于运动,视觉,声纳,语音等).
我有一台PC,我可以从中控制机器人.我想让机器人在房间里走动,看一下机器人在PC上看到的实时视频.
我已经有的工作了.机器人正在我想要他走路并用相机拍摄图像.图像通过UDP协议发送到我收到它们的PC(我通过将传入的图像保存在磁盘上来验证这一点).
相机返回YUV442色彩空间中640 x 480像素的图像.我发送有损压缩(JPEG)的图像,因为我试图在PC上获得最好的FPS.我正在使用PIL库对机器人进行JPEG压缩.
我的问题:
有人可以给我一些关于如何将传入的JPEG图像转换为实时视频流的想法吗?我知道我需要一些视频编码器.您推荐哪种视频编码器?FFMPEG还是其他什么?我对视频流非常陌生,所以我想知道什么是最适合这项任务的.我更喜欢用Python来编写这个,所以我更喜欢一些拥有Python API的视频编码器或库.但我想如果库有一些好的命令行API,它不一定是在Python中.
我可以从中获得最好的FPS是什么?鉴于1769KB/s的平均wifi传输速率和图像的尺寸?我应该使用与JPEG不同的压缩吗?
我很乐意看到任何代码示例.链接到解释如何做到这一点的文章也没关系.
一些代码示例.以下是我将JPEG图像从机器人发送到PC(缩短的简化代码段)的方法.这在机器人上运行:
# lots of code here
UDPSock = socket(AF_INET,SOCK_DGRAM)
while 1:
image = camProxy.getImageLocal(nameId)
size = (image[0], image[1])
data = image[6]
im = Image.fromstring("YCbCr", size, data)
s = StringIO.StringIO()
im.save(s, "JPEG")
UDPSock.sendto(s.getvalue(), addr)
camProxy.releaseImage(nameId)
UDPSock.close()
# lots of code here
Run Code Online (Sandbox Code Playgroud)
这是我在PC上接收图像的方式.这在PC上运行:
# lots of code here
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
while 1:
data, addr = UDPSock.recvfrom(buf)
# here I need to create a stream from the data
# which contains JPEG image
UDPSock.close()
# lots of code here
Run Code Online (Sandbox Code Playgroud)
检查你的第一个问题。尽管这里的解决方案使用非流式图片集。这可能有帮助。该示例使用 pyMedia。
有些符合你想要的。
如果您需要编辑二进制流:
| 归档时间: |
|
| 查看次数: |
13387 次 |
| 最近记录: |