我正在尝试加载此视频
assets/videos/heart_beat.mp4
,但是当将其路径传递给VideoPlayerController
的初始化时,它会抛出此错误:
Playback error
E/ExoPlayerImplInternal( 9149): com.google.android.exoplayer2.ExoPlaybackException: Source error
.............
Caused by: com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets/assets/videos/heat_beat.mp4
我认为存在一个问题,最后一行表明它在名为 flutter_assets 的文件夹中搜索,然后在我的路径中搜索,但我没有名为 flutter_assets 的文件夹。我尝试创建它并将我的文件移入其中,但出现同样的问题。
class _HomeBodyState extends State<HomeBody> {
late ChewieController _chewieController;
VideoPlayer videoPlayer = VideoPlayer(path: 'assets/videos/heat_beat.mp4');
@override
void initState() {
videoPlayer.initializePlayers();
_chewieController = videoPlayer.chewieController;
super.initState();
}
@override
Widget build(BuildContext context) {
streamListener(
'Data/${User.uuid}/ECG',
(DatabaseEvent data) =>
onValueChangeCallback(data.snapshot.value.toString()));
return Padding(
padding: EdgeInsets.symmetric(horizontal: widget.width * 0.02),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.only(top: widget.height * 0.1),
child: Material(
borderRadius: BorderRadius.circular(5),
color: AppColors.secondaryContainer,
child: SizedBox(
width: widget.width * 0.96,
height: widget.height * 0.4,
child: Chewie(controller: _chewieController)),
),
),
],
),
);
}
void onValueChangeCallback(String value) {
if (value != '' && value != '0') {
} else {}
}
@override
void dispose() {
videoPlayer.dispose();
_chewieController.dispose();
super.dispose();
}
}
我的视频播放器:
import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';
class VideoPlayer {
final String path;
late VideoPlayerController videoPlayerController;
late ChewieController chewieController;
VideoPlayer({required this.path});
void initializePlayers() {
videoPlayerController = VideoPlayerController.asset(path);
chewieController = ChewieController(
videoPlayerController: videoPlayerController,
allowMuting: true,
autoPlay: false,
allowedScreenSleep: false,
autoInitialize: true,
looping: true,
showControls: false,
zoomAndPan: false);
}
void dispose() {
videoPlayerController.dispose();
chewieController.dispose();
}
}