Youtube_player_flutter: 调整大小时视频暂停

创建于 2019-08-07  ·  5评论  ·  资料来源: sarbagyastha/youtube_player_flutter

当动态增加视频播放器的宽度时,它会停止播放。 我希望它会随着尺寸的变化而继续播放。 这将允许用户将视频最小化/最大化到他们自己的大小,而不是使用全屏功能。

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

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

class MyApp extends StatefulWidget {
  <strong i="6">@override</strong>
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double width = 100.0;

  <strong i="7">@override</strong>
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Transition Demo',
      home: Scaffold(
          appBar: AppBar(
            title: Text('Demo'),
          ),
          body: Column(
            children: <Widget>[
              YoutubePlayer(
                context: context,
                videoId: "iLnmTe5Q2Qw",
                flags: YoutubePlayerFlags(
                  autoPlay: true,
                  showVideoProgressIndicator: true,
                ),
                width: width,
              ),
              FlatButton(child: Text('Increase'), onPressed: () => setState(()=> width += 10)),
            ],
          ),
        ),
    );
  }
}

单击按钮更改宽度后,控制台输出以下内容。 看起来它正在取消初始化视频,然后重新加载它。

D/ViewRootImpl@d4a2009[MainActivity](12807): ViewPostIme pointer 0
D/ViewRootImpl@d4a2009[MainActivity](12807): ViewPostIme pointer 1
D/Dialog  (12807): mIsSamsungBasicInteraction = false, isMetaDataInActivity = false
D/InputTransport(12807): Input channel constructed: fd=189
D/ViewRootImpl@9528d35[MainActivity](12807): setView = DecorView@b2a75ca[MainActivity] TM=true MM=false
D/OpenGLRenderer(12807): eglDestroySurface = 0x74c3bedb80, 0x74c3ad8000
D/ViewRootImpl@4ba4055[MainActivity](12807): dispatchDetachedFromWindow
D/ViewRootImpl@4ba4055[MainActivity](12807): Surface release. android.view.ViewRootImpl.doDie:7931 android.view.ViewRootImpl.die:7899 android.view.WindowManagerGlobal.removeViewLocked:497 android.view.WindowManagerGlobal.removeView:435 android.view.WindowManagerImpl.removeViewImmediate:124 android.app.Dialog.dismissDialog:518 android.app.Dialog.dismiss:501 android.app.Dialog.cancel:1462
D/InputTransport(12807): Input channel destroyed: fd=207
V/InputMethodManager(12807): Not IME target window, ignoring
D/ViewRootImpl@9528d35[MainActivity](12807): dispatchAttachedToWindow
D/ViewRootImpl@9528d35[MainActivity](12807): Relayout returned: old=[0,0][499,281] new=[0,0][499,281] result=0x7 surface={valid=true 501499133952} changed=true
D/OpenGLRenderer(12807): eglCreateWindowSurface = 0x74c3bedc80, 0x74c3ad8010
D/ViewRootImpl@9528d35[MainActivity](12807): Relayout returned: old=[0,0][499,281] new=[0,0][499,281] result=0x1 surface={valid=true 501499133952} changed=false
D/ViewRootImpl@9528d35[MainActivity](12807): MSG_RESIZED: frame=Rect(0, 0 - 499, 281) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=2
I/flutter (12807): PlaybackQualityChange large
D/        (12807): PlayerBase::PlayerBase()
D/        (12807): TrackPlayerBase::TrackPlayerBase()
I/libOpenSLES(12807): Emulating old channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
I/cr_MediaCodecBridge(12807): create MediaCodec video decoder, mime video/x-vnd.on2.vp9
I/ACodec  (12807):  [] Now uninitialized
I/ACodec  (12807): [] onAllocateComponent
I/OMXClient(12807): IOmx service obtained
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Loaded
I/MediaCodec(12807): MediaCodec will operate in async mode
D/SurfaceUtils(12807): connecting to surface 0x74b9e5e010, reason connectToSurface
I/MediaCodec(12807): [OMX.qcom.video.decoder.vp9] setting surface generation to 13114379
D/SurfaceUtils(12807): disconnecting from surface 0x74b9e5e010, reason connectToSurface(reconnect)
D/SurfaceUtils(12807): connecting to surface 0x74b9e5e010, reason connectToSurface(reconnect)
I/ACodec  (12807): [HW_HDR] app-pid : 12807
W/DirectStreamingProxy(12807): app-pid not found. use getpid(). pid = 12807
D/DirectStreamingProxy(12807): pid = 12807
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] OMX_QCOM_FramePacking_OnlyOneCompleteFrame is setting
I/ACodec  (12807): Success to set FramePackingMode
I/SmartFittingClass(12807): Create SmartFitting Version 2.0
I/SmartFittingClass(12807): Init, [State:UNINITIALIZED] pid: 12807
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Loaded->Idle
I/SmartFittingClass(12807): InitialCheck()
I/SmartFittingClass(12807): Create SmartFittingManagerServiceProxy!!
I/SmartFittingClass(12807): SmartFittingManagerServiceProxy::init
I/SmartFittingClass(12807): Create SmartFittingManagerServiceProxy::EventHandler
I/SmartFittingClass(12807): SmartFittingManagerServiceProxy::onAddSmartFittingListener pid: 12807
I/SmartFittingClass(12807): Create SmartFittingListener
I/SmartFittingClass(12807): InitialCheck, WhiteListStatus returned from CodecSolution : 0
I/SmartFittingClass(12807): InitialCheck, [State:FINISHED] SmartFitting has not been activated by App. Shut Down SmartFitting.
D/SurfaceUtils(12807): set up nativeWindow 0x74b9e5e010 for 854x450, color 0x7fa30c06, rotation 0, usage 0x20402900
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] configureOutputBuffersFromNativeWindow setBufferCount : 20, minUndequeuedBuffers : 5
I/MediaCodec(12807): setCodecState state : 0
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Idle->Executing
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Executing
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now handling output port settings change
D/SurfaceUtils(12807): set up nativeWindow 0x74b9e5e010 for 856x456, color 0x7fa30c06, rotation 0, usage 0x20402900
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] configureOutputBuffersFromNativeWindow setBufferCount : 20, minUndequeuedBuffers : 5
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Executing
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] OMX_EventPortSettingsChanged 0x7f000062
I/MediaCodec(12807): setCodecState state : 1
D/        (12807): TrackPlayerBase::~TrackPlayerBase()
D/        (12807): PlayerBase::~PlayerBase()
I/MediaCodec(12807): setCodecState state : 0
D/        (12807): PlayerBase::stop() from IPlayer
D/AudioTrack(12807): stop() called with 482924 frames delivered
I/MediaCodec(12807): setCodecState state : 1
W/cr_MediaCodecBridge(12807): Releasing: OMX.qcom.video.decoder.vp9
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Executing->Idle
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Idle->Loaded
I/ACodec  (12807): [OMX.qcom.video.decoder.vp9] Now Loaded
I/SmartFittingClass(12807): ShutDownSmartFitting!!
I/SmartFittingClass(12807): SmartFittingManagerServiceProxy::Deinit
I/SmartFittingClass(12807): Destroy SmartFittingListener
I/SmartFittingClass(12807): Destroy ~SmartFittingManagerServiceProxy::EventHandler
I/SmartFittingClass(12807): Destroy SmartFitting!!
I/SmartFittingClass(12807): Destroy SmartFittingManagerServiceProxy!!
I/ACodec  (12807):  [OMX.qcom.video.decoder.vp9] Now uninitialized
I/ACodec  (12807):  [] Now kWhatShutdownCompleted event : 8522
D/SurfaceUtils(12807): disconnecting from surface 0x74b9e5e010, reason disconnectFromSurface
I/MediaCodec(12807): Codec shutdown complete
W/cr_MediaCodecBridge(12807): Codec released
D/        (12807): TrackPlayerBase::~TrackPlayerBase()
D/        (12807): PlayerBase::~PlayerBase()

bug wontfix

最有用的评论

尝试添加密钥“forceHD:true”,它为我解决了Android上的问题,我还没有在ios上检查过

_controller = YoutubePlayerController(
      initialVideoId: state.video.url,
      flags: const YoutubePlayerFlags(
        autoPlay: false,
        controlsVisibleAtStart: false,
        disableDragSeek: false,
        enableCaption: false,
        forceHD: true,
        hideControls: false,
        hideThumbnail: false,
        isLive: false,
        loop: false,
        mute: false,
     ),
)..addListener(listener);

所有5条评论

@kulture-rob 我不知道它为什么会暂停。 可能是webview本身造成的。

我也有这个问题。 看起来调整大小导致了
播放质量改变,然后暂停。 我仍然无法弄清楚如何
要解决这个问题。

2019 年 8 月 11 日星期日晚上 11:36 Sarbagya Dhaubanjar <
通知@github.com> 写道:

@kulture-rob https://github.com/kulture-rob我不知道为什么
它正在暂停。 可能是webview本身造成的。


您收到此消息是因为您订阅了此线程。
直接回复此邮件,在 GitHub 上查看
https://github.com/sarbagyastha/youtube_player_flutter/issues/50?email_source=notifications&email_token=ACX6QVKG7SC4C2MQBU7RQATQEDSDDA5CNFSM4IKAWCP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD296866#issuecomment-520
或使线程静音
https://github.com/notifications/unsubscribe-auth/ACX6QVJGNIZZAJCSGHO7ZW3QEDSDDANCNFSM4IKAWCPQ
.

我还注意到,当您更改方向时,也会发生这种行为(可能是由于调整大小)。

关于这个问题的任何更新?

尝试添加密钥“forceHD:true”,它为我解决了Android上的问题,我还没有在ios上检查过

_controller = YoutubePlayerController(
      initialVideoId: state.video.url,
      flags: const YoutubePlayerFlags(
        autoPlay: false,
        controlsVisibleAtStart: false,
        disableDragSeek: false,
        enableCaption: false,
        forceHD: true,
        hideControls: false,
        hideThumbnail: false,
        isLive: false,
        loop: false,
        mute: false,
     ),
)..addListener(listener);
此页面是否有帮助?
0 / 5 - 0 等级