Server implementation of Adobe's RTMP 1.0 protocol in Go.
Switch branches/tags
Nothing to show
Clone or download
c-bata Merge pull request #2 from saturday06/fix-message-stream-id-endianness
Fix reading endianness of message stream id
Latest commit c023351 Jun 23, 2018


Server implementation of RTMP 1.0 protocol in Go.

Getting Started

Usage is like this:

package main

import (


func main() {
	var addr string
	flag.StringVar(&addr, "addr", ":1935", `TCP address to listen on, ":1935" if empty`)

	log.Printf("Serving RTMP on %s", addr)
	err := rtmp.ListenAndServe(addr)
	if err != nil {
		log.Fatalf("Catch Error: %s", err)

Build an example server script via Make and Run it.

$ make build
$ ./bin/server -addr :1935
2018/01/28 17:09:53 Serving RTMP on :1935 (rev-a669378)

After that, you can send a RTMP stream using RTMP client like ffmpeg or Wirecast. In the case of using ffmpeg, please execute a following command.

$ ffmpeg -re -i /path/to/your_video.mp4 -map 0 -c:v libx264 -c:a aac -f flv rtmp://

GIF Animation - Receiving RTMP Stream.