mpromonet / v4l2rtspserver

RTSP Server for V4L2 device capture supporting HEVC/H264/JPEG/VP8/VP9
The Unlicense
1.86k stars 428 forks source link

Cannot open RTSP Server creating with v4l2loopback #188

Closed nhanbka closed 4 years ago

nhanbka commented 4 years ago

Hi, I got problem with creating rtsp stream with from v4l2loopback (/dev/video1). I have successfully creating it with /dev/video0, but then when I preprocess it with opencv and then write to /dev/video1 in YUYV format, I can open this with ffplay /dev/video1. However, I cannot open the rtsp stream eventhough I can run your v4l2rtspserver without warning or bugs.

Here is my script:

sudo ./v4l2rtspserver -vvv -p 22082 /dev/video1 -fYUYV -F 25 -B

and here is the result:

[NOTICE] /home/tuyenng/v4l2rtspserver/src/main.cpp:564
        Version: 0.2.0-6-g3542b6f live555 version:2020.04.24
[NOTICE] /home/tuyenng/v4l2rtspserver/src/main.cpp:608
        Create V4L2 Source.../dev/video1
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:124
        driver:v4l2 loopback capabilities:85208003 mandatory:4000001
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:126
        /dev/video1 support output
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:127
        /dev/video1 support capture
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:129
        /dev/video1 support read/write
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:130
        /dev/video1 support streaming
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:62
        /dev/video1:YUYV size:640x480 bufferSize:614400
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:206
        /dev/video1:YUYV size:640x480 bufferSize:614400
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:62
        /dev/video1:YUYV size:640x480 bufferSize:614400
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:227
        fps:1/25
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:228
        nbBuffer:8
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:49
        Device /dev/video1
[NOTICE] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:73
        Device /dev/video1 nb buffer:8
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:0 size:614400 offset:0
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:1 size:614400 offset:614400
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:2 size:614400 offset:1228800
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:3 size:614400 offset:1843200
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:4 size:614400 offset:2457600
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:5 size:614400 offset:3072000
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:6 size:614400 offset:3686400
[INFO] /home/tuyenng/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
        Device /dev/video1 buffer idx:7 size:614400 offset:4300800
[NOTICE] /home/tuyenng/v4l2rtspserver/src/main.cpp:631
        Create Source .../dev/video1
[NOTICE] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:93
        begin thread
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:105
        waitingFrame    delay:1ms
[NOTICE] /home/tuyenng/v4l2rtspserver/src/main.cpp:150
        Play this stream using the URL "rtsp://192.168.1.233:8554/unicast"
[INFO] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:29
        intv_sec:1589034938 fps:1 bandwidth:4800kbps
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:216
        getNextFrame    timestamp:1589034938.271419     size:614400     diff:1ms
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:245
        queueFrame      timestamp:1589034938.271419     size:614400     diff:1ms
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:105
        waitingFrame    delay:541ms
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:216
        getNextFrame    timestamp:1589034938.815342     size:614400     diff:0ms
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:245
        queueFrame      timestamp:1589034938.815342     size:614400     diff:0ms
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:105
        waitingFrame    delay:583ms
[INFO] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:29
        intv_sec:1589034941 fps:2 bandwidth:9600kbps
[DEBUG] /home/tuyenng/v4l2rtspserver/src/DeviceSource.cpp:216
        getNextFrame    timestamp:1589034941.402086     size:614400     diff:0ms

I try to catch it with vlc with the url: rtsp://192.168.1.233:22082/unicast but fail. So I do not have any ideas with this issue whether your code does not support with v4l2loopback or else. Thank you!

mpromonet commented 4 years ago

Hi,

The format video/RAW is really draft, and I don't think VLC support it.

In my last tests, I remember ffplay can connect it but with colors/size problems (it needs some conversion between V4L2 YUYV and RFC4175.

It is better to use a compress format like H264/HEVC or JPEG.

Best Regards, Michel.