Add custom bitrate parser

This commit is contained in:
nxshock 2023-06-18 14:54:35 +05:00
parent 87bc382747
commit e8abe97992
3 changed files with 11 additions and 5 deletions

View File

@ -16,7 +16,7 @@ type Config struct {
BufferSize uint `default:"32" validate:"required|min:1"`
// Kb
Bitrate uint `default:"32" validate:"required|min:8|max:320"`
Bitrate uint64 `default:"32" validate:"required|min:8|max:320"`
Codec string `default:"libopus" validate:"required"`
Format string `default:"opus" validate:"required" `

View File

@ -5,6 +5,7 @@ import (
"log"
"net/http"
"net/url"
"strconv"
)
func handleGenres(w http.ResponseWriter, r *http.Request) {
@ -90,7 +91,12 @@ func handleGetM3u(w http.ResponseWriter, r *http.Request) {
}
func handleStream(w http.ResponseWriter, r *http.Request) {
err := stream(r.FormValue("url"), w)
bitrateKbps, err := strconv.ParseUint(r.FormValue("b"), 10, 64)
if err != nil {
bitrateKbps = config.Bitrate
}
err = stream(r.FormValue("url"), w, bitrateKbps)
if err != nil {
log.Println(err)
}

View File

@ -12,7 +12,7 @@ import (
"gopkg.in/djherbis/buffer.v1"
)
func stream(url string, w http.ResponseWriter) error {
func stream(url string, w http.ResponseWriter, bitrateKbps uint64) error {
if url == "" {
err := errors.New("empty url")
@ -24,10 +24,10 @@ func stream(url string, w http.ResponseWriter) error {
w.Header().Set("Accept-Ranges", "none")
w.WriteHeader(http.StatusOK)
return encode(url, w)
return encode(url, w, bitrateKbps)
}
func encode(url string, w io.Writer) error {
func encode(url string, w io.Writer, bitrateKbps uint64) error {
cmd := exec.Command("ffmpeg",
"-i", url,
"-vn",