thumbails fix
This commit is contained in:
@@ -3,6 +3,8 @@ import 'dart:html' as html;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
import 'package:chewie/chewie.dart';
|
||||
import 'package:get_thumbnail_video/index.dart';
|
||||
import 'package:get_thumbnail_video/video_thumbnail.dart';
|
||||
import 'package:energy_media/models/media/media_models.dart';
|
||||
import 'package:energy_media/providers/videos_provider.dart';
|
||||
import 'package:energy_media/theme/theme.dart';
|
||||
@@ -130,6 +132,37 @@ class _PremiumUploadDialogState extends State<PremiumUploadDialog> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Genera un thumbnail automáticamente desde el video si no se seleccionó poster
|
||||
Future<void> _generateThumbnailFromVideo() async {
|
||||
if (_videoBlobUrl == null || selectedVideo == null) return;
|
||||
|
||||
try {
|
||||
// Generar thumbnail desde el video
|
||||
final thumbnailBytes = await VideoThumbnail.thumbnailData(
|
||||
video: _videoBlobUrl!,
|
||||
imageFormat: ImageFormat.JPEG,
|
||||
maxWidth: 1280, // Alta calidad para poster
|
||||
quality: 85,
|
||||
);
|
||||
|
||||
if (thumbnailBytes != null && thumbnailBytes.isNotEmpty) {
|
||||
// Actualizar el provider con el thumbnail generado (sin mostrar en UI)
|
||||
widget.provider.webPosterBytes = thumbnailBytes;
|
||||
widget.provider.posterName =
|
||||
'thumbnail_${videoFileName ?? 'video'}.jpg';
|
||||
widget.provider.posterFileExtension = '.jpg';
|
||||
|
||||
// NO actualizar selectedPoster ni posterFileName para que no se muestre en UI
|
||||
// El thumbnail está disponible en el provider para subir automáticamente
|
||||
|
||||
debugPrint('✅ Thumbnail generado automáticamente (oculto en UI)');
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint('⚠️ Error generando thumbnail automático: $e');
|
||||
// No es crítico, el video se subirá sin poster
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _uploadVideo() async {
|
||||
if (titleController.text.isEmpty ||
|
||||
selectedVideo == null ||
|
||||
@@ -148,6 +181,11 @@ class _PremiumUploadDialogState extends State<PremiumUploadDialog> {
|
||||
|
||||
setState(() => isUploading = true);
|
||||
|
||||
// Si no hay poster seleccionado, generar thumbnail automáticamente desde el video
|
||||
if (selectedPoster == null && _videoBlobUrl != null) {
|
||||
await _generateThumbnailFromVideo();
|
||||
}
|
||||
|
||||
// Procesar tags: separar por comas o espacios
|
||||
List<String>? tags;
|
||||
if (tagsController.text.isNotEmpty) {
|
||||
|
||||
Reference in New Issue
Block a user