Skip to content

ChickenDevs/webcast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a custom streaming solution designed to work with the webcast system of The Church of Jesus Christ of Latter-day Saints. It uses Raspberry Pi 4, Ubuntu and ffmpeg to essentially replace the Teradek system. We initially started with Jeremy Willden's work on OBS Automator but have since removed the requirement for OBS in order to make this as simple and automated as possible. (If anyone is interested in running OBS on a Pi we were successful at that and would be happy to share our experiences.)

App source code available at: https://github.com/ChickenDevs/webcast-app

Webcast Quickstart

  1. Download the prebuilt image for a Raspberry Pi 4.
  2. Write the image to an SD card using the Raspberry Pi Imager.
  3. Install as shown below. Pictures are available in the wiki. Wiring Diagram
  4. We strongly recommend setting a static IP as shown here. The device name will be webcast-pi and the zone will be public. Technology Manager IP Assignment
  5. Point a web broswer to the IP address of the Pi after it boots from the SD card.
  6. Login using webcast/alma3738
  7. Go to the "Webcast Config" section of the Cockpit UI and enter the appropriate configuration information. Cockpit WebcastConfig Plugin
  8. Click submit to save the configuration.
  9. Click start.

Parts List

These last two items are optional. We use the remote control outlet on the network switch to turn off/on the stream without having to reboot the Pi. You could use the power switch on the Pi directly or use the web interface to stop and start the stream from a smartphone, tablet or laptop. We chose the hanging remote control outlet with an indicator light so that it sat just above the floor where the bishopric could see the light and control it from their seats.

FAQ

Q: Can I use wireless networking?

A: Yes. In most of our buildings we are using wired networking so that we can shutoff the wireless if bandwidth becomes an issue. We do have one branch which is using rented space without wired networking so we are successfully using wireless networking there. To setup wirless networking you will either need access to the console of the Pi or you can connect the Pi to a wired network with a DHCP server to setup the wireless networking. Connect to the management interface through the wired interface and on the "Terminal" section run sudo nmtui and then select "Activate a Connection" to setup the SSID and password.

Q: Can I use this on something besides a Raspberry Pi?

A: Yes. This will work anywhere ffmpeg works, so pretty much everywhere. It will require some modifcation to the way USB devices are identified in the ffmpeg command. We have successfully used the same logic in a PowerShell script during our investigations but never completed the automation (which would use scheduled tasks in Windows) and therefore haven't released that code. Any Linux device that uses v4l2 and alsa should just work but hasn't been tested.

Q: Can I use this to stream to services other than the webcast system?

A: Yes. On the "Webcast Config" section of the management interface you can choose not to use AutoConfig at which point you will be able to manually set the rtmp URL, streamkey, video bitrate and audio bitrate to match any service that accepts an rtmp stream. This has been tested with YouTube, Facebook and Twitch.

Q: Can I use this on low bandwidth connections?

A: Yes. We have one building with a 500kbps upload which is using this solution successfully. The configuration page allows the selection of camera resolutions of 640x480, 800x600, 1280x720 or 1920x1080. Using the camera from the parts list above we have tested many of the supported webcast encoder settings from 640x480@250kbps to 1920x1080@2000kpbs.