Documentation
¶
Overview ¶
Package transcoding provides CloudFront signed URL generation
Package transcoding provides HLS/DASH manifest generation
Package transcoding provides AWS MediaConvert integration for video transcoding
Index ¶
- Constants
- Variables
- func ValidateConfig(config CloudFrontConfig) error
- type CloudFrontConfig
- type CloudFrontService
- func (c *CloudFrontService) GetExpirationTime(ttl time.Duration) time.Time
- func (c *CloudFrontService) SignBatchURLs(resourcePaths []string, ttl time.Duration) (map[string]string, error)
- func (c *CloudFrontService) SignStreamingURL(mediaID, format string, quality *string, ttl time.Duration) (string, error)
- func (c *CloudFrontService) SignURL(resourcePath string, expireTime time.Time) (string, error)
- func (c *CloudFrontService) SignURLWithDefaultTTL(resourcePath string) (string, error)
- type Config
- type JobStatus
- type ManifestConfig
- type ManifestInfo
- type ManifestService
- func (m *ManifestService) GenerateDASHManifest(ctx context.Context, mediaID string, outputPrefix string, ...) error
- func (m *ManifestService) GenerateHLSMasterPlaylist(ctx context.Context, mediaID string, outputPrefix string, ...) error
- func (m *ManifestService) GetManifestInfo(ctx context.Context, mediaID string, outputPrefix string) (*ManifestInfo, error)
- func (m *ManifestService) PreloadManifests(ctx context.Context, mediaIDs []string) error
- type OutputInfo
- type Service
- func (s *Service) CancelJob(ctx context.Context, mediaConvertJobID string) error
- func (s *Service) ConvertToTranscodingJob(req *TranscodeRequest, result *TranscodeResult) *models.TranscodingJob
- func (s *Service) GetJobStatus(ctx context.Context, mediaConvertJobID string) (*JobStatus, error)
- func (s *Service) SubmitJob(ctx context.Context, req *TranscodeRequest) (*TranscodeResult, error)
- type TranscodeRequest
- type TranscodeResult
- type VariantInfo
Constants ¶
const ( Quality4K = "4k" Quality2160p = "2160p" Quality1080p = "1080p" Quality720p = "720p" Quality480p = "480p" Quality360p = "360p" Quality240p = "240p" QualityAuto = "auto" )
Quality level constants
Variables ¶
var ( // ErrInvalidPrivateKey is returned when the private key is invalid ErrInvalidPrivateKey = errors.New("invalid CloudFront private key") // ErrSigningFailed is returned when URL signing fails ErrSigningFailed = errors.New("failed to sign URL") )
var ( // ErrManifestNotFound is returned when a manifest is not found ErrManifestNotFound = errors.New("manifest not found") // ErrManifestGenerationFailed is returned when manifest generation fails ErrManifestGenerationFailed = errors.New("manifest generation failed") )
var ( // ErrInvalidRequest is returned when the transcode request is invalid ErrInvalidRequest = errors.New("invalid transcode request") // ErrJobNotFound is returned when a job is not found ErrJobNotFound = errors.New("transcode job not found") ErrServiceUnavailable = errors.New("transcoding service unavailable") )
Functions ¶
func ValidateConfig ¶
func ValidateConfig(config CloudFrontConfig) error
ValidateConfig validates the CloudFront configuration
Types ¶
type CloudFrontConfig ¶
type CloudFrontConfig struct {
Domain string // CloudFront distribution domain
KeyPairID string // CloudFront key pair ID
PrivateKeyPEM string // Private key in PEM format
DefaultTTL time.Duration // Default URL expiration time
}
CloudFrontConfig holds configuration for CloudFront service
type CloudFrontService ¶
type CloudFrontService struct {
// contains filtered or unexported fields
}
CloudFrontService handles CloudFront signed URL generation
func NewCloudFrontService ¶
func NewCloudFrontService(config CloudFrontConfig, logger *zap.Logger) (*CloudFrontService, error)
NewCloudFrontService creates a new CloudFront service
func (*CloudFrontService) GetExpirationTime ¶
func (c *CloudFrontService) GetExpirationTime(ttl time.Duration) time.Time
GetExpirationTime returns the expiration time for a given TTL
func (*CloudFrontService) SignBatchURLs ¶
func (c *CloudFrontService) SignBatchURLs(resourcePaths []string, ttl time.Duration) (map[string]string, error)
SignBatchURLs signs multiple URLs at once (for preloading)
func (*CloudFrontService) SignStreamingURL ¶
func (c *CloudFrontService) SignStreamingURL(mediaID, format string, quality *string, ttl time.Duration) (string, error)
SignStreamingURL generates a signed URL for streaming content
func (*CloudFrontService) SignURL ¶
SignURL generates a signed CloudFront URL with custom expiration
func (*CloudFrontService) SignURLWithDefaultTTL ¶
func (c *CloudFrontService) SignURLWithDefaultTTL(resourcePath string) (string, error)
SignURLWithDefaultTTL generates a signed URL with the default TTL
type Config ¶
type Config struct {
Endpoint string // MediaConvert endpoint
Role string // IAM role ARN for MediaConvert
DestinationBucket string // S3 bucket for output
DestinationPrefix string // S3 prefix for output
Queue string // MediaConvert queue ARN (optional)
}
Config holds configuration for the transcoding service
type JobStatus ¶
type JobStatus struct {
JobID string
MediaConvertJobID string
Status string // "SUBMITTED", "PROGRESSING", "COMPLETE", "ERROR"
PercentComplete int
ErrorMessage string
Outputs []OutputInfo
CreatedAt time.Time
CompletedAt *time.Time
}
JobStatus represents the status of a transcoding job
type ManifestConfig ¶
type ManifestConfig struct {
Bucket string // S3 bucket for manifests
CDNDomain string // CloudFront domain (optional)
}
ManifestConfig holds configuration for manifest service
type ManifestInfo ¶
type ManifestInfo struct {
MediaID string
HLSMasterURL string
DASHManifestURL string
Variants []VariantInfo
ThumbnailURLs []string
GeneratedAt time.Time
}
ManifestInfo contains information about generated manifests
type ManifestService ¶
type ManifestService struct {
// contains filtered or unexported fields
}
ManifestService handles HLS and DASH manifest operations
func NewManifestService ¶
func NewManifestService(s3Client s3API, config ManifestConfig, logger *zap.Logger) *ManifestService
NewManifestService creates a new manifest service
func (*ManifestService) GenerateDASHManifest ¶
func (m *ManifestService) GenerateDASHManifest(ctx context.Context, mediaID string, outputPrefix string, variants []VariantInfo, duration int) error
GenerateDASHManifest generates a DASH manifest from variants
func (*ManifestService) GenerateHLSMasterPlaylist ¶
func (m *ManifestService) GenerateHLSMasterPlaylist(ctx context.Context, mediaID string, outputPrefix string, variants []VariantInfo) error
GenerateHLSMasterPlaylist generates an HLS master playlist from variants
func (*ManifestService) GetManifestInfo ¶
func (m *ManifestService) GetManifestInfo(ctx context.Context, mediaID string, outputPrefix string) (*ManifestInfo, error)
GetManifestInfo retrieves manifest information for a media item
func (*ManifestService) PreloadManifests ¶
func (m *ManifestService) PreloadManifests(ctx context.Context, mediaIDs []string) error
PreloadManifests downloads manifests to warm up CDN cache
type OutputInfo ¶
type OutputInfo struct {
Quality string
Format string
S3Key string
Width int
Height int
Bitrate int
FileSize int64
ManifestURL string
}
OutputInfo contains information about a transcoded output
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service provides AWS MediaConvert transcoding operations
func NewService ¶
NewService creates a new transcoding service
func (*Service) ConvertToTranscodingJob ¶
func (s *Service) ConvertToTranscodingJob(req *TranscodeRequest, result *TranscodeResult) *models.TranscodingJob
ConvertToTranscodingJob converts a transcode result to a storage model
func (*Service) GetJobStatus ¶
GetJobStatus retrieves the status of a transcoding job
func (*Service) SubmitJob ¶
func (s *Service) SubmitJob(ctx context.Context, req *TranscodeRequest) (*TranscodeResult, error)
SubmitJob submits a transcoding job to AWS MediaConvert
type TranscodeRequest ¶
type TranscodeRequest struct {
MediaID string
UserID string
Username string
SourceBucket string
SourceKey string
ContentType string
Duration int
Width int
Height int
QualityLevels []string // ["480p", "720p", "1080p"]
GenerateHLS bool
GenerateDASH bool
ThumbnailCount int
}
TranscodeRequest represents a request to transcode media