【问题标题】:Why does my chewie video player not work?为什么我的咀嚼视频播放器不起作用?
【发布时间】: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 或更高版本时才能在模拟器上工作。所以首先检查真实设备。

标签: flutter dart


【解决方案1】:
dependencies:
  chewie: ^1.2.1

在此处添加最新版本 1.2.2 有一些问题

【讨论】:

  • 我又试了一次,得到了不同的错误。我更新了我原来的问题,你可以在那里看到。
  • 请问您是怎么​​知道这个问题的?我想学习避免以后出现类似问题。
【解决方案2】:

此例外是因为找不到您的文件:

E/ExoPlayerImplInternal(15346):   Caused by: java.io.FileNotFoundException: flutter_assets/sample.mp4

检查 Flutter_asset 文件夹添加文件是否正确。 谢谢

【讨论】:

  • 好的,就是这样。将赏金授予您的第一个答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2020-02-25
  • 1970-01-01
  • 2018-01-14
  • 2021-06-06
  • 2018-03-12
  • 1970-01-01
相关资源
最近更新 更多