video_player 依赖项不起作用 api 19

video_player dependency doesn't working api 19

我正在尝试在 flutter 中使用 video_player 依赖项从网络播放 mp4 视频(运行 仅在 android 上使用我的应用程序),视频无法播放并且应用程序几秒钟后崩溃。 我正在尝试 运行 该应用程序 API 最多 19.

这是我的代码:

import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
        'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Center(
          child: _controller.value.initialized
              ? AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  child: VideoPlayer(_controller),
                )
              : Container(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _controller.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}

这是输出:

D/        ( 4654): HostConnection::get() New Host Connection established 0xb7b11d20, tid 4669
D/dalvikvm( 4654): GC_CONCURRENT freed 231K, 8% free 3676K/3980K, paused 1ms+1ms, total 4ms
E/ExoPlayerImplInternal( 4654): Source error.
E/ExoPlayerImplInternal( 4654): com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:281)
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83)    
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885)
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
E/ExoPlayerImplInternal( 4654):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/ExoPlayerImplInternal( 4654):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/ExoPlayerImplInternal( 4654):         at java.lang.Thread.run(Thread.java:841)
E/ExoPlayerImplInternal( 4654): Caused by: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7b30750: Failure in SSL library, usually a protocol error
E/ExoPlayerImplInternal( 4654): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x8d995990:0x00000000)
E/ExoPlayerImplInternal( 4654):         at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)  
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.Connection.connect(Connection.java:107)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)      
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
E/ExoPlayerImplInternal( 4654):         at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:528)
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:444)
E/ExoPlayerImplInternal( 4654):         at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:279)
E/ExoPlayerImplInternal( 4654):         ... 6 more
E/ExoPlayerImplInternal( 4654): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7b30750: Failure in SSL library, usually a protocol error
E/ExoPlayerImplInternal( 4654): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x8d995990:0x00000000)
E/ExoPlayerImplInternal( 4654):         at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
E/ExoPlayerImplInternal( 4654):         at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)  
E/ExoPlayerImplInternal( 4654):         ... 17 more
E/flutter ( 4654): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4, null)
E/flutter ( 4654):
E/flutter ( 5040): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4, null)
E/flutter ( 5040):
E/flutter ( 5097): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4, null)
E/flutter ( 5097):
E/flutter ( 5176): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4, null)
E/flutter ( 5176):
E/flutter ( 5268): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4, null)

我能够 运行 使用 video_player: ^2.3.0 您提供的样本没有问题。尝试更新您正在使用的版本。

此外,这是我 build.gradle

上的默认配置
defaultConfig {
  applicationId "your.package.name"
  minSdkVersion 19
  targetSdkVersion 31
  versionCode flutterVersionCode.toInteger()
  versionName flutterVersionName
}