feat: seek() filter and ffmpeg.SeekPosition, ffmpeg.SeekDuration
* feat: seek() filter and ffmpeg.SeekPosition, ffmpeg.SeekDuration
This commit is contained in:
parent
7350619928
commit
38b1b200ff
11 changed files with 60 additions and 20 deletions
|
|
@ -107,13 +107,21 @@ func (av *AVContext) SelectPosition(f float64) (err error) {
|
|||
func (av *AVContext) SelectDuration(ts time.Duration) (err error) {
|
||||
if ts > 0 {
|
||||
av.selectedDuration = ts
|
||||
if err = seekDuration(av, ts); err != nil {
|
||||
if err = av.SeekDuration(ts); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return av.ProcessFrames(-1)
|
||||
}
|
||||
|
||||
func (av *AVContext) SeekPosition(f float64) error {
|
||||
return av.SeekDuration(av.positionToDuration(f))
|
||||
}
|
||||
|
||||
func (av *AVContext) SeekDuration(ts time.Duration) error {
|
||||
return seekDuration(av, ts)
|
||||
}
|
||||
|
||||
func (av *AVContext) Export(bands int) (buf []byte, err error) {
|
||||
if err = av.ProcessFrames(-1); err != nil {
|
||||
return
|
||||
|
|
|
|||
|
|
@ -67,17 +67,6 @@ func TestAVContext(t *testing.T) {
|
|||
stats, err := os.Stat(path)
|
||||
require.NoError(t, err)
|
||||
av, err := LoadAVContext(reader, stats.Size())
|
||||
require.NoError(t, err)
|
||||
defer av.Close()
|
||||
if n == 10 {
|
||||
require.NoError(t, av.ProcessFrames(n))
|
||||
} else if n == 99999 {
|
||||
require.NoError(t, av.SelectDuration(time.Second))
|
||||
} else if n == 9999 {
|
||||
require.NoError(t, av.SelectPosition(0.7))
|
||||
} else if n > -1 {
|
||||
require.NoError(t, av.SelectFrame(n))
|
||||
}
|
||||
meta := av.Metadata()
|
||||
metaBuf, err := json.Marshal(meta)
|
||||
require.NoError(t, err)
|
||||
|
|
@ -87,6 +76,19 @@ func TestAVContext(t *testing.T) {
|
|||
} else {
|
||||
require.NoError(t, os.WriteFile(goldenFile, metaBuf, 0666))
|
||||
}
|
||||
require.NoError(t, err)
|
||||
defer av.Close()
|
||||
if n == 10 {
|
||||
require.NoError(t, av.ProcessFrames(n))
|
||||
} else if n == 99999 {
|
||||
require.NoError(t, av.SelectDuration(time.Second))
|
||||
} else if n == 9999 {
|
||||
require.NoError(t, av.SelectPosition(0.7))
|
||||
} else if n == 5 {
|
||||
require.NoError(t, av.SelectFrame(n))
|
||||
} else {
|
||||
require.NoError(t, av.SeekPosition(0.7))
|
||||
}
|
||||
bands := 4
|
||||
if n == 99999 {
|
||||
bands = 999
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue