【问题标题】:Stream video from Raspberry pi camera to Android app将视频从 Raspberry pi 相机流式传输到 Android 应用程序
【发布时间】: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 上运行。

在我看来,我有两种方法。

  1. 在 python 上使用不同的方式来流式传输视频输出。
  2. 以某种方式处理协议 tcp/h264(可能使用套接字并独立地将流字节解析为视频)。有可能:https://github.com/ShawnBaker/RPiCameraViewer 但我正在寻找更好(不是低级)的解决方案。

【问题讨论】:

    标签: android python camera raspberry-pi


    【解决方案1】:

    您可以轻松地从 python 流式传输它,只需使用

    import subprocess
    subprocess.Popen("raspivid -o - -t 99999 |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8000}' :demux=h264", shell=True)
    

    这将在不同的线程中启动它,因此它不会阻塞您的程序/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2018-08-05
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多