Go语言技术文章
-
Go KSUID的完整二进制为20字节,区别于27字符Base62文本。本文给出固定记录保存与恢复函数,说明SQL默认值接口、短写、截断记录和旧数据迁移回退的处理方式。266 收藏 -
Go ksuid 解析 KSUID 后,Time() 适合得到可读的生成时间,Timestamp() 保留特殊纪元下的原始整数。本文说明两者的区别、错误处理和排序边界。491 收藏 -
Go oggvorbis.Reader.Read 返回的是按声道交错排列的 float32 样本值。本文用双声道示例说明如何按 L0、R0、L1、R1 拆分左右声道,并处理短读、EOF、声道数和完整帧边界。438 收藏 -
Go oggvorbis 可以从任意 io.Reader 解码,但 Length、Position 和 SetPosition 依赖底层 io.Seeker。本文对比流式输入与可定位输入,解释 Read 返回值、样本单位和 ReadAll 的内存边界。200 收藏 -
oggvorbis的Length和Position以采样帧计数,Read返回值则是交错float32元素数量。本文给出多声道单位换算、进度快照示例,以及未知长度、缓冲区和定位的边界处理。476 收藏 -
使用Go oggvorbis读取Vorbis注释头,解析TITLE、ARTIST、ALBUM等曲目字段。示例保留重复值与完整文本,说明接口选择、缺失标签、文件资源及输入位置的处理边界。305 收藏 -
使用 Go oggvorbis 解码 OGG/Vorbis 文件时,先读取声道数,再按“目标帧数×声道数”分配 float32 缓冲区,把 Read 返回的交错样本值换算为完整音频帧后分批消费。319 收藏 -
用 Go oggvorbis 读取 OGG/Vorbis 音频的采样率和声道数,比较 GetFormat 与 NewReader 两条路径,并说明 GetLength、io.ReadSeeker、samples 和解码值数量的边界。149 收藏 -
Go flac 的 StreamInfo.NSamples 表示每个声道的时间轴样本数,不是所有声道采样值的总和。本文区分 NSamples、NChannels、BlockSize 与 Subframe.NSamples,说明统计时长、展开缓冲区和逐帧计数的正确口径。240 收藏 -
Go flac 的Num在固定块与可变块模式下分别表示帧序号和首样本编号。本文说明名义块长换算、多声道时间轴与v1.0.14短尾帧边界。416 收藏 -
Go flac 读取 FLAC 时,StreamInfo 和其它元数据块属于流描述信息,音频帧才承载连续采样数据。本文按 Parse/ParseFile、New/Open、Next/ParseNext 的职责拆开说明选择方法。389 收藏 -
Go flac 的 Stream.Seek 接收绝对采样编号并返回目标帧的首采样编号。本文说明怎样用 NewSeek 建立可定位流,再用 ParseNext 读取帧内内容,并处理 seek table、输入类型和范围错误。257 收藏 -
Go mewkiz/flac可通过ParseNext逐帧解码,再遍历Subframes与各声道Samples。本文给出原创同步消费函数,说明帧与采样计量、Next的区别、错误处理和文件关闭。168 收藏 -
用 github.com/mewkiz/flac 读取 FLAC 的 STREAMINFO,解释 Open 与 ParseFile 的范围差异,以及采样率、声道、位深、总采样数和 MD5 字段的工程用法。323 收藏 -
Go go-audio/wav 的 Encoder.Close 会回写 RIFF 与 PCM data 长度,因此输出必须支持 io.WriteSeeker。本文用 os.File 示例说明 Write、Close 和底层文件关闭的正确顺序,并比较内存与管道输出的边界。282 收藏