From 0068eb3a31c764dc3fc204417b732f01ddf449f6 Mon Sep 17 00:00:00 2001 From: Bob <241886672+bob12224@users.noreply.github.com> Date: Tue, 28 Apr 2026 17:30:39 -0700 Subject: [PATCH] Undo to some changes --- go.sum | 2 ++ pkg/ffmpeg/browser.go | 42 ++++++++++++++++++++++++++---------------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/go.sum b/go.sum index fb5948561..72b222b94 100644 --- a/go.sum +++ b/go.sum @@ -187,6 +187,8 @@ github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/feederbox826/gosx-notifier v0.2.1 h1:47FdsdfVQUOkAlHdp9qevviVaGnNT152uMcgY91MiGs= +github.com/feederbox826/gosx-notifier v0.2.1/go.mod h1:R6rqw7VuwuiCuvsr7EOONmWq++CRA5Ijmkmx75/C3Fs= github.com/feederbox826/gosx-notifier v0.2.2 h1:26NkaJZ8Wzptx82R46c9pkVAcFwGSU7kxWrOKmRWlC0= github.com/feederbox826/gosx-notifier v0.2.2/go.mod h1:R6rqw7VuwuiCuvsr7EOONmWq++CRA5Ijmkmx75/C3Fs= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= diff --git a/pkg/ffmpeg/browser.go b/pkg/ffmpeg/browser.go index 9cd387cff..26b1b209c 100644 --- a/pkg/ffmpeg/browser.go +++ b/pkg/ffmpeg/browser.go @@ -18,6 +18,10 @@ var validForVp9 = []Container{Webm} var validForHevcMkv = []Container{Mp4, Matroska} var validForHevc = []Container{Mp4} +var validAudioForMkv = []ProbeAudioCodec{Aac, Mp3, Vorbis, Opus} +var validAudioForWebm = []ProbeAudioCodec{Vorbis, Opus} +var validAudioForMp4 = []ProbeAudioCodec{Aac, Mp3, Opus} + var ( // ErrUnsupportedVideoCodecForBrowser is returned when the video codec is not supported for browser streaming. ErrUnsupportedVideoCodecForBrowser = errors.New("unsupported video codec for browser") @@ -58,28 +62,34 @@ func isValidCodec(codecName string, supportedCodecs []string) bool { return false } -// TODO(audio): do we need to check ProbeAudioCodec for audio containers? -// func isValidAudio(audio ProbeAudioCodec, validCodecs []ProbeAudioCodec) bool { -// // if audio codec is missing or unsupported by ffmpeg we can't do anything about it -// // report it as valid so that the file can at least be streamed directly if the video codec is supported -// if audio == MissingUnsupported { -// return true -// } +func isValidAudio(audio ProbeAudioCodec, validCodecs []ProbeAudioCodec) bool { + // if audio codec is missing or unsupported by ffmpeg we can't do anything about it + // report it as valid so that the file can at least be streamed directly if the video codec is supported + if audio == MissingUnsupported { + return true + } -// for _, c := range validCodecs { -// if c == audio { -// return true -// } -// } + for _, c := range validCodecs { + if c == audio { + return true + } + } -// return false -// } + return false +} // IsValidAudioForContainer returns true if the audio codec is valid for the container. func IsValidAudioForContainer(audio ProbeAudioCodec, format Container) bool { - if format == Mp3Container { + switch format { + case Matroska: + return isValidAudio(audio, validAudioForMkv) + case Webm: + return isValidAudio(audio, validAudioForWebm) + case Mp4: + return isValidAudio(audio, validAudioForMp4) + case Mp3Container: + // TODO(audio): do we need to check ProbeAudioCodec for audio containers? (i.e. can `.mp3` contain a codec we need to transcode for? return true - // TODO(audio): do we need to check ProbeAudioCodec for audio containers? // return isValidAudio(audio, validAudioForMp3) } return false