提交代码-qjw

This commit is contained in:
Justyer
2024-08-01 09:51:09 +08:00
parent 448a22cf01
commit ccfdd36a82
4 changed files with 119 additions and 3 deletions

4
.gitignore vendored
View File

@@ -22,4 +22,6 @@
*.jpeg
*.mp3
*.aac
*.wav
*.wav
*.srt
*.ttf

View File

@@ -0,0 +1,46 @@
package main
import (
"context"
"fmt"
"github.com/fxkt-tech/liv/ffmpeg"
"github.com/fxkt-tech/liv/ffmpeg/codec"
"github.com/fxkt-tech/liv/ffmpeg/filter"
"github.com/fxkt-tech/liv/ffmpeg/input"
"github.com/fxkt-tech/liv/ffmpeg/output"
)
func main() {
var (
ctx = context.Background()
// inputs
iMain = input.WithSimple("in.mp4")
// filters
fDelogo = filter.Crop("iw*0.8", "ih*0.08", "iw*0.1", "ih*0.91").Use(iMain.V())
fGBlur = filter.GBlur(25).Use(fDelogo)
fOverlay = filter.Overlay("W*0.1", "H*0.91").Use(iMain.V(), fGBlur)
oOnly = output.New(
output.Map(fOverlay),
output.Map(iMain.MayA()),
output.VideoCodec(codec.X264),
output.AudioCodec(codec.Copy),
output.File("out.mp4"),
)
)
err := ffmpeg.New(
ffmpeg.WithDebug(true),
ffmpeg.WithDry(true),
).
AddInput(iMain).
AddFilter(fDelogo, fGBlur, fOverlay).
AddOutput(oOnly).
Run(ctx)
if err != nil {
fmt.Println(err)
}
}

View File

@@ -0,0 +1,47 @@
package main
import (
"context"
"fmt"
"github.com/fxkt-tech/liv/ffmpeg"
"github.com/fxkt-tech/liv/ffmpeg/codec"
"github.com/fxkt-tech/liv/ffmpeg/filter"
"github.com/fxkt-tech/liv/ffmpeg/input"
"github.com/fxkt-tech/liv/ffmpeg/output"
)
func main() {
var (
ctx = context.Background()
// inputs
iMain = input.WithSimple("in.mp4")
// filters
fDelogo = filter.Crop("iw*0.8", "ih*0.08", "iw*0.1", "ih*0.91").Use(iMain.V())
fGBlur = filter.GBlur(25).Use(fDelogo)
fOverlay = filter.Overlay("W*0.1", "H*0.91").Use(iMain.V(), fGBlur)
fSubtitles = filter.Subtitles("subtitle.srt", "", "MarginV=26,Alignment=6").Use(fOverlay)
oOnly = output.New(
output.Map(fSubtitles),
output.Map(iMain.MayA()),
output.VideoCodec(codec.X264),
output.AudioCodec(codec.Copy),
output.File("out2.mp4"),
)
)
err := ffmpeg.New(
ffmpeg.WithDebug(true),
ffmpeg.WithDry(true),
).
AddInput(iMain).
AddFilter(fDelogo, fGBlur, fOverlay, fSubtitles).
AddOutput(oOnly).
Run(ctx)
if err != nil {
fmt.Println(err)
}
}

View File

@@ -87,12 +87,22 @@ func Color(c string, w, h int32, d float32) *SingleFilter {
}
// 裁切
func Crop[T Expr](x, y, w, h T) *SingleFilter {
func Crop[T Expr](w, h, x, y T) *SingleFilter {
return &SingleFilter{
name: naming.Default.Gen(),
content: fmt.Sprintf(
"crop=%v:%v:%v:%v",
x, y, w, h,
w, h, x, y,
),
}
}
// 高斯模糊
func GBlur(sigma int32) *SingleFilter {
return &SingleFilter{
name: naming.Default.Gen(),
content: fmt.Sprintf(
"gblur=sigma=%d", sigma,
),
}
}
@@ -108,6 +118,17 @@ func Fade(t string, st, d float32, c string) *SingleFilter {
}
}
// 字幕
func Subtitles(filename, fontsdir, forceStyle string) *SingleFilter {
return &SingleFilter{
name: naming.Default.Gen(),
content: fmt.Sprintf(
"subtitles=f=%s:fontsdir=%s:force_style='%s'",
filename, fontsdir, forceStyle,
),
}
}
// 视频帧显示时间戳
func SetPTS(expr string) *SingleFilter {
return &SingleFilter{