【发布时间】:2018-01-28 16:07:27
【问题描述】:
我目前正在使用 Raspberry pi 和移动设备 (Android) 编写一个项目。 我无法将数据从 Camera Rpi 发送到 Android 应用程序。
我在 python 上使用 Picamera 库:https://picamera.readthedocs.io/en/release-1.13/recipes1.html#recording-to-a-network-stream。
我在 Rpi 上的实际代码如下所示:
import socket
import time
import picamera
camera = picamera.PiCamera()
camera.resolution = (640, 480)
camera.framerate = 24
server_socket = socket.socket()
server_socket.bind(('0.0.0.0', 8000))
server_socket.listen(0)
# Accept a single connection and make a file-like object out of it
connection = server_socket.accept()[0].makefile('wb')
try:
camera.start_recording(connection, format='h264')
camera.wait_recording(60)
camera.stop_recording()
finally:
connection.close()
server_socket.close()
要接收流,我们可以使用: tcp/h264://x.x.x.x:8000 。当我使用 vlc 时,它可以在 PC 上运行。
在 Android 上我尝试使用 VideoView 或 ExoPlayer,但问题在于 URI,因为 android 无法解析 tcp/h264 协议。
当我尝试使用 vlc 进行流式传输时:
raspivid -o - -t 99999 |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8000}' :demux=h264
如果我传递带有前缀 http:// 的 url 但不是来自我在 python 上的程序,它可以在 Android 上运行。
在我看来,我有两种方法。
- 在 python 上使用不同的方式来流式传输视频输出。
- 以某种方式处理协议 tcp/h264(可能使用套接字并独立地将流字节解析为视频)。有可能:https://github.com/ShawnBaker/RPiCameraViewer 但我正在寻找更好(不是低级)的解决方案。
【问题讨论】:
标签: android python camera raspberry-pi