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(),
);
}
},
),
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