Add support filename query param for mp4 files
This commit is contained in:
+16
-5
@@ -38,7 +38,8 @@ func handlerKeyframe(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
src := r.URL.Query().Get("src")
|
query := r.URL.Query()
|
||||||
|
src := query.Get("src")
|
||||||
stream := streams.GetOrNew(src)
|
stream := streams.GetOrNew(src)
|
||||||
if stream == nil {
|
if stream == nil {
|
||||||
http.Error(w, api.StreamNotFound, http.StatusNotFound)
|
http.Error(w, api.StreamNotFound, http.StatusNotFound)
|
||||||
@@ -69,8 +70,13 @@ func handlerKeyframe(w http.ResponseWriter, r *http.Request) {
|
|||||||
stream.RemoveConsumer(cons)
|
stream.RemoveConsumer(cons)
|
||||||
|
|
||||||
// Apple Safari won't show frame without length
|
// Apple Safari won't show frame without length
|
||||||
w.Header().Set("Content-Length", strconv.Itoa(len(data)))
|
header := w.Header()
|
||||||
w.Header().Set("Content-Type", cons.MimeType)
|
header.Set("Content-Length", strconv.Itoa(len(data)))
|
||||||
|
header.Set("Content-Type", cons.MimeType)
|
||||||
|
|
||||||
|
if filename := query.Get("filename"); filename != "" {
|
||||||
|
header.Set("Content-Disposition", `attachment; filename="`+filename+`"`)
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := w.Write(data); err != nil {
|
if _, err := w.Write(data); err != nil {
|
||||||
log.Error().Err(err).Caller().Send()
|
log.Error().Err(err).Caller().Send()
|
||||||
@@ -132,8 +138,6 @@ func handlerMP4(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
defer stream.RemoveConsumer(cons)
|
defer stream.RemoveConsumer(cons)
|
||||||
|
|
||||||
w.Header().Set("Content-Type", cons.MimeType())
|
|
||||||
|
|
||||||
data, err := cons.Init()
|
data, err := cons.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Caller().Send()
|
log.Error().Err(err).Caller().Send()
|
||||||
@@ -141,6 +145,13 @@ func handlerMP4(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header := w.Header()
|
||||||
|
header.Set("Content-Type", cons.MimeType())
|
||||||
|
|
||||||
|
if filename := query.Get("filename"); filename != "" {
|
||||||
|
header.Set("Content-Disposition", `attachment; filename="`+filename+`"`)
|
||||||
|
}
|
||||||
|
|
||||||
if _, err = w.Write(data); err != nil {
|
if _, err = w.Write(data); err != nil {
|
||||||
log.Error().Err(err).Caller().Send()
|
log.Error().Err(err).Caller().Send()
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|||||||
Reference in New Issue
Block a user