Add video codec profiles (#5154)

This commit is contained in:
NodudeWasTaken
2024-08-27 10:03:48 +02:00
committed by GitHub
parent 3089e1ad69
commit ce47efc415
5 changed files with 80 additions and 49 deletions

View File

@@ -1,25 +1,32 @@
package ffmpeg
type VideoCodec string
type VideoCodec struct {
Name string // The full name of the codec including profile/quality
CodeName string // The core codec name without profile/quality suffix
}
func makeVideoCodec(name string, codename string) VideoCodec {
return VideoCodec{name, codename}
}
func (c VideoCodec) Args() []string {
if c == "" {
if c.CodeName == "" {
return nil
}
return []string{"-c:v", string(c)}
return []string{"-c:v", string(c.CodeName)}
}
var (
// Software codec's
VideoCodecLibX264 VideoCodec = "libx264"
VideoCodecLibWebP VideoCodec = "libwebp"
VideoCodecBMP VideoCodec = "bmp"
VideoCodecMJpeg VideoCodec = "mjpeg"
VideoCodecVP9 VideoCodec = "libvpx-vp9"
VideoCodecVPX VideoCodec = "libvpx"
VideoCodecLibX265 VideoCodec = "libx265"
VideoCodecCopy VideoCodec = "copy"
VideoCodecLibX264 = makeVideoCodec("x264", "libx264")
VideoCodecLibWebP = makeVideoCodec("WebP", "libwebp")
VideoCodecBMP = makeVideoCodec("BMP", "bmp")
VideoCodecMJpeg = makeVideoCodec("Jpeg", "mjpeg")
VideoCodecVP9 = makeVideoCodec("VPX-VP9", "libvpx-vp9")
VideoCodecVPX = makeVideoCodec("VPX-VP8", "libvpx")
VideoCodecLibX265 = makeVideoCodec("x265", "libx265")
VideoCodecCopy = makeVideoCodec("Copy", "copy")
)
type AudioCodec string