- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的应用程序将下载视频,在第一个屏幕上可以下载视频,我正在使用 dio 并使用 path_provider 获取应用程序文件夹,在第二个屏幕上我想显示和播放下载的视频。
下载正常,存储在正确的路径中,但我无法检索到 video_player 的相同路径,我收到“找不到文件”的提示。
文件下载路径:/data/user/0/APP_NAME/app_flutter/ATW - Around the World.mp4
错误显示路径:flutter_assets//data/user/0/APP_NAME/app_flutter/ATW - Around the World.mp4
看起来他们不一样。
Dio dio = Dio();
try {
var dir = await getApplicationDocumentsDirectory();
for (int i = 0; i < urls.length; i++){
path = "${dir.path}/${tricks[i]}.mp4";
await dio.download(urls[i], path, onReceiveProgress: (rec, total){
setState(() {
progress = ((rec / total) * 100).toStringAsFixed(0) + "%";
});
});
print(path);
}
} catch (e){
print(e);
}
===============
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:video_player/video_player.dart';
class VideoScreen extends StatefulWidget {
String trickName;
VideoScreen(this.trickName);
@override
_VideoScreenState createState() => _VideoScreenState(trickName);
}
class _VideoScreenState extends State<VideoScreen> {
String trickName;
VideoPlayerController _controller;
dynamic videoPath;
_VideoScreenState(this.trickName);
@override
void initState() {
// TODO: implement initState
super.initState();
_getVideoPath();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Trick"),
centerTitle: true,
),
body: FutureBuilder(
future: _getVideoPath(),
builder: (context, snapshot){
if(snapshot.connectionState == ConnectionState.done){
return Center(
child: _controller.value.initialized ? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Center(
child: CircularProgressIndicator(),
),
);
}
}
),
);
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_controller.dispose();
}
Future<void> _getVideoPath() async{
try{
var dir = await getApplicationDocumentsDirectory();
videoPath = "${dir.path}/$trickName.mp4";
print(videoPath);
_controller = VideoPlayerController.asset(videoPath)..initialize()
.then((_){
setState(() {
});
});
}catch (e){
print(e);
}
}
}
I/ExoPlayerImpl(20059): Init 5dd991d [ExoPlayerLib/2.9.6] [m253, LG-K430, LGE, 23] I/ExoPlayerImpl(20059): Init 8355563 [ExoPlayerLib/2.9.6] [m253, LG-K430, LGE, 23] E/ExoPlayerImplInternal(20059): Source error. E/ExoPlayerImplInternal(20059): com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets//data/user/0/APP_NAME/app_flutter/ATW - Around the World.mp4 E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:98) E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:250) E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885) E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381) E/ExoPlayerImplInternal(20059): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) E/ExoPlayerImplInternal(20059): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) E/ExoPlayerImplInternal(20059): at java.lang.Thread.run(Thread.java:818) E/ExoPlayerImplInternal(20059): Caused by: java.io.FileNotFoundException: flutter_assets//data/user/0/APP_NAME/app_flutter/ATW - Around the World.mp4 E/ExoPlayerImplInternal(20059): at android.content.res.AssetManager.openAsset(Native Method) E/ExoPlayerImplInternal(20059): at android.content.res.AssetManager.open(AssetManager.java:313) E/ExoPlayerImplInternal(20059): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:79) E/ExoPlayerImplInternal(20059): ... 7 more
最佳答案
video_player 有一个文件函数:VideoPlayerController.file(File)
我的 Android Studio 没有显示该功能,所以我认为它没有实现。
现在我可以从应用文件夹加载视频了。
关于dart - 使用 path_provider 将下载的文件路径获取到 video_player 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563689/
我正在制作简单播放本地视频的应用程序。 一开始我用https://pub.dev/packages/video_player , video_player: ^0.10.2+1 但是由于某种原因,它在
我正在使用 provider与 video_player来管理状态。 VideoProvider 有: videoPlayerController = VideoPlayerController.ne
我想实时获取正在播放的视频的当前位置。我正在考虑使用监听器,但如果我这样做: _controller.addListener(() => print(_controller.value.positio
我想实时获取正在播放的视频的当前位置。我正在考虑使用监听器,但如果我这样做: _controller.addListener(() => print(_controller.value.positio
我想在 Flutter 中创建一个包含多个循环视频的页面。在我的手机(三星 Galaxy Note 10 Plus)上,所有视频都可以完美加载,但是当我在其他手机(我试过三星 Galaxy S6 和
我将我的 flutter 更新到 1.22.0,现在我的 video_player 给了我异常错误。在我将 flutter 更新到 1.22.0 之前,它运行良好。 这是我的错误: E/flutter
我正在使用 flutter video_player包来播放我的应用程序中使用的短视频文件。我的灵感来自 flutter 食谱:Play and pause a video . 我想允许用户点击视频以
好吧,我设置了一个相对简单的 flutter 程序来测试 video_player 插件 ( https://pub.dartlang.org/documentation/video_player/0
我正在使用 flutter video_player( https://pub.dartlang.org/packages/video_player ) 插件来播放视频。但是当我从一页导航到另一页时,
我希望在 Flutter 中重新创建 Snapchat 的连续视频格式。由于 video_player 缺少视频结束时的回调(否则容易出现回调 hell ),我想知道是否有人对构建这样的东西有一些指示
我正在使用一个名为 video_player 的插件在我的 Flutter 项目上。我可以毫无问题地播放和暂停视频,但我想让它全屏和水平播放。我找不到与此相关的任何内容。 这是我使用的基本代码: pl
我开始使用这个包:https://pub.dev/packages/video_player .但是我需要使用这个包来显示 YouTube 视频中的视频,我该怎么做,因为 YouTube 的默认 ul
我用过 video_player我的应用程序中的插件以从网络加载视频。我要显示CircularProgressIndicator如果视频当前正在缓冲。 有没有办法从 Controller 获取缓冲状态
我正在开发一个新的本地应用程序。我为此选择了 Flutter(而不是 React Native)。在此应用程序中,将有一个视频流部分。这些视频将具有 HLS 流。 我在 Flutter 中为此使用了
我是 flutter 新手,我正在使用 flutter video_player 插件来播放视频。在捕获视频文件(使用相机插件)后,我想在视频中 1 秒处开始播放视频(本质上是跳过第一秒)。我尝试使用
我的应用程序将下载视频,在第一个屏幕上可以下载视频,我正在使用 dio 并使用 path_provider 获取应用程序文件夹,在第二个屏幕上我想显示和播放下载的视频。 下载正常,存储在正确的路径中,
我正在尝试使用 video_player ,但出现以下错误。我还添加了一个 MRE(最小可重现示例)。 我使用了模拟的 Pixel 4、模拟的 Pixel 4 XL 和带有 Android Studi
Flutter 视频播放器包在 IOS 设备上不工作,但视频在 android 设备上工作。如何解决这个问题? 我按照视频播放器包页面中提到的所有步骤进行操作。 最佳答案 ffmpeg -y -i i
我正在尝试播放视频。我收到以下错误: E/gralloc_ranchu( 2305): updateHostColorBuffer: Unexpected DMA E/ ( 2305):
我是一名优秀的程序员,十分优秀!