bluray

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2024 License: BSD-3-Clause Imports: 6 Imported by: 0

README

libbluray的go封装 只支持了部分接口
私人使用的库 只测试了其中的部分接口

The Go wrapper for libbluray only supports a subset of the interfaces
This is a private library, and only some of the interfaces have been tested

Documentation

Index

Constants

View Source
const (
	TitlesAll            = 0
	TitlesFilterDupTitle = 0x01
	TitlesFilterDupClip  = 0x02
	TitlesRelevant       = TitlesFilterDupTitle | TitlesFilterDupClip
)

Variables

This section is empty.

Functions

func GetBDVersion

func GetBDVersion() string

Types

type BlurayClipInfo

type BlurayClipInfo struct {
	PktCount            uint32
	StillMode           string
	StillTime           uint16
	VideoStreamCount    uint8
	AudioStreamCount    uint8
	PgStreamCount       uint8
	IgStreamCount       uint8
	SecAudioStreamCount uint8
	SecVideoStreamCount uint8
	VideoStreams        []BlurayStreamInfo
	AudioStreams        []BlurayStreamInfo
	PgStreams           []BlurayStreamInfo
	IgStreams           []BlurayStreamInfo
	SecAudioStreams     []BlurayStreamInfo
	SecVideoStreams     []BlurayStreamInfo
	StartTime           uint64
	InTime              uint64
	OutTime             uint64
	ClipId              uint
}

type BlurayDiscInfo

type BlurayDiscInfo struct {
	BlurayDetected uint8 // 如果检测到BluRay光盘,值为1

	// 光盘ID
	DiscName    *string  // 可选的光盘名称,使用首选语言
	UDFVolumeID *string  // 可选的UDF卷标符
	DiscID      [20]byte // 光盘ID

	// HDMV / BD-J 标题
	NoMenuSupport      uint8 // 如果无法通过光盘上的菜单播放该光盘,值为1
	FirstPlaySupported uint8 // 如果光盘上有First Play标题且可以播放,值为1
	TopMenuSupported   uint8 // 如果光盘上有Top Menu标题且可以播放,值为1

	NumTitles uint32         // 光盘上的标题数量,不包括"First Play"和"Top Menu"
	Titles    []*BlurayTitle // 标题数组,索引为标题编号1...N
	FirstPlay *BlurayTitle   // titles[N+1],如果光盘上不存在则为NULL
	TopMenu   *BlurayTitle   // titles[0],如果光盘上不存在则为NULL

	NumHDMVTitles        uint32 // HDMV标题数量
	NumBDJTitles         uint32 // BD-J标题数量
	NumUnsupportedTitles uint32 // 不支持的标题数量

	// BD-J 信息(仅当光盘使用BD-J时有效)
	BDJDetected    uint8 // 如果光盘使用BD-J,值为1
	BDJSupported   uint8 // (已弃用)
	LibJVMDetected uint8 // 如果找到可用的Java虚拟机,值为1
	BDJHandled     uint8 // 如果找到可用的Java虚拟机和libbluray.jar,值为1

	BDJOrgID  [9]byte  // (BD-J)光盘组织ID
	BDJDiscID [33]byte // (BD-J)光盘ID

	// 光盘应用程序信息
	VideoFormat                 uint8    // 视频格式(bd_video_format_e)
	FrameRate                   uint8    // 帧率(bd_video_rate_e)
	ContentExist3D              uint8    // 如果光盘上存在3D内容,值为1
	InitialOutputModePreference uint8    // 0表示2D,1表示3D
	ProviderData                [32]byte // 内容提供者数据

	// AACS 信息(仅当光盘使用AACS时有效)
	AACDetected     uint8 // 如果光盘使用AACS加密,值为1
	LibAACSDetected uint8 // 如果找到可用的AACS解码库,值为1
	AACSHandled     uint8 // 如果光盘使用支持的AACS加密,值为1

	AACSErrorCode int // AACS错误代码(BD_AACS_)
	AACSMKBV      int // AACS MKB版本

	// BD+ 信息(仅当光盘使用BD+时有效)
	BDPlusDetected    uint8 // 如果光盘使用BD+加密,值为1
	LibBDPlusDetected uint8 // 如果找到可用的BD+解码库,值为1
	BDPlusHandled     uint8 // 如果光盘使用支持的BD+加密,值为1

	BDPlusGen  uint8  // BD+内容代码生成
	BDPlusDate uint32 // BD+内容代码发布日期 ((year<<16)|(month<<8)|day)

	// 光盘应用程序信息(libbluray > 1.2.0)
	InitialDynamicRangeType uint8 // 动态范围类型(bd_dynamic_range_type_e)
}

BlurayDiscInfo 表示BluRay光盘的信息

type BlurayMetaFile

type BlurayMetaFile struct {
	Data []byte
	Size int64
}

type BlurayStreamInfo

type BlurayStreamInfo struct {
	CodingType string
	Format     string
	Rate       string
	CharCode   uint8
	Lang       string
	Pid        uint16
	Aspect     string
	SubpathId  uint8
}

type BlurayTitle

type BlurayTitle struct {
	Name        *string // 可选的标题名称,使用首选语言
	Interactive uint8   // 如果标题是交互式的,值为1(在UI中不显示标题长度和播放位置)
	Accessible  uint8   // 如果允许跳转到该标题,值为1
	Hidden      uint8   // 如果在播放期间不显示标题编号,值为1

	BDJ   uint8  // 0表示HDMV标题,1表示BD-J标题
	IDRef uint32 // 电影对象编号/bdjo文件编号
}

BlurayTitle 表示BluRay标题的信息

type BlurayTitleChapter

type BlurayTitleChapter struct {
	Idx      uint32
	Start    uint64
	Duration uint64
	Offset   uint64
	ClipRef  uint
}

type BlurayTitleInfo

type BlurayTitleInfo struct {
	Idx              uint32
	Playlist         uint32
	Duration         uint64
	ClipCount        uint32
	AngleCount       uint8
	ChapterCount     uint32
	MarkCount        uint32
	Clips            []BlurayClipInfo
	Chapters         []BlurayTitleChapter
	Marks            []BlurayTitleMark
	MvcBaseViewRFlag uint8
}

type BlurayTitleMark

type BlurayTitleMark struct {
	Idx      uint32
	Type     int
	Start    uint64
	Duration uint64
	Offset   uint64
	ClipRef  uint
}

type DBStruct

type DBStruct struct {
	// contains filtered or unexported fields
}

func BDOpen

func BDOpen(path string) (*DBStruct, error)

BDOpen 打开蓝光光盘

func (*DBStruct) GetDiscInfo

func (d *DBStruct) GetDiscInfo() (*BlurayDiscInfo, error)

GetDiscInfo 获取蓝光光盘信息 const BlurayDiscInfo *bd_get_disc_info(BLURAY *bd);

func (*DBStruct) GetMainTitle

func (d *DBStruct) GetMainTitle() (uint32, error)

GetMainTitle 获取主标题 GetMainTitle Get the main title

func (*DBStruct) GetTitleInfo

func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo, error)

GetTitleInfo 从蓝光光盘获取标题信息 需要先调用 GetTitles() 获取标题列表 GetTitleInfo Get title info from a Blu-ray disc. GetTitles() must be called first to get the title list

func (*DBStruct) GetTitles

func (d *DBStruct) GetTitles(flags uint8, minTitleLength uint32) (uint32, error)

GetTitles 获取标题数量(播放列表) GetTitles Get the number of titles (playlists) on the disc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL