Loading repository data…
Loading repository data…
mdcreativenetwork / repository
ffmpeg-go is a robust and efficient Go package designed to simplify interaction with FFmpeg for audio and video processing tasks. It provides a high-level, idiomatic Go interface for transcoding, streaming, and manipulating multimedia files, leveraging the power of FFmpeg and FFprobe. With built-in support for concurrent job management and progress
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This package provides a Go wrapper for FFmpeg, enabling video transcoding and streaming operations with a clean, modern API.
go get github.com/mdcreativenetwork/ffmpeg-go
package main
import (
"context"
"github.com/mdcreativenetwork/ffmpeg-go"
"github.com/rs/zerolog"
"os"
)
func main() {
logger := zerolog.New(os.Stdout).With().Timestamp().Logger()
// Initialize transcoder
transcoder := ffmpeg.NewTranscoder("ffmpeg", "ffprobe", 4, logger)
// Start transcoding job
job, err := transcoder.TranscodeAsync(
context.Background(),
"job1",
"input.mp4",
"output.mp4",
"hd_h264",
func(progress, speed float64, eta time.Duration) {
// Progress callback
logger.Info().
Float64("progress", progress).
Float64("speed", speed).
Str("eta", eta.String()).
Msg("Transcoding progress")
},
)
if err != nil {
logger.Fatal().Err(err).Msg("Failed to start transcoding")
}
}
package main
import (
"context"
"github.com/mdcreativenetwork/ffmpeg-go"
"github.com/rs/zerolog"
"os"
)
func main() {
logger := zerolog.New(os.Stdout).With().Timestamp().Logger()
// Initialize wrapper and stream manager
config := ffmpeg.DefaultConfig()
wrapper, _ := ffmpeg.NewWrapper(config, logger)
streamManager := ffmpeg.NewStreamManager(wrapper, logger)
// Configure streaming
streamConfig := ffmpeg.StreamConfig{
Input: "rtsp://input-stream",
Output: "hls/output.m3u8",
Format: ffmpeg.FormatHLS,
Profiles: []ffmpeg.StreamProfile{
ffmpeg.GetDefaultProfiles()[ffmpeg.QualityMedium],
},
HLSSegmentTime: 4,
HLSListSize: 5,
}
// Start streaming
session, err := streamManager.StartStream(context.Background(), "stream1", streamConfig)
if err != nil {
logger.Fatal().Err(err).Msg("Failed to start streaming")
}
}
Full GoDoc documentation is available for all public types and functions. Key components include:
Transcoder: Handles video transcoding operationsStreamManager: Manages streaming sessionsWrapper: Low-level FFmpeg process managementTranscodingProfile: Defines transcoding parametersStreamConfig: Configures streaming parametersMediaInfo: Provides media file informationgo build ./...
go test ./...
MIT License