All Projects → livepeer → Go Livepeer

livepeer / Go Livepeer

Licence: mit
Official Go implementation of the Livepeer protocol

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to Go Livepeer

Parity Bridge
Stars: ✭ 301 (-5.05%)
Mutual labels:  ethereum
Ethersplay
EVM dissassembler
Stars: ✭ 304 (-4.1%)
Mutual labels:  ethereum
Populus
The Ethereum development framework with the most cute animal pictures
Stars: ✭ 315 (-0.63%)
Mutual labels:  ethereum
Bamboo
Bamboo see https://github.com/cornellblockchain/bamboo
Stars: ✭ 300 (-5.36%)
Mutual labels:  ethereum
Alpha
Follow the white rabbit 🐇
Stars: ✭ 304 (-4.1%)
Mutual labels:  ethereum
Squeezer
Squeezer Framework - Build serverless dApps
Stars: ✭ 3,242 (+922.71%)
Mutual labels:  ethereum
Web3.swift
A pure swift Ethereum Web3 library
Stars: ✭ 295 (-6.94%)
Mutual labels:  ethereum
Web3j Sample
web3j 样例程序
Stars: ✭ 317 (+0%)
Mutual labels:  ethereum
Cryptolist
Curated collection of blockchain & cryptocurrency resources.
Stars: ✭ 3,501 (+1004.42%)
Mutual labels:  ethereum
Nmr
The Numeraire Ethereum Smart Contract
Stars: ✭ 316 (-0.32%)
Mutual labels:  ethereum
Khipu
An enterprise blockchain platform based on Ethereum
Stars: ✭ 301 (-5.05%)
Mutual labels:  ethereum
Edge React Gui
Edge Wallet React Native GUI for iOS and Android
Stars: ✭ 303 (-4.42%)
Mutual labels:  ethereum
Embark
Framework for serverless Decentralized Applications using Ethereum, IPFS and other platforms
Stars: ✭ 3,478 (+997.16%)
Mutual labels:  ethereum
Ethereum Lists
A repository for maintaining lists of things like malicious URLs, fake token addresses, and so forth. We love lists.
Stars: ✭ 300 (-5.36%)
Mutual labels:  ethereum
Contracts
[DEPRECATED] 0x smart contracts and tests.
Stars: ✭ 317 (+0%)
Mutual labels:  ethereum
Ethatomicswap
Ethereum atomic swap
Stars: ✭ 298 (-5.99%)
Mutual labels:  ethereum
Requestnetwork
A JavaScript library for interacting with the Request Network protocol
Stars: ✭ 311 (-1.89%)
Mutual labels:  ethereum
Ethvm
⚡️EthVM: Open Source Processing Engine and Block Explorer for Ethereum ⚡️
Stars: ✭ 319 (+0.63%)
Mutual labels:  ethereum
Zkproofs
Original iteration of ING zero-knowledge range proofs. This repo has been archived as a prior works knowledge base, for latest Bulletproofs implementation please go to ing-bank/zkrp.
Stars: ✭ 319 (+0.63%)
Mutual labels:  ethereum
Uniswap V1
🐍Uniswap V1 smart contracts
Stars: ✭ 313 (-1.26%)
Mutual labels:  ethereum

Build Status Go Report Card Discord license

go-livepeer

Livepeer is a live video streaming network protocol that is fully decentralized, highly scalable, crypto token incentivized, and results in a solution which is cheaper to an app developer or broadcaster than using traditional centralized live video solutions. go-livepeer is a golang implementation of the protocol.

Building and running this node allows you to:

  • Create a local Livepeer Network, or join the existing Livepeer test network.
  • Broadcast a live stream into the network.
  • Request that your stream be transcoded into multiple formats.
  • Consume a live stream from the network.

For full documentation and a project overview, go to Livepeer Documentation or Livepeer Wiki

Installing Livepeer

Easiest Option: Download executables

The easiest way to install Livepeer is by downloading the livepeer and livepeer_cli executables from the release page on Github.

  1. Download the packages for your OS - darwin for Macs and linux for linux.
  2. Untar them and optionally move the executables to your PATH.

Alternative Livepeer installation options are also available:

Building on Windows

Building on Windows is possible using MSYS2 and mingw64. See the GitHub Action build definition for an example.

Running Livepeer

Quick start

  • Make sure you have successfully gone through the steps in 'Installing Livepeer' and 'Additional Dependencies'.

  • Run ./livepeer -broadcaster -network rinkeby -ethUrl <ETHEREUM_RPC_URL>.

    • <ETHEREUM_RPC_URL> is the JSON-RPC URL of an Ethereum node
  • Run ./livepeer_cli.

    • You should see a wizard launch in the command line.
    • The wizard should print out Account Eth Addr, Token balance, and Eth balance
  • Get some test eth for the Rinkeby faucet. Make sure to use the Eth account address from above. Remember to add 0x as a prefix to address, if not present.

    • You can check that the request is successful by going to livepeer_cli and selecting Get node status. You should see a positive Eth balance.
  • Now get some test Livepeer tokens. Pick Get test Livepeer Token.

    • You can check that the request is successful by going to livepeer_cli and selecting Get node status. You should see your Token balance go up.
  • You should have some test Eth and test Livepeer tokens now. If that's the case, you are ready to broadcast.

Broadcasting

For full details, read the Broadcasting guide.

Sometimes you want to use third-party broadcasting software, especially if you are running the software on Windows or Linux. Livepeer can take any RTMP stream as input, so you can use other popular streaming software to create the video stream. We recommend OBS or ffmpeg.

By default, the RTMP port is 1935. For example, if you are using OSX with ffmpeg, run

ffmpeg -f avfoundation -framerate 30 -pixel_format uyvy422 -i "0:0" -vcodec libx264 -tune zerolatency -b 1000k -x264-params keyint=60:min-keyint=60 -acodec aac -ac 1 -b:a 96k -f flv rtmp://localhost:1935/movie

Similarly, you can use OBS, and change the Settings->Stream->URL to rtmp://localhost:1935/movie , along with the keyframe interval to 4 seconds, via Settings -> Output -> Output Mode (Advanced) -> Streaming tab -> Keyframe Interval 4.

If the broadcast is successful, you should be able to access the stream at:

http://localhost:8935/stream/movie.m3u8

where the "movie" stream name is taken from the path in the RTMP URL.

See the documentation on RTMP ingest or HTTP ingest for more details.

For information on configuring the transcoding options, see the documentation.

Authentication of incoming streams

Incoming streams can be authenticated using a webhook. More details in the webhook docs.

Streaming

You can use tools like ffplay or VLC to view the stream.

For example, after you start streaming to rtmp://localhost/movie, you can view the stream by running:

ffplay http://localhost:8935/stream/movie.m3u8

Note that the default HTTP port or playback (8935) is different from the CLI API port (7935) that is used for node management and diagnostics!

Using Amazon S3 for storing stream's data

You can use S3 to store source and transcoded data. For that livepeer should be run like this livepeer -s3bucket region/bucket -s3creds accessKey/accessKeySecret. Stream's data will be saved into directory MANIFESTID, where MANIFESTID - id of the manifest associated with stream. In this directory will be saved all the segments data, plus manifest, named MANIFESTID_full.m3u8. Livepeer node doesn't do any storage management, it only saves data and never deletes it.

Becoming an Orchestrator

We'll walk through the steps of becoming a transcoder on the test network. To learn more about the transcoder, refer to the Livepeer whitepaper and the Transcoding guide.

  • livepeer -orchestrator -transcoder -network rinkeby -ethUrl <ETHEREUM_RPC_URL> to start the node as an orchestrator with an attached local transcoder .

  • livepeer_cli - make sure you have test ether and test Livepeer token. Refer to the Quick Start section for getting test ether and test tokens.

  • You should see the Transcoder Status as "Not Registered".

  • Pick "Become a transcoder" in the wizard. Make sure to choose "bond to yourself". Follow the rest of the prompts, including confirming the transcoder's public IP and port on the blockchain. If Successful, you should see the Transcoder Status change to "Registered"

  • Wait for the next round to start, and your transcoder will become active.

  • If running on Rinkeby or mainnet, ensure your orchestrator is publicly accessible in order to receive jobs from broadcasters. The only port that is required to be public is the one that was set during the transcoder registration step (default 8935).

Standalone Orchestrators

Orchestrators can be run in standalone mode without an attached transcoder. Standalone transcoders will need to connect to this orchestrator in order for the orchestrator to process jobs.

  • livepeer -network rinkeby -ethUrl <ETHEREUM_RPC_URL> -orchestrator -orchSecret asdf

The orchSecret is a shared secret used to authenticate remote transcoders. It can be any arbitrary string.

Standalone Transcoders

A standalone transcoder can be run which connects to a remote orchestrator. The orchestrator will send transcoding tasks to this transcoder as segments come in.

  • livepeer -transcoder -orchAddr 127.0.0.1:8935 -orchSecret asdf

GPU Transcoding

GPU transcoding on NVIDIA is supported; see the GPU documentation for usage details.

Verification

Experimental verification of video using the Epic Labs classifier can be enabled with the -verifierUrl flag. Pass in the address of the verifier API:

  • livepeer -broadcaster -verifierUrl http://localhost:5000/verify -verifierPath /path/to/verifier

Refer to the classifier documentation for more details on getting the classifier API installed and running.

CLI endpoint spec

The Livepeer node exposes a HTTP interface for monitoring and managing the node. Details on the available endpoints are here.

Contribution

Thank you for your interest in contributing to the core software of Livepeer.

There are many ways to contribute to the Livepeer community. To see the project overview, head to our Wiki overview page. The best way to get started is to reach out to us directly via our discord channel.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].