NewAudioFromFile 从文件创建音频
(path string)
| 224 | |
| 225 | // NewAudioFromFile 从文件创建音频 |
| 226 | func NewAudioFromFile(path string) (*Audio, error) { |
| 227 | data, err := os.ReadFile(path) |
| 228 | if err != nil { |
| 229 | return nil, fmt.Errorf("failed to read audio file: %w", err) |
| 230 | } |
| 231 | |
| 232 | audio := &Audio{ |
| 233 | Name: filepath.Base(path), |
| 234 | Size: int64(len(data)), |
| 235 | Data: base64.StdEncoding.EncodeToString(data), |
| 236 | } |
| 237 | |
| 238 | // 根据扩展名设置 MIME 类型 |
| 239 | ext := strings.ToLower(filepath.Ext(path)) |
| 240 | switch ext { |
| 241 | case ".mp3": |
| 242 | audio.MimeType = "audio/mpeg" |
| 243 | case ".wav": |
| 244 | audio.MimeType = "audio/wav" |
| 245 | case ".ogg": |
| 246 | audio.MimeType = "audio/ogg" |
| 247 | case ".m4a": |
| 248 | audio.MimeType = "audio/mp4" |
| 249 | case ".flac": |
| 250 | audio.MimeType = "audio/flac" |
| 251 | default: |
| 252 | audio.MimeType = "audio/*" |
| 253 | } |
| 254 | |
| 255 | return audio, nil |
| 256 | } |
| 257 | |
| 258 | // File 通用文件 |
| 259 | type File struct { |