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 <
[email protected]>은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@kulture-rob https://github.com/kulture-rob 이유λ₯Ό μ•Œ 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€
μΌμ‹œ μ€‘μ§€μž…λ‹ˆλ‹€. webview 자체둜 인해 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

β€”
이 μŠ€λ ˆλ“œμ— κ°€μž…ν–ˆκΈ° λ•Œλ¬Έμ— 이 λ©”μ‹œμ§€λ₯Ό λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/sarbagyastha/youtube_player_flutter/issues/50?email_source=notifications&email_token=ACX6QVKG7SC4C2MQBU7RQATQEDSDDA5CNFSM4IKAWCP2YY3PNVWWK3TUL52HS4DFVEXG43NVMXVBW
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
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 λ“±κΈ‰