feat(notes): support vidéo + transcodage audio AAC universel
Audio : ffmpeg transcode toute entrée (webm/ogg/m4a) vers AAC/m4a au moment de l'upload → lecture Safari iOS garantie. Vidéo : nouveau save_video(), webm transcodé en H.264/mp4, mp4/quicktime stocké directement. Lecteur <video> inline dans NoteCard. Frontend : - Bouton vidéo (fa-video) dans les actions de chaque note - Icônes fa-image / fa-microphone / fa-video / fa-location-dot dans la méta - Filtres rapides : Photo / Audio / Vidéo / GPS (avec icônes fa) - Boutons actions migrés vers icônes Font Awesome - client_max_body_size nginx : 15m → 200m pour les vidéos v0.5.4 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@ export interface NoteAttachment {
|
||||
id: string
|
||||
file_path: string | null
|
||||
thumbnail_path: string | null
|
||||
file_type: 'image' | 'audio' | null
|
||||
file_type: 'image' | 'audio' | 'video' | null
|
||||
original_name: string | null
|
||||
created_at: string
|
||||
}
|
||||
@@ -34,6 +34,7 @@ export interface NoteFilters {
|
||||
tag?: string
|
||||
has_photo?: boolean
|
||||
has_audio?: boolean
|
||||
has_video?: boolean
|
||||
has_gps?: boolean
|
||||
}
|
||||
|
||||
@@ -46,6 +47,7 @@ export async function fetchNotes(filters: NoteFilters = {}): Promise<Note[]> {
|
||||
if (filters.tag) params.set('tag', filters.tag)
|
||||
if (filters.has_photo !== undefined) params.set('has_photo', String(filters.has_photo))
|
||||
if (filters.has_audio !== undefined) params.set('has_audio', String(filters.has_audio))
|
||||
if (filters.has_video !== undefined) params.set('has_video', String(filters.has_video))
|
||||
if (filters.has_gps !== undefined) params.set('has_gps', String(filters.has_gps))
|
||||
const res = await fetch(`${BASE}/?${params}`)
|
||||
if (!res.ok) throw new Error('Erreur chargement notes')
|
||||
|
||||
Reference in New Issue
Block a user