Documentation ¶
Index ¶
- Constants
- Variables
- type Color
- type Item
- type Justification
- type Line
- type LineItem
- type Metadata
- type Options
- type Region
- type SSAOptions
- type STLOptions
- type STLPosition
- type Style
- type StyleAttributes
- type Subtitles
- func NewSubtitles() *Subtitles
- func Open(o Options) (s *Subtitles, err error)
- func OpenFile(filename string) (*Subtitles, error)
- func ReadFromSRT(i io.Reader) (o *Subtitles, err error)
- func ReadFromSSA(i io.Reader) (o *Subtitles, err error)
- func ReadFromSSAWithOptions(i io.Reader, opts SSAOptions) (o *Subtitles, err error)
- func ReadFromSTL(i io.Reader, opts STLOptions) (o *Subtitles, err error)
- func ReadFromTTML(i io.Reader) (o *Subtitles, err error)
- func ReadFromTeletext(r io.Reader, o TeletextOptions) (s *Subtitles, err error)
- func ReadFromWebVTT(i io.Reader) (o *Subtitles, err error)
- func (s *Subtitles) Add(d time.Duration)
- func (s *Subtitles) ApplyLinearCorrection(actual1, desired1, actual2, desired2 time.Duration)
- func (s Subtitles) Duration() time.Duration
- func (s *Subtitles) ForceDuration(d time.Duration, addDummyItem bool)
- func (s *Subtitles) Fragment(f time.Duration)
- func (s Subtitles) IsEmpty() bool
- func (s *Subtitles) Merge(i *Subtitles)
- func (s *Subtitles) Optimize()
- func (s *Subtitles) Order()
- func (s *Subtitles) RemoveStyling()
- func (s *Subtitles) Unfragment()
- func (s Subtitles) Write(dst string) (err error)
- func (s Subtitles) WriteToSRT(o io.Writer) (err error)
- func (s Subtitles) WriteToSSA(o io.Writer) (err error)
- func (s Subtitles) WriteToSTL(o io.Writer) (err error)
- func (s Subtitles) WriteToTTML(o io.Writer, opts ...WriteToTTMLOption) (err error)
- func (s Subtitles) WriteToWebVTT(o io.Writer) (err error)
- type TTMLIn
- type TTMLInDuration
- type TTMLInHeader
- type TTMLInItem
- type TTMLInItems
- type TTMLInMetadata
- type TTMLInRegion
- type TTMLInStyle
- type TTMLInStyleAttributes
- type TTMLInSubtitle
- type TTMLOut
- type TTMLOutDuration
- type TTMLOutHeader
- type TTMLOutItem
- type TTMLOutMetadata
- type TTMLOutRegion
- type TTMLOutStyle
- type TTMLOutStyleAttributes
- type TTMLOutSubtitle
- type TeletextOptions
- type WebVTTTag
- type WebVTTTimestampMap
- type WriteToTTMLOption
- type WriteToTTMLOptions
Constants ¶
const ( LanguageChinese = "chinese" LanguageEnglish = "english" LanguageFrench = "french" LanguageJapanese = "japanese" LanguageNorwegian = "norwegian" )
Languages
Variables ¶
var ( ColorBlack = &Color{} ColorBlue = &Color{Blue: 255} ColorCyan = &Color{Blue: 255, Green: 255} ColorGray = &Color{Blue: 128, Green: 128, Red: 128} ColorGreen = &Color{Green: 128} ColorLime = &Color{Green: 255} ColorMagenta = &Color{Blue: 255, Red: 255} ColorMaroon = &Color{Red: 128} ColorOlive = &Color{Green: 128, Red: 128} ColorPurple = &Color{Blue: 128, Red: 128} ColorRed = &Color{Red: 255} ColorSilver = &Color{Blue: 192, Green: 192, Red: 192} ColorTeal = &Color{Blue: 128, Green: 128} ColorYellow = &Color{Green: 255, Red: 255} ColorWhite = &Color{Blue: 255, Green: 255, Red: 255} )
Colors
var ( ErrInvalidExtension = errors.New("astisub: invalid extension") ErrNoSubtitlesToWrite = errors.New("astisub: no subtitles to write") )
Errors
var ( JustificationUnchanged = Justification(1) JustificationLeft = Justification(2) JustificationCentered = Justification(3) JustificationRight = Justification(4) )
var (
BytesBOM = []byte{239, 187, 191}
)
Bytes
var (
ErrNoValidTeletextPID = errors.New("astisub: no valid teletext PID")
)
Errors
var Now = func() time.Time { return time.Now() }
Now allows testing functions using it
Functions ¶
This section is empty.
Types ¶
type Color ¶
type Color struct {
Alpha, Blue, Green, Red uint8
}
Color represents a color
func (*Color) TTMLString ¶
TTMLString expresses the color as a TTML string
type Item ¶
type Item struct { Comments []string Index int EndAt time.Duration InlineStyle *StyleAttributes Lines []Line Region *Region StartAt time.Duration Style *Style }
Item represents a text to show between 2 time boundaries with formatting
type Justification ¶ added in v0.12.0
type Justification int
type LineItem ¶
type LineItem struct { InlineStyle *StyleAttributes StartAt time.Duration Style *Style Text string }
LineItem represents a formatted line item
type Metadata ¶
type Metadata struct { Comments []string Framerate int Language string SSACollisions string SSAOriginalEditing string SSAOriginalScript string SSAOriginalTiming string SSAOriginalTranslation string SSAPlayDepth *int SSAPlayResX, SSAPlayResY *int SSAScriptType string SSAScriptUpdatedBy string SSASynchPoint string SSATimer *float64 SSAUpdateDetails string SSAWrapStyle string STLCountryOfOrigin string STLCreationDate *time.Time STLDisplayStandardCode string STLEditorContactDetails string STLEditorName string STLMaximumNumberOfDisplayableCharactersInAnyTextRow *int STLMaximumNumberOfDisplayableRows *int STLOriginalEpisodeTitle string STLPublisher string STLRevisionDate *time.Time STLRevisionNumber int STLSubtitleListReferenceCode string STLTimecodeStartOfProgramme time.Duration STLTranslatedEpisodeTitle string STLTranslatedProgramTitle string STLTranslatorContactDetails string STLTranslatorName string Title string TTMLCopyright string WebVTTTimestampMap *WebVTTTimestampMap }
Metadata represents metadata TODO Merge attributes
type Options ¶
type Options struct { Filename string Teletext TeletextOptions STL STLOptions }
Options represents open or write options
type Region ¶
type Region struct { ID string InlineStyle *StyleAttributes Style *Style }
Region represents a subtitle's region
type SSAOptions ¶ added in v0.20.0
SSAOptions
type STLOptions ¶ added in v0.15.0
type STLOptions struct { // IgnoreTimecodeStartOfProgramme - set STLTimecodeStartOfProgramme to zero before parsing IgnoreTimecodeStartOfProgramme bool }
STLOptions represents STL parsing options
type STLPosition ¶ added in v0.12.0
type Style ¶
type Style struct { ID string InlineStyle *StyleAttributes Style *Style }
Style represents a subtitle's style
type StyleAttributes ¶
type StyleAttributes struct { SRTBold bool SRTColor *string SRTItalics bool SRTPosition byte // 1-9 numpad layout SRTUnderline bool SSAAlignment *int SSAAlphaLevel *float64 SSAAngle *float64 // degrees SSABackColour *Color SSABold *bool SSABorderStyle *int SSAEffect string SSAEncoding *int SSAFontName string SSAFontSize *float64 SSAItalic *bool SSALayer *int SSAMarginLeft *int // pixels SSAMarginRight *int // pixels SSAMarginVertical *int // pixels SSAMarked *bool SSAOutline *float64 // pixels SSAOutlineColour *Color SSAPrimaryColour *Color SSAScaleX *float64 // % SSAScaleY *float64 // % SSASecondaryColour *Color SSAShadow *float64 // pixels SSASpacing *float64 // pixels SSAStrikeout *bool SSAUnderline *bool STLBoxing *bool STLItalics *bool STLJustification *Justification STLPosition *STLPosition STLUnderline *bool TeletextColor *Color TeletextDoubleHeight *bool TeletextDoubleSize *bool TeletextDoubleWidth *bool TeletextSpacesAfter *int TeletextSpacesBefore *int // TODO Use pointers with real types below TTMLBackgroundColor *string // https://htmlcolorcodes.com/fr/ TTMLColor *string TTMLDirection *string TTMLDisplay *string TTMLDisplayAlign *string TTMLExtent *string TTMLFontFamily *string TTMLFontSize *string TTMLFontStyle *string TTMLFontWeight *string TTMLLineHeight *string TTMLOpacity *string TTMLOrigin *string TTMLOverflow *string TTMLPadding *string TTMLShowBackground *string TTMLTextAlign *string TTMLTextDecoration *string TTMLTextOutline *string TTMLUnicodeBidi *string TTMLVisibility *string TTMLWrapOption *string TTMLWritingMode *string TTMLZIndex *int WebVTTAlign string WebVTTBold bool WebVTTItalics bool WebVTTLine string WebVTTLines int WebVTTPosition string WebVTTRegionAnchor string WebVTTScroll string WebVTTSize string WebVTTStyles []string WebVTTTags []WebVTTTag WebVTTUnderline bool WebVTTVertical string WebVTTViewportAnchor string WebVTTWidth string }
StyleAttributes represents style attributes
type Subtitles ¶
type Subtitles struct { Items []*Item Metadata *Metadata Regions map[string]*Region Styles map[string]*Style }
Subtitles represents an ordered list of items with formatting
func ReadFromSRT ¶
ReadFromSRT parses an .srt content
func ReadFromSSA ¶
ReadFromSSA parses an .ssa content
func ReadFromSSAWithOptions ¶ added in v0.20.0
func ReadFromSSAWithOptions(i io.Reader, opts SSAOptions) (o *Subtitles, err error)
ReadFromSSAWithOptions parses an .ssa content
func ReadFromSTL ¶
func ReadFromSTL(i io.Reader, opts STLOptions) (o *Subtitles, err error)
ReadFromSTL parses an .stl content
func ReadFromTTML ¶
ReadFromTTML parses a .ttml content
func ReadFromTeletext ¶
func ReadFromTeletext(r io.Reader, o TeletextOptions) (s *Subtitles, err error)
ReadFromTeletext parses a teletext content http://www.etsi.org/deliver/etsi_en/300400_300499/300472/01.03.01_60/en_300472v010301p.pdf http://www.etsi.org/deliver/etsi_i_ets/300700_300799/300706/01_60/ets_300706e01p.pdf TODO Update README TODO Add tests
func ReadFromWebVTT ¶
ReadFromWebVTT parses a .vtt content TODO Tags (u, i, b) TODO Class
func (*Subtitles) Add ¶
Add adds a duration to each time boundaries. As in the time package, duration can be negative.
func (*Subtitles) ApplyLinearCorrection ¶ added in v0.21.0
ApplyLinearCorrection applies linear correction
func (*Subtitles) ForceDuration ¶
ForceDuration updates the subtitles duration. If requested duration is bigger, then we create a dummy item. If requested duration is smaller, then we remove useless items and we cut the last item or add a dummy item.
func (*Subtitles) RemoveStyling ¶
func (s *Subtitles) RemoveStyling()
RemoveStyling removes the styling from the subtitles
func (Subtitles) WriteToSRT ¶
WriteToSRT writes subtitles in .srt format
func (Subtitles) WriteToSSA ¶
WriteToSSA writes subtitles in .ssa format
func (Subtitles) WriteToSTL ¶
WriteToSTL writes subtitles in .stl format
func (Subtitles) WriteToTTML ¶
func (s Subtitles) WriteToTTML(o io.Writer, opts ...WriteToTTMLOption) (err error)
WriteToTTML writes subtitles in .ttml format
type TTMLIn ¶
type TTMLIn struct { Framerate int `xml:"frameRate,attr"` Lang string `xml:"lang,attr"` Metadata TTMLInMetadata `xml:"head>metadata"` Regions []TTMLInRegion `xml:"head>layout>region"` Styles []TTMLInStyle `xml:"head>styling>style"` Subtitles []TTMLInSubtitle `xml:"body>div>p"` Tickrate int `xml:"tickRate,attr"` XMLName xml.Name `xml:"tt"` }
TTMLIn represents an input TTML that must be unmarshaled We split it from the output TTML as we can't add strict namespace without breaking retrocompatibility
type TTMLInDuration ¶
type TTMLInDuration struct {
// contains filtered or unexported fields
}
TTMLInDuration represents an input TTML duration
func (*TTMLInDuration) UnmarshalText ¶
func (d *TTMLInDuration) UnmarshalText(i []byte) (err error)
UnmarshalText implements the TextUnmarshaler interface Possible formats are: - hh:mm:ss.mmm - hh:mm:ss:fff (fff being frames) - [ticks]t ([ticks] being the tick amount)
type TTMLInHeader ¶
type TTMLInHeader struct { ID string `xml:"id,attr,omitempty"` Style string `xml:"style,attr,omitempty"` TTMLInStyleAttributes }
TTMLInHeader represents an input TTML header
type TTMLInItem ¶
type TTMLInItem struct { Style string `xml:"style,attr,omitempty"` Text string `xml:",chardata"` TTMLInStyleAttributes XMLName xml.Name }
TTMLInItem represents an input TTML item
type TTMLInItems ¶
type TTMLInItems []TTMLInItem
TTMLInItems represents input TTML items
func (*TTMLInItems) UnmarshalXML ¶
func (i *TTMLInItems) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)
UnmarshalXML implements the XML unmarshaler interface
type TTMLInMetadata ¶
TTMLInMetadata represents an input TTML Metadata
type TTMLInRegion ¶
type TTMLInRegion struct { TTMLInHeader XMLName xml.Name `xml:"region"` }
TTMLInRegion represents an input TTML region
type TTMLInStyle ¶
type TTMLInStyle struct { TTMLInHeader XMLName xml.Name `xml:"style"` }
TTMLInStyle represents an input TTML style
type TTMLInStyleAttributes ¶
type TTMLInStyleAttributes struct { BackgroundColor *string `xml:"backgroundColor,attr,omitempty"` Color *string `xml:"color,attr,omitempty"` Direction *string `xml:"direction,attr,omitempty"` Display *string `xml:"display,attr,omitempty"` DisplayAlign *string `xml:"displayAlign,attr,omitempty"` Extent *string `xml:"extent,attr,omitempty"` FontFamily *string `xml:"fontFamily,attr,omitempty"` FontSize *string `xml:"fontSize,attr,omitempty"` FontStyle *string `xml:"fontStyle,attr,omitempty"` FontWeight *string `xml:"fontWeight,attr,omitempty"` LineHeight *string `xml:"lineHeight,attr,omitempty"` Opacity *string `xml:"opacity,attr,omitempty"` Origin *string `xml:"origin,attr,omitempty"` Overflow *string `xml:"overflow,attr,omitempty"` Padding *string `xml:"padding,attr,omitempty"` ShowBackground *string `xml:"showBackground,attr,omitempty"` TextAlign *string `xml:"textAlign,attr,omitempty"` TextDecoration *string `xml:"textDecoration,attr,omitempty"` TextOutline *string `xml:"textOutline,attr,omitempty"` UnicodeBidi *string `xml:"unicodeBidi,attr,omitempty"` Visibility *string `xml:"visibility,attr,omitempty"` WrapOption *string `xml:"wrapOption,attr,omitempty"` WritingMode *string `xml:"writingMode,attr,omitempty"` ZIndex *int `xml:"zIndex,attr,omitempty"` }
TTMLInStyleAttributes represents input TTML style attributes
type TTMLInSubtitle ¶
type TTMLInSubtitle struct { Begin *TTMLInDuration `xml:"begin,attr,omitempty"` End *TTMLInDuration `xml:"end,attr,omitempty"` ID string `xml:"id,attr,omitempty"` Items string `xml:",innerxml"` // We must store inner XML here since there's no tag to describe both any tag and chardata Region string `xml:"region,attr,omitempty"` Style string `xml:"style,attr,omitempty"` TTMLInStyleAttributes }
TTMLInSubtitle represents an input TTML subtitle
type TTMLOut ¶
type TTMLOut struct { Lang string `xml:"xml:lang,attr,omitempty"` Metadata *TTMLOutMetadata `xml:"head>metadata,omitempty"` Styles []TTMLOutStyle `xml:"head>styling>style,omitempty"` //!\\ Order is important! Keep Styling above Layout Regions []TTMLOutRegion `xml:"head>layout>region,omitempty"` Subtitles []TTMLOutSubtitle `xml:"body>div>p,omitempty"` XMLName xml.Name `xml:"http://www.w3.org/ns/ttml tt"` XMLNamespaceTTM string `xml:"xmlns:ttm,attr"` XMLNamespaceTTS string `xml:"xmlns:tts,attr"` }
TTMLOut represents an output TTML that must be marshaled We split it from the input TTML as this time we'll add strict namespaces
type TTMLOutDuration ¶
TTMLOutDuration represents an output TTML duration
func (TTMLOutDuration) MarshalText ¶
func (t TTMLOutDuration) MarshalText() ([]byte, error)
MarshalText implements the TextMarshaler interface
type TTMLOutHeader ¶
type TTMLOutHeader struct { ID string `xml:"xml:id,attr,omitempty"` Style string `xml:"style,attr,omitempty"` TTMLOutStyleAttributes }
TTMLOutHeader represents an output TTML header
type TTMLOutItem ¶
type TTMLOutItem struct { Style string `xml:"style,attr,omitempty"` Text string `xml:",chardata"` TTMLOutStyleAttributes XMLName xml.Name }
TTMLOutItem represents an output TTML Item
type TTMLOutMetadata ¶
type TTMLOutMetadata struct { Copyright string `xml:"ttm:copyright,omitempty"` Title string `xml:"ttm:title,omitempty"` }
TTMLOutMetadata represents an output TTML Metadata
type TTMLOutRegion ¶
type TTMLOutRegion struct { TTMLOutHeader XMLName xml.Name `xml:"region"` }
TTMLOutRegion represents an output TTML region
type TTMLOutStyle ¶
type TTMLOutStyle struct { TTMLOutHeader XMLName xml.Name `xml:"style"` }
TTMLOutStyle represents an output TTML style
type TTMLOutStyleAttributes ¶
type TTMLOutStyleAttributes struct { BackgroundColor *string `xml:"tts:backgroundColor,attr,omitempty"` Color *string `xml:"tts:color,attr,omitempty"` Direction *string `xml:"tts:direction,attr,omitempty"` Display *string `xml:"tts:display,attr,omitempty"` DisplayAlign *string `xml:"tts:displayAlign,attr,omitempty"` Extent *string `xml:"tts:extent,attr,omitempty"` FontFamily *string `xml:"tts:fontFamily,attr,omitempty"` FontSize *string `xml:"tts:fontSize,attr,omitempty"` FontStyle *string `xml:"tts:fontStyle,attr,omitempty"` FontWeight *string `xml:"tts:fontWeight,attr,omitempty"` LineHeight *string `xml:"tts:lineHeight,attr,omitempty"` Opacity *string `xml:"tts:opacity,attr,omitempty"` Origin *string `xml:"tts:origin,attr,omitempty"` Overflow *string `xml:"tts:overflow,attr,omitempty"` Padding *string `xml:"tts:padding,attr,omitempty"` ShowBackground *string `xml:"tts:showBackground,attr,omitempty"` TextAlign *string `xml:"tts:textAlign,attr,omitempty"` TextDecoration *string `xml:"tts:textDecoration,attr,omitempty"` TextOutline *string `xml:"tts:textOutline,attr,omitempty"` UnicodeBidi *string `xml:"tts:unicodeBidi,attr,omitempty"` Visibility *string `xml:"tts:visibility,attr,omitempty"` WrapOption *string `xml:"tts:wrapOption,attr,omitempty"` WritingMode *string `xml:"tts:writingMode,attr,omitempty"` ZIndex *int `xml:"tts:zIndex,attr,omitempty"` }
TTMLOutStyleAttributes represents output TTML style attributes
type TTMLOutSubtitle ¶
type TTMLOutSubtitle struct { Begin TTMLOutDuration `xml:"begin,attr"` End TTMLOutDuration `xml:"end,attr"` ID string `xml:"id,attr,omitempty"` Items []TTMLOutItem Region string `xml:"region,attr,omitempty"` Style string `xml:"style,attr,omitempty"` TTMLOutStyleAttributes }
TTMLOutSubtitle represents an output TTML subtitle
type TeletextOptions ¶
TeletextOptions represents teletext options
type WebVTTTimestampMap ¶ added in v0.27.0
WebVTTTimestampMap is a structure for storing timestamps for WEBVTT's X-TIMESTAMP-MAP feature commonly used for syncing cue times with MPEG-TS streams.
func (*WebVTTTimestampMap) Offset ¶ added in v0.27.0
func (t *WebVTTTimestampMap) Offset() time.Duration
Offset calculates and returns the time offset described by the timestamp map.
func (*WebVTTTimestampMap) String ¶ added in v0.27.0
func (t *WebVTTTimestampMap) String() string
String implements Stringer interface for TimestampMap, returning the fully formatted header string for the instance.
type WriteToTTMLOption ¶ added in v0.28.0
type WriteToTTMLOption func(o *WriteToTTMLOptions)
WriteToTTMLOption represents a WriteToTTML option.
func WriteToTTMLWithIndentOption ¶ added in v0.28.0
func WriteToTTMLWithIndentOption(indent string) WriteToTTMLOption
WriteToTTMLWithIndentOption sets the indent option.
type WriteToTTMLOptions ¶ added in v0.28.0
type WriteToTTMLOptions struct {
Indent string // Default is 4 spaces.
}
WriteToTTMLOptions represents TTML write options.