Proper mime type for encode server
This commit is contained in:
parent
6c20429b0d
commit
9ae28eedaa
|
@ -79,7 +79,12 @@ func encodeFromReader(reader io.ReadCloser, job *Job, w http.ResponseWriter) {
|
|||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/octet-stream")
|
||||
mimeType := "application/octet-stream"
|
||||
if e := GetEncoder(job.Config.Encoder.Name); e != nil {
|
||||
mimeType = e.MimeType
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", mimeType)
|
||||
w.Header().Add("Trailer", "x-encoder-error, x-decoder-error")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
job.Logger = log.New(os.Stderr, fmt.Sprintf("[job %s] ", job.Id), log.LstdFlags)
|
||||
|
|
|
@ -12,8 +12,9 @@ import (
|
|||
|
||||
func init() {
|
||||
Encoders = append(Encoders, EncoderEntry{
|
||||
Name: EncoderAOM,
|
||||
Version: libaom.Version,
|
||||
Name: EncoderAOM,
|
||||
Version: libaom.Version,
|
||||
MimeType: "video/x-ivf",
|
||||
New: func(w io.Writer, properties frame.StreamProperties, settings map[string]any, logger utilities.Logger) (encoder.Encoder, error) {
|
||||
return libaom.NewEncoder(w, properties, settings, logger)
|
||||
},
|
||||
|
|
|
@ -12,8 +12,9 @@ import (
|
|||
|
||||
func init() {
|
||||
Encoders = append(Encoders, EncoderEntry{
|
||||
Name: EncoderX264,
|
||||
Version: libx264.Version,
|
||||
Name: EncoderX264,
|
||||
Version: libx264.Version,
|
||||
MimeType: "video/h264",
|
||||
New: func(w io.Writer, properties frame.StreamProperties, settings map[string]any, logger utilities.Logger) (encoder.Encoder, error) {
|
||||
return libx264.NewEncoder(w, properties, settings, logger)
|
||||
},
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"git.gammaspectra.live/S.O.N.G/Ignite/frame"
|
||||
"git.gammaspectra.live/S.O.N.G/Ignite/utilities"
|
||||
"io"
|
||||
"slices"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -13,9 +14,19 @@ const (
|
|||
)
|
||||
|
||||
type EncoderEntry struct {
|
||||
Name string
|
||||
Version func() string
|
||||
New func(w io.Writer, properties frame.StreamProperties, settings map[string]any, logger utilities.Logger) (encoder.Encoder, error)
|
||||
Name string
|
||||
Version func() string
|
||||
MimeType string
|
||||
New func(w io.Writer, properties frame.StreamProperties, settings map[string]any, logger utilities.Logger) (encoder.Encoder, error)
|
||||
}
|
||||
|
||||
var Encoders []EncoderEntry
|
||||
|
||||
func GetEncoder(name string) *EncoderEntry {
|
||||
if i := slices.IndexFunc(Encoders, func(entry EncoderEntry) bool {
|
||||
return entry.Name == name
|
||||
}); i != -1 {
|
||||
return &Encoders[i]
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -43,10 +43,10 @@ func (j *Job) Init(w io.Writer) error {
|
|||
|
||||
var err error
|
||||
|
||||
for _, e := range Encoders {
|
||||
if e.Name == j.Config.Encoder.Name {
|
||||
j.Encoder, err = e.New(w, j.Config.Properties, settings, j.Logger)
|
||||
}
|
||||
if e := GetEncoder(j.Config.Encoder.Name); e == nil {
|
||||
return errors.New("encoder not found")
|
||||
} else {
|
||||
j.Encoder, err = e.New(w, j.Config.Properties, settings, j.Logger)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in a new issue