【问题标题】:Play MJPEG stream to v4l2loopback device将 MJPEG 流播放到 v4l2loopback 设备
【发布时间】:2020-07-27 23:43:42
【问题描述】:

我有一个带 V1 摄像头的 RaspberryPi。

我想将它用作 Zoom、Teams 和其他虚拟会议的摄像头。

我使用名为“Motion”的应用程序通过 http 传输 RaspberryPi 流式运动 JPEG。

我在我的 linux 笔记本电脑上创建了一个 v4l2 虚拟设备作为虚拟相机。

但是,我无法使用简单的命令让 mjpeg 流播放到 v4l2 虚拟设备:

ffmpeg -i "http://milan.local:8081" -map 0:v -f v4l2 /dev/video4

结果是:

Input #0, mpjpeg, from 'http://milan.local:8081':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))
Press [q] to stop, [?] for help
[v4l2 @ 0x55a04567bbe0] Unknown V4L2 pixel format equivalent for yuvj420p
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --

我的ffmpeg 命令缺少哪些选项?

【问题讨论】:

    标签: ffmpeg v4l2


    【解决方案1】:

    添加-vf format=yuv420p-vf format=yuyv422 输出选项:

    ffmpeg  -i "http://milan.local:8081" -vf format=yuv420p -f v4l2 /dev/video4
    

    【讨论】:

    • 成功了!为什么这行得通?为什么它只以 1 FPS 的速度通过?
    • @ahoffer V4L2 输出仅支持某些像素格式。通常 ffmpeg 会自动转换为可接受的像素格式。我不知道为什么 V4L2 输出没有,所以现在必须手动完成。我不知道为什么它以 1 FPS 的速度通过。似乎是一个完全不同的问题。考虑提出一个新问题,显示您的命令并提供完整的输出。
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2011-03-14
    相关资源
    最近更新 更多