Video Generator

Sign in to generate promotional videos

Only @yoyaku.fr accounts allowed
{{ authError }}

Click the button above to sign in

← Dashboard

Video Generator V3.0

YouTube 16:9 & Instagram 4:5 Portrait - Format-Aware Video Creation

1 Load Product
2 Choose Images
3 Generate

Enter the product SKU to load its data, images and audio tracks.

Tip: Share URL with ?sku=DISPLAY001 to auto-load a product

  • Select Face A: Click "A" button on the vinyl face image (required)
  • Select Face B: Click "B" button on the back image (optional)
  • Choose effect: Spin (rotating vinyl) or Static (fixed image)
  • Select tracks: Choose which tracks to generate videos for

Videos are being generated. Download individually or as ZIP when complete.

{{ error }}

Enter Product SKU

Loading product data...

Loading product data...

Product Information

{{ productTypeLabel }}

SKU: {{ product.sku }}

Title: {{ product.name }}

Artist(s): {{ product.attributes.artists.join(', ') || 'Unknown' }}

Label: {{ product.attributes.labels.join(', ') || 'Unknown' }}

Genres: {{ product.attributes.genres.join(', ') || 'Unknown' }}

Detection: {{ productType.reason }} ({{ Math.round(productType.confidence * 100) }}%)

{{ audioSourceData && audioSourceData.ui ? audioSourceData.ui.header : 'Tracks for Video Generation' }}

{{ audioSourceData.ui.badge }} Fallback {{ summary.matched }}/{{ summary.totalTracks }} matched

Video Generation

{{ selectedFormat === 'youtube' ? 'YouTube 16:9' : 'Instagram 4:5' }} {{ audioSourceData && audioSourceData.ui ? audioSourceData.ui.badge : 'Audio' }}
Estimated time: ~{{ Math.ceil(tracks.length * 2) }} minutes for {{ tracks.length }} track(s)
{{ selectedTracks.length }} selected
YT: {{ track.youtube.title }} ({{ track.youtube.title.length }}/100)
MASTER PREVIEW Matched Missing
{{ expandedTrack === index ? '▲' : '▼' }}
No master found
{{ uploadedMasters[index].filename }}
{{ getTrackJobStatus(index).status === 'pending' ? 'Queued...' : 'Generating video...' }} {{ getTrackJobStatus(index).progress }}%
{{ getTrackJobStatus(index).currentStage }}
Video ready! {{ getTrackJobStatus(index).fileSizeFormatted }} • Real video • Mock
Generation failed
{{ getTrackJobStatus(index).error }}
Generation cancelled

No tracks ready for generation. Provide master URLs for missing tracks.

Ready to generate {{ countReadyTracks() }} YouTube videos.

Image Selection

{{ imageSource }}
{{ trackAnalysis.format.replace('_', ' ') }} {{ trackAnalysis.sides.length }} sides: {{ trackAnalysis.sides.join(', ') }}
{{ image.analysis?.type || '?' }}
Covers: {{ getSidesForImage(image.filename).join(', ') }}
Face {{ side }}: {{ faceMapping[side] }} ({{ trackAnalysis.sideTrackCount[side] }} tracks) (select image)
Face A: {{ config.faceA.image }} (required)
Face B: {{ config.faceB.image }} (optional)
  • {{ err }}
  • {{ warn }}

Generating Video...

{{ progress.percent }}%

{{ progress.status }}

{{ log.time }} {{ log.message }}

Video Generated Successfully!

Filename: {{ result.filename }}

Duration: {{ result.duration }}

Size: {{ result.fileSize }}

Generation Progress: {{ getCompletedJobsCount() }}/{{ generationJobs.length }} completed ({{ getOverallProgress() }}%)
Current: {{ getCurrentTask().track.position }} - {{ getCurrentTask().track.title }} ({{ getCurrentTask().progress }}%) • {{ getCurrentTask().currentStage }}
Elapsed: {{ formatElapsedTime() }} Estimated remaining: ~{{ getEstimatedRemaining() }} min