首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用API在颤振中播放视频播放器

应用API在颤振中播放视频播放器
EN

Stack Overflow用户
提问于 2022-07-31 06:48:05
回答 1查看 843关注 0票数 0

早上好,我在播放视频时遇到了问题--我正在使用这个软件包玩家:^2.4.5,但是当我打开包含我的视频的屏幕时,它就不起作用了。它给了我一个白色的屏幕

这是我的密码

代码语言:javascript
运行
复制
class VideoPlayerScreenState extends State<VideoPlayerScreen> {

  var  controller;
  var youTubVideoPlayerController;

  @override
  void initState() {
    controller = VideoPlayerController.network(
        widget.initialUrl.toString() ?? 'https://samplelib.com/lib/preview/mp4/sample-5s.mp4');
    loadVideoPlayer();
    super.initState();
  }

  loadVideoPlayer() {
    controller.addListener(() {
      setState(() {
        print(widget.initialUrl);  // this working well
      });
    });
    // from here it doesn't work
    controller.initialize().then((value) {
      print("Load Video Player Initialized 1111");
      setState(() {
        print("Load Video Player Initialized 2222");
      });
    });
  }

这是这个片段的输出

代码语言:javascript
运行
复制
I/flutter (17062): https://www.privilegeapps.com/images/materials/1658523313file.mp4
E/flutter (17062): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error, null, null)

下面是我的日志输出

代码语言:javascript
运行
复制
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
W/System  (17062): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out(17062): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp
E/ExoPlayerImplInternal(17062): Playback error
E/ExoPlayerImplInternal(17062):   com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:640)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:612)
E/ExoPlayerImplInternal(17062):       at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(17062):       at android.os.Looper.loop(Looper.java:166)
E/ExoPlayerImplInternal(17062):       at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(17062):   Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:365)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1009)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
E/ExoPlayerImplInternal(17062):       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
E/ExoPlayerImplInternal(17062):       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
E/ExoPlayerImplInternal(17062):       at java.lang.Thread.run(Thread.java:780)
E/ExoPlayerImplInternal(17062):   Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:219)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:299)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:237)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
E/ExoPlayerImplInternal(17062):       at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:636)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:533)
E/ExoPlayerImplInternal(17062):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:359)
E/ExoPlayerImplInternal(17062):       ... 6 more
E/ExoPlayerImplInternal(17062):   Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:646)
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495)
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339)
E/ExoPlayerImplInternal(17062):       at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
E/ExoPlayerImplInternal(17062):       at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:197)
E/ExoPlayerImplInternal(17062):       at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(Consc

最后是我的颤栗医生屏幕

代码语言:javascript
运行
复制
[√] Flutter (Channel stable, 3.0.5, on Microsoft Windows [Version 10.0.19044.1826], locale en-US)
    • Flutter version 3.0.5 at C:\Users\sayed\Documents\flutter_windows_2.2.3-stable\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f1875d570e (3 weeks ago), 2022-07-13 11:24:16 -0700
    • Engine revision e85ea0e79c
    • Dart version 2.17.6
    • DevTools version 2.12.2

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\sayed\AppData\Local\Android\sdk
    • Platform android-33, build-tools 31.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[√] VS Code (version 1.69.2)
    • VS Code at C:\Users\sayed\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.36.0

[√] VS Code, 64-bit edition (version 1.63.0)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.36.0

[√] Connected device (4 available)
    • DRA LX2 (mobile)  • 5LX9K18817915788 • android-arm64  • Android 8.1.0 (API 27)
    • Windows (desktop) • windows          • windows-x64    • Microsoft Windows [Version 10.0.19044.1826]
    • Chrome (web)      • chrome           • web-javascript • Google Chrome 103.0.5060.134
    • Edge (web)        • edge             • web-javascript • Microsoft Edge 103.0.1264.77

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.
EN

回答 1

Stack Overflow用户

发布于 2022-08-31 11:47:17

这是因为www.privilegeapps.com的证书不受信任。您需要将它的证书添加到受信任列表中。安卓解决方案:

  1. 使用克里普crip print --url=https://privilegeapps.com --format=pem获取证书
  2. cert.pem中创建res/raw。将一步获得的证书放入cert.pem中.它必须从-----BEGIN CERTIFICATE-----开始,以-----END CERTIFICATE-----结束。
  3. network_security_config.xml /xml中创建。把这些吐露放在里面:
代码语言:javascript
运行
复制
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config>
        <domain includeSubdomains="true">privilegeapps.com</domain>
        <trust-anchors>
            <certificates src="@raw/cert" />
        </trust-anchors>
    </domain-config>
</network-security-config>
  1. 最后,将其添加到Manifest中:
代码语言:javascript
运行
复制
<application
        ...
        android:networkSecurityConfig="@xml/network_security_config">

如果您事先知道域,则此操作有效。如果视频链接来自用户,那么您可以捕获HandshakeException并暂时关闭平台级别的SSL安全性。并在用户观看完视频后重新打开:

代码语言:javascript
运行
复制
    channel.setMethodCallHandler((call, result) -> {
            switch (call.method) {
                case SECURITY_OFF:
                    HttpsURLConnection.setDefaultSSLSocketFactory(unsafeSSLFactory());
                    result.success(null);
                    break;
                case SECURITY_ON:
                    HttpsURLConnection.setDefaultSSLSocketFactory(factory);
            }
        });


    private SSLSocketFactory unsafeSSLFactory() {
        return SSLCertificateSocketFactory.getInsecure(5000, null);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73181210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档