Share PC desktop to Raspberry Pi with WebRTC

Overview

BerryShare

Share your PC desktop to Raspberry Pi with WebRTC.

Webp net-gifmaker

Getting Started

  • Install the latest version of RaspiOS image (Lite or with desktop).
  • Connect monitor with HDMI cable, boot up Raspberry Pi and configure network.
  • Download and copy the installation package berry-share_ .deb to Raspberry Pi
  • Install BerryShare package
$ apt update
$ sudo apt install -y ./berry-share_
   
    .deb
$ sudo systemctl start berry-share

   
  • Open Chrome on your PC and go to the URL https:// :30001
  • It will show "Your connection is not private". Click "Advance" and "Proceed to (unsafe)" to skip the authorization.
  • Choose "Entire Screen" and click "Share".
  • Raspberry Pi will display your PC desktop!

Development

Model OS image
Raspberry Pi 3A+ 2021-05-07-raspios-buster-armhf-lite.img
  • Install Git and clone the repository.
$ apt update
$ apt install -y git
$ git clone --recursive https://github.com/sepfy/BerryShare
  • Install dependencies.
$ cd BerryShare
$ ./scripts/install-deps.sh
  • Compile BerryShare.
$ mkdir cmake
$ cd cmake
$ cmake ..
$ make -j4
  • Package to dpkg.
$ ./scripts/create-dpkg.sh

Dependencies

Known Issues

  • No audio
  • Only support PC, no mobile.
  • Only support Chrome.
  • Only entire screen, no chrome tab.
You might also like...
This repository is to share the EdgeAI Lab with Microcontrollers Series material to the entire community

This repository is to share the EdgeAI Lab with Microcontrollers Series material to the entire community. We will share documents, presentations and source code of two demo applications.

Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

Testing memleaks with /usr/share/bcc/tools/memleak

Testing memleaks with /usr/share/bcc/tools/memleak

Text - A spicy text library for C++ that has the explicit goal of enabling the entire ecosystem to share in proper forward progress towards a bright Unicode future.

ztd.text Because if text works well in two of the most popular systems programming languages, the entire world over can start to benefit properly. Thi

Fastest tiktok share botter. Over 100k shares a second.
Fastest tiktok share botter. Over 100k shares a second.

TikTok Share Botter ⚠️ CURRENTLY PATCHED WAITING FOR WORK AROUND ⚠️ Fastest multi-threaded and proxyless TikTok Share Botter written in C++. Click her

Pear - WebRTC Toolkit for IoT/Embedded Device

Pear is a WebRTC SDK written in C. The SDK aims to integrate IoT/Embedded device with WebRTC applications.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

webrtc c++ library for mediasoup with full sfu c++ demo
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Yangwebrtc - Webrtc Libary for PC, non-google lib
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

Prueba del Raspberry PI PICO con un display Raspberry PI TFT 3.5"

Raspberry-PI-PICO-display-RPI35 Prueba del Raspberry PI PICO con un display Raspberry PI TFT 3.5" Con ayuda de la libreria https://github.com/khoih-pr

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework used for rapidly developing high quality desktop and mobile applications, including VS

DeskGap is a framework for building cross-platform desktop apps with web technologies (JavaScript, HTML and CSS).
DeskGap is a framework for building cross-platform desktop apps with web technologies (JavaScript, HTML and CSS).

A cross-platform desktop app framework based on Node.js and the system webview

Jellyfin Desktop Client based on Plex Media Player

Jellyfin Media Player Based on (but not affiliated with) Plex Media Player. Please see: Corresponding web client: Repo Release API Docs in client-api.

Legit DLC Unlocker for Steam, Epic, Origin, EA Desktop & Uplay (R1)

🐨 Koalageddon 💥 Legit DLC Unlocker for Steam, Epic, Origin, EA Desktop & Uplay (R1) Welcome to the Koalageddon repository. For user-friendly introdu

A beginner friendly desktop UI for Tasmota flashed devices for Windows, macOS and Linux.
A beginner friendly desktop UI for Tasmota flashed devices for Windows, macOS and Linux.

TasmoManager A beginner friendly desktop UI for Tasmota flashed devices for Windows, macOS and Linux. Features Native Tasmota device discovery (via ta

Jellyfin Desktop Client based on Plex Media Player
Jellyfin Desktop Client based on Plex Media Player

Desktop client using jellyfin-web with embedded MPV player. Supports Windows, Mac OS, and Linux. Media plays within the same window using the jellyfin-web interface unlike Jellyfin Desktop. Supports audio passthrough. Based on Plex Media Player.

FreeRDP is a free remote desktop protocol library and clients

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

Comments
  • compiling problems

    compiling problems

    Hello,

    I am trying to compile your program on a PC with Ubuntu 20.04 and I am stumbling on the following errors :

    berryshare-0.17.0/src/omx_sink.h:13:10: fatal error: ilclient.h: No such file or directory
       13 | #include "ilclient.h"
          |          ^~~~~~~~~~~~
    berryshare-0.17.0/src/rtp_depacketizer.h:8:10: fatal error: rtp-packet.h: No such file or directory
        8 | #include <rtp-packet.h>
          |          ^~~~~~~~~~~~~~
    compilation terminated.
    

    Any idea where these files may be found ?

    opened by j75 1
  • I cannot start the service

    I cannot start the service

    After "sudo systemctl start berry-share"

    $ sudo systemctl status berry-share ● berry-share.service - BerryShare service Loaded: loaded (/etc/systemd/system/berry-share.service; enabled; vendor preset: enabled) Active: failed (Result: signal) since Wed 2022-05-11 12:59:39 CEST; 24s ago Process: 7086 ExecStart=/usr/bin/berry-share (code=killed, signal=ILL) Main PID: 7086 (code=killed, signal=ILL) CPU: 201ms

    May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 5. May 11 12:59:39 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Start request repeated too quickly. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:39 raspberrypi systemd[1]: Failed to start BerryShare service.

    $ journalctl -u berry-share May 11 12:59:36 raspberrypi systemd[1]: Started BerryShare service. May 11 12:59:36 raspberrypi systemd[1]: berry-share.service: Main process exited, code=killed, status=4/ILL May 11 12:59:36 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:37 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 1. May 11 12:59:37 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:37 raspberrypi systemd[1]: Started BerryShare service. May 11 12:59:37 raspberrypi systemd[1]: berry-share.service: Main process exited, code=killed, status=4/ILL May 11 12:59:37 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:37 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 2. May 11 12:59:37 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:37 raspberrypi systemd[1]: Started BerryShare service. May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Main process exited, code=killed, status=4/ILL May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 3. May 11 12:59:38 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:38 raspberrypi systemd[1]: Started BerryShare service. May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Main process exited, code=killed, status=4/ILL May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:38 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 4. May 11 12:59:38 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:38 raspberrypi systemd[1]: Started BerryShare service. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Main process exited, code=killed, status=4/ILL May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Scheduled restart job, restart counter is at 5. May 11 12:59:39 raspberrypi systemd[1]: Stopped BerryShare service. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Start request repeated too quickly. May 11 12:59:39 raspberrypi systemd[1]: berry-share.service: Failed with result 'signal'. May 11 12:59:39 raspberrypi systemd[1]: Failed to start BerryShare service.

    opened by nicovan 0
  • Compilation issue

    Compilation issue

    Hello,

    Environnement :
    [email protected]:~/BerryShare/cmake# cat /etc/rel /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

    Compilation issue [email protected]:~/BerryShare/cmake# make -j4 Scanning dependencies of target berry-share [ 30%] Building CXX object src/CMakeFiles/berry-share.dir/alsa_sink.cc.o [ 30%] Building CXX object src/CMakeFiles/berry-share.dir/berry_share.cc.o [ 30%] Building CXX object src/CMakeFiles/berry-share.dir/media_player.cc.o [ 40%] Building CXX object src/CMakeFiles/berry-share.dir/media_sink.cc.o [ 50%] Building CXX object src/CMakeFiles/berry-share.dir/omx_sink.cc.o In file included from /root/BerryShare/src/webrtc_connection.h:6, from /root/BerryShare/src/signal_service.h:12, from /root/BerryShare/src/berry_share.cc:7: /root/BerryShare/src/rtp_depacketizer.h:8:10: fatal error: rtp-packet.h: No such file or directory #include <rtp-packet.h> ^~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/CMakeFiles/berry-share.dir/build.make:76: src/CMakeFiles/berry-share.dir/berry_share.cc.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:94: src/CMakeFiles/berry-share.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

    Where can I find this rtp-packet.h file please ?

    opened by eravion 1
Releases(v0.17.0)
Owner
null
A linux based file-transfer system in terminal. Share Files Over A Network

Introduction A linux based file-transfer system in terminal. Share Files Over A Network Note This Project Is Not Fully Completed Yet But You Are Free

notaweeb 8 Sep 20, 2021
Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

null 1 Nov 15, 2021
Jellyfin Desktop Client based on Plex Media Player

Jellyfin Media Player Based on (but not affiliated with) Plex Media Player. Please see: Corresponding web client: Repo Release API Docs in client-api.

Ian Walton 1.3k Dec 27, 2022
FreeRDP is a free remote desktop protocol library and clients

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

null 7.7k Dec 31, 2022
GNOME Shell provides core user interface functions for the GNOME 3 desktop

GNOME Shell GNOME Shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME Sh

Muqtadir 3 Oct 18, 2021
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++, and JavaScript.

SixtyFPS 5.5k Jan 2, 2023
This project was made with a NodeMCU ESP8266 WiFi module, Raspberry Pi4, humidity sensor, flame sensor, luminosity sensor, RGB LED, active buzzer.

Smart.House.IoT.Project This project was made with a NodeMCU ESP8266 WiFi module, Raspberry Pi4, Temp and Humidity sensor, Flame sensor, Photoresistor

Hermassi Nadir 0 Jun 22, 2022
Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Overview This project aims to be a convenient location for WebRTC library developers to perform interoperability tests. Who can Participate The projec

Aaron Clauson 106 Dec 18, 2022
OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

AirenSoft 1.8k Jan 8, 2023
A linux based file-transfer system in terminal. Share Files Over A Network

Introduction A linux based file-transfer system in terminal. Share Files Over A Network Note This Project Is Not Fully Completed Yet But You Are Free

notaweeb 8 Sep 20, 2021