https://github.com/golift/ffmpeg
Go FFMPEG Library for RTSP streams (IP cameras)
https://github.com/golift/ffmpeg
ffmpeg ffmpeg-library ffmpeg-wrapper golang golang-library golang-package ip-cameras rtsp
Last synced: about 1 month ago
JSON representation
Go FFMPEG Library for RTSP streams (IP cameras)
- Host: GitHub
- URL: https://github.com/golift/ffmpeg
- Owner: golift
- License: mit
- Created: 2019-02-10T02:16:29.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2026-03-03T05:33:37.000Z (about 1 month ago)
- Last Synced: 2026-03-03T08:41:22.962Z (about 1 month ago)
- Topics: ffmpeg, ffmpeg-library, ffmpeg-wrapper, golang, golang-library, golang-package, ip-cameras, rtsp
- Language: Go
- Homepage: https://golift.io/discord
- Size: 47.9 KB
- Stars: 60
- Watchers: 6
- Forks: 20
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simple Go FFMPEG Library for RTSP streams (IP cameras)
Capture video footage from RTSP IP cameras.
Provides a simple interface to set FFMPEG options and capture video from an RTSP source.
Lots of other libraries out there do ffmpeg and rtsp things, but I couldn't find
any that fit this simple task of "get a video snippet from a camera."
- [GODOC](https://pkg.go.dev/golift.io/ffmpeg)
## Example
```golang
package main
import (
"log"
"golift.io/ffmpeg"
)
func main() {
/*
* Example non-transcode direct-save from securityspy.
*/
securitypsy := "rtsp://user:pass@127.0.0.1:8000/++stream?cameraNum=1"
output := "/tmp/securitypsy_captured_file.mov"
c := &ffmpeg.Config{
FFMPEG: "/usr/local/bin/ffmpeg",
Copy: true, // do not transcode
Audio: true, // retain audio stream
Time: 10, // 10 seconds
}
encode := ffmpeg.Get(c)
cmd, out, err := encode.SaveVideo(securitypsy, output, "SecuritySpyVideoTitle")
log.Println("Command Used:", cmd)
log.Println("Command Output:", out)
if err != nil {
log.Fatalln(err)
}
log.Println("Saved file from", securitypsy, "to", output)
/*
* Example transcode from a Dahua IP camera.
*/
dahua := "rtsp://admin:password@192.168.1.12/live"
output = "/tmp/dahua_captured_file.m4v"
f := ffmpeg.Get(&ffmpeg.Config{
Audio: true, // retain audio stream
Time: 10, // 10 seconds
Width: 1920,
Height: 1080,
CRF: 23,
Level: "4.0",
Rate: 5,
Prof: "baseline",
})
cmd, out, err = f.SaveVideo(dahua, output, "DahuaVideoTitle")
log.Println("Command Used:", cmd)
log.Println("Command Output:", out)
if err != nil {
log.Fatalln(err)
}
log.Println("Saved file from", dahua, "to", output)
}
```