GOOGLE ADS

sábado, 16 de abril de 2022

¿Cómo obtengo la URL de video de almacenamiento de Firebase en el reproductor de video?

Estoy tratando de crear una aplicación que tenga un archivo de video para cargar (como el formulario de YouTube cuando quiero cargar un video). Y quiero agregar un reproductor de video para obtener una vista previa o una miniatura, pero cuando probé con la URL de almacenamiento de Firebase para cargar un video desde la cámara o el archivo no funciona, pero cuando coloco el valor de la URL del video manualmente desde el almacenamiento de Firebase, funciona (la selección y carga en Firebase funciona)

Código del reproductor de vídeo:

VideoPlayerController? _controller;
Future<void>? _initializeVideoPlayerFuture;
String? videoUrl;
@override
void dispose() {
// TODO: implement dispose
_controller!.dispose();
super.dispose();
}
@override
void initState() {
// TODO: implement initState
super.initState();
getUserData();
_controller = VideoPlayerController.network("$videoUrl");
_initializeVideoPlayerFuture = _controller!.initialize();
_controller!.setLooping(true);
_controller!.setVolume(1.0);
}

Elija un video y súbalo a Firebase:

Future _pickVideo(ImageSource source) async {
final pickedFile =
await _picker.pickVideo(source: source,);
if(pickedFile == null){
return;
}
await _uploadVideoFile(pickedFile.path);
}
Future _uploadVideoFile(String path) async {
final ref = FirebaseStorage.instance
.ref()
.child('videos')
.child('${DateTime.now().toIso8601String() + p.basename(path)}');
final result = await ref.putFile(File(path));
final fileUrl = await result.ref.getDownloadURL();
setState(() {
videoUrl = fileUrl;
});
}

Vista previa de vídeo:

FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot){
if(snapshot.connectionState == ConnectionState.done){
return AspectRatio(
aspectRatio: _controller!.value.aspectRatio,
child: VideoPlayer(_controller!),);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
),

ingrese la descripción de la imagen aquí


Solución del problema

Can you check the value that you get manually from firebase storage with the value that you set here final fileUrl = await result.ref.getDownloadURL();

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...