ΠΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΈΡΠΈΠ½Ρ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π΅Π΅ΡΠ° ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ. Π― ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΠΈΠ³ΡΠ°ΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ/ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎ ΡΠ²ΠΎΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°.
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()
@kulture-rob Π― Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ°ΠΌΠΈΠΌ Π²Π΅Π±-ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠΌ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎΡ
ΠΎΠΆΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ·Π²Π°Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ°ΡΠ·Π°. Π― Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ
ΠΏΠΎΡΠΈΠ½ΠΈΡΡ ΡΡΠΎ.
ΠΡ, 11 Π°Π²Π³ΡΡΡΠ° 2019 Π³., 23:36 Sarbagya Dhaubandjar <
ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ@github.com> Π½Π°ΠΏΠΈΡΠ°Π»:
@kulture-rob https://github.com/kulture-rob Π― Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ
ΡΡΠΎ ΠΏΠ°ΡΠ·Π°. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ°ΠΌΠΈΠΌ Π²Π΅Π±-ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠΌ.β
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/sarbagyastha/youtube_player_flutter/issues/50?email_source=notifications&email_token=ACX6QVKG7SC4C2MQBU7RQATQEDSDDA5CNFSM4IKAWCP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4BRTII#62issue5,62issue
ΠΈΠ»ΠΈ Π·Π°Π³Π»ΡΡΠΈΡΡ ΡΠ΅ΠΌΡ
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);
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ»ΡΡ "forceHD: true", ΡΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° Android Π΄Π»Ρ ΠΌΠ΅Π½Ρ, Ρ Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ» ΡΡΠΎ Π½Π° ios