// Clip returns a filter that extracts a clip between begin and begin + duration (in seconds, starting at 0) // Il will try to include a key frame at the beginning, and keeps the same chunks as the origin media func Clip(m *mp4.MP4, begin, duration time.Duration) (ClipInterface, error) { end := begin + duration if begin < 0 { return nil, ErrClipOutside } if begin > m.Duration() { return nil, ErrClipOutside } if end > m.Duration() { end = m.Duration() } if end < 0 { return nil, ErrClipOutside } return &clipFilter{ m: m, end: end, begin: begin, }, nil }