【发布时间】:2022-01-21 12:59:28
【问题描述】:
我一直在使用Chewie 在我一直在制作的移动应用上播放视频(这是新的),过去 2 周它一直在工作。最近,一切都停止了工作,我什至无法在基本入门应用程序中播放视频。入门应用程序(带有 incrementCounter 按钮)工作正常,但是当我将其更改为显示 Chewie 播放器时,它不起作用。这是我的代码:
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _chewieController = ChewieController(
videoPlayerController: VideoPlayerController.asset('sample.mp4'),
autoInitialize: true,
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(child: Chewie(controller: _chewieController)),
);
}
}
你可以从下面的截图中看到我的flutter项目中有本地视频,并且在pubspec.yaml中也声明为依赖。
我也尝试过网络视频,但它们也无法正常工作(尽管还有其他错误)。
当我使用 iPhone 13 iOS 模拟器(过去 2 周一直在使用的模拟器)运行它时,它在启动前崩溃。
当我使用 Chrome 或 Android 模拟器(Pixel 2 API31,过去 2 周一直在工作的那个)运行它时,我得到了这个(下面的错误日志来自 android 模拟器):
nathan@Nathans-MBP-3 whatisgoingon % flutter run
Using hardware rendering with device sdk gphone64 x86 64. If you notice graphics
artifacts, consider enabling software rendering with
"--enable-software-rendering".
Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Running Gradle task 'assembleDebug'... 77.4s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk... 7.3s
Syncing files to device sdk gphone64 x86 64... 167ms
Flutter run key commands.
r Hot reload. ????????????
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
???? Running with sound null safety ????
An Observatory debugger and profiler on sdk gphone64 x86 64 is available at:
http://127.0.0.1:50796/gkkCChfmcss=/
W/e.whatisgoingo(14362): Accessing hidden method Landroid/media/AudioTrack;->getLatency()I (unsupported, reflection, allowed)
I/ExoPlayerImpl(14362): Init 511a82 [ExoPlayerLib/2.14.1] [emulator64_x86_64_arm64, sdk_gphone64_x86_64, Google, 31]
I/Choreographer(14362): Skipped 37 frames! The application may be doing too much work on its main thread.
The Flutter DevTools debugger and profiler on sdk gphone64 x86 64 is available
at: http://127.0.0.1:9101?uri=http://127.0.0.1:50796/gkkCChfmcss=/
E/ExoPlayerImplInternal(14362): Playback error
E/ExoPlayerImplInternal(14362): com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
E/ExoPlayerImplInternal(14362): at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(14362): at android.os.Looper.loopOnce(Looper.java:201)
E/ExoPlayerImplInternal(14362): at android.os.Looper.loop(Looper.java:288)
E/ExoPlayerImplInternal(14362): at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(14362): Caused by: com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets/smaple.mp4
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:87)
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:201)
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1016)
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:417)
E/ExoPlayerImplInternal(14362): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(14362): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(14362): at java.lang.Thread.run(Thread.java:920)
E/ExoPlayerImplInternal(14362): Caused by: java.io.FileNotFoundException: flutter_assets/smaple.mp4
E/ExoPlayerImplInternal(14362): at android.content.res.AssetManager.nativeOpenAsset(Native Method)
E/ExoPlayerImplInternal(14362): at android.content.res.AssetManager.open(AssetManager.java:881)
E/ExoPlayerImplInternal(14362): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:68)
E/ExoPlayerImplInternal(14362): ... 7 more
E/flutter (14362): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error, null, null)
颤振医生:
nathan@Nathans-MBP-3 whatisgoingon % flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.8.0, on macOS 12.0.1 21A559 darwin-x64, locale
en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code (version 1.63.2)
[✓] Connected device (2 available)
• No issues found!
我做错了吗?我尝试从不同的在线示例(来自 Chewie 示例 github 和其他教程)以及我之前的尝试复制代码,但无济于事......
edit:尝试了将 Chewie 降级到 1.2.1 的建议。这是新的错误:
Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...
lib/main.dart:1
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Connecting to VM Service at ws://127.0.0.1:51753/N8pSDCE3K_U=/ws
W/e.whatisgoingo(15346): Accessing hidden method Landroid/media/AudioTrack;->getLatency()I (unsupported, reflection, allowed)
I/ExoPlayerImpl(15346): Init cc79bb8 [ExoPlayerLib/2.14.1] [emulator64_x86_64_arm64, sdk_gphone64_x86_64, Google, 31]
E/ExoPlayerImplInternal(15346): Playback error
E/ExoPlayerImplInternal(15346): com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
E/ExoPlayerImplInternal(15346): at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(15346): at android.os.Looper.loopOnce(Looper.java:201)
E/ExoPlayerImplInternal(15346): at android.os.Looper.loop(Looper.java:288)
E/ExoPlayerImplInternal(15346): at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(15346): Caused by: com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets/sample.mp4
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:87)
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:201)
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1016)
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:417)
E/ExoPlayerImplInternal(15346): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(15346): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(15346): at java.lang.Thread.run(Thread.java:920)
E/ExoPlayerImplInternal(15346): Caused by: java.io.FileNotFoundException: flutter_assets/sample.mp4
E/ExoPlayerImplInternal(15346): at android.content.res.AssetManager.nativeOpenAsset(Native Method)
E/ExoPlayerImplInternal(15346): at android.content.res.AssetManager.open(AssetManager.java:881)
E/ExoPlayerImplInternal(15346): at com.google.android.exoplayer2.upstream.AssetDataSource.open(AssetDataSource.java:68)
E/ExoPlayerImplInternal(15346): ... 7 more
【问题讨论】:
-
你在真机上检查过这个吗?请在真实设备上检查这一点,正如 Chewie 文档中提到的那样,它仅在您使用颤振 1.26.0 或更高版本时才能在模拟器上工作。所以首先检查真实设备。