Running a one-way videocall on a Raspberry Pi with Pi Camera

Šimon Čecháček
Wed, Apr 12, 2023 4:27 PM

Hello,

I am working on my bachelor thesis: VOIP Video Doorbell with one-way
video.

I am fighting with this a issue for a lot of hours. The issue is that I
am unable to make videocalls via SIP work. I sucessfully connected audio
calls, and even other requested features like "unlocking doors"
(switching relay on GPIO when right DTMG code is entered) works.

Just the video is not working.

For development, I am using Raspberry Pi 4 as it compiles faster the Pi
Zero 2W, but after sucesfull setup, I will recompile the PJSIP (version
2.10) and make everything work on Pi Zero 2W.

My other HW is a Respeaker 2Mics HAT and Pi Camera v1.3 (provided by my
university).

I tried nearly everything I was able to with my programming skills (I
study IT security and IT law, not programming).

  1. I checked that codecs are supported on both sides (using MicroSIP on
    Windows as the other side)
  2. I contected the SIP provider (odorik.cz) and checked my setup is
    compatible with videocalls - their team was helpful and confirmed my
    calls are not being blocked on their side.
  3. I tried numerous options how to compile the PJSIP library with or
    without FFMPEG, with V4L2 support. And I read hundreds of posts talking
    about video support, so I can make it work by myself.
  4. I even tried local calls without any SIP providers (Directly calling
    to an IP, as both devices are in the same local network)
  5. Unfortunately, I was unable to make it work, so I decided to share my
    code and logs, so anybode that understand the PJSIP library and python
    better than me can help me get out of this hell of hunders of hours in
    this issue.

here is my main file Doorbelly.py that controls everything:
https://paste.brcb.eu/yrygofukud.md

Then here is call.py file that controls the call itself:
https://paste.brcb.eu/gywequhaqu.rb

And just linking other files like lock.py used for unlocking the door:
https://pastebin.com/nB3hGz4s

Here is my config loaded by the doorbell.py and used for controlling the
call destination and lock password: https://paste.brcb.eu/majucypygo.ini

And finally, here is my log of the call: https://pastebin.com/fFMN2HnG

What I understand from this is that it tries to open an RX stream and
its window, but it failes as there is no screen attached to the RPi (and
it will not be in the project)

So my idea was to retry opening a new video stream with just outgoing
direction once the call is estabilished. But that fails also.

I am sorry for such a long report and I thank you in advance for helping
me with this issue. I am not a dead end and have no idea what to try
next.

Thank you!

kind regards
Simon Cechacek

Hello, I am working on my bachelor thesis: VOIP Video Doorbell with one-way video. I am fighting with this a issue for a lot of hours. The issue is that I am unable to make videocalls via SIP work. I sucessfully connected audio calls, and even other requested features like "unlocking doors" (switching relay on GPIO when right DTMG code is entered) works. Just the video is not working. For development, I am using Raspberry Pi 4 as it compiles faster the Pi Zero 2W, but after sucesfull setup, I will recompile the PJSIP (version 2.10) and make everything work on Pi Zero 2W. My other HW is a Respeaker 2Mics HAT and Pi Camera v1.3 (provided by my university). I tried nearly everything I was able to with my programming skills (I study IT security and IT law, not programming). 1. I checked that codecs are supported on both sides (using MicroSIP on Windows as the other side) 2. I contected the SIP provider (odorik.cz) and checked my setup is compatible with videocalls - their team was helpful and confirmed my calls are not being blocked on their side. 3. I tried numerous options how to compile the PJSIP library with or without FFMPEG, with V4L2 support. And I read hundreds of posts talking about video support, so I can make it work by myself. 4. I even tried local calls without any SIP providers (Directly calling to an IP, as both devices are in the same local network) 5. Unfortunately, I was unable to make it work, so I decided to share my code and logs, so anybode that understand the PJSIP library and python better than me can help me get out of this hell of hunders of hours in this issue. here is my main file Doorbelly.py that controls everything: https://paste.brcb.eu/yrygofukud.md Then here is call.py file that controls the call itself: https://paste.brcb.eu/gywequhaqu.rb And just linking other files like lock.py used for unlocking the door: https://pastebin.com/nB3hGz4s Here is my config loaded by the doorbell.py and used for controlling the call destination and lock password: https://paste.brcb.eu/majucypygo.ini And finally, here is my log of the call: https://pastebin.com/fFMN2HnG What I understand from this is that it tries to open an RX stream and its window, but it failes as there is no screen attached to the RPi (and it will not be in the project) So my idea was to retry opening a new video stream with just outgoing direction once the call is estabilished. But that fails also. I am sorry for such a long report and I thank you in advance for helping me with this issue. I am not a dead end and have no idea what to try next. Thank you! kind regards Simon Cechacek