Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tx_player_fork
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蒋俊
tx_player_fork
Commits
4f797050
提交
4f797050
authored
12月 19, 2023
作者:
kongdywang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix app occasionally crash when kill app and player destroy
上级
4f9e77f0
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
11 行增加
和
20 行删除
+11
-20
FTXVodPlayer.java
...d/src/main/java/com/tencent/vod/flutter/FTXVodPlayer.java
+1
-1
SuperPlayerPlugin.java
.../main/java/com/tencent/vod/flutter/SuperPlayerPlugin.java
+1
-1
project.pbxproj
Flutter/example/ios/Runner.xcodeproj/project.pbxproj
+2
-0
demo_txvodplayer.dart
Flutter/example/lib/demo_txvodplayer.dart
+2
-13
FTXVodPlayer.m
Flutter/ios/Classes/FTXVodPlayer.m
+1
-1
superplayer_controller.dart
Flutter/superplayer_widget/lib/superplayer_controller.dart
+4
-4
没有找到文件。
Flutter/android/src/main/java/com/tencent/vod/flutter/FTXVodPlayer.java
浏览文件 @
4f797050
...
...
@@ -210,7 +210,7 @@ public class FTXVodPlayer extends FTXBasePlayer implements ITXVodPlayListener, F
// software decoding will depend on the window rendering of the surface. Failure to update will result
// in only 1 pixel of content.
private
void
setDefaultBufferSizeForSoftDecode
(
int
width
,
int
height
)
{
if
(
mSurfaceTextureEntry
!=
null
)
{
if
(
null
!=
mVodPlayer
&&
mSurfaceTextureEntry
!=
null
)
{
SurfaceTexture
surfaceTexture
=
mSurfaceTextureEntry
.
surfaceTexture
();
surfaceTexture
.
setDefaultBufferSize
(
width
,
height
);
mSurface
=
new
Surface
(
surfaceTexture
);
...
...
Flutter/android/src/main/java/com/tencent/vod/flutter/SuperPlayerPlugin.java
浏览文件 @
4f797050
...
...
@@ -372,7 +372,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
@Override
public
void
onDetachedFromEngine
(
@NonNull
FlutterPluginBinding
binding
)
{
Log
.
i
(
TAG
,
"on
AttachedTo
Engine"
);
Log
.
i
(
TAG
,
"on
DetachedFrom
Engine"
);
mFTXDownloadManager
.
destroy
();
mFlutterPluginBinding
=
null
;
if
(
null
!=
mOrientationManager
)
{
...
...
Flutter/example/ios/Runner.xcodeproj/project.pbxproj
浏览文件 @
4f797050
...
...
@@ -232,6 +232,7 @@
};
3B06AD1E1E4923F5004D2608
/* Thin Binary */
=
{
isa
=
PBXShellScriptBuildPhase
;
alwaysOutOfDate
=
1
;
buildActionMask
=
2147483647
;
files
=
(
);
...
...
@@ -246,6 +247,7 @@
};
54EBAF69D81CC6E332D3F9A7
/* [CP] Embed Pods Frameworks */
=
{
isa
=
PBXShellScriptBuildPhase
;
alwaysOutOfDate
=
1
;
buildActionMask
=
2147483647
;
files
=
(
);
...
...
Flutter/example/lib/demo_txvodplayer.dart
浏览文件 @
4f797050
...
...
@@ -39,7 +39,7 @@ class _DemoTXVodPlayerState extends State<DemoTXVodPlayer> with WidgetsBindingOb
Future
<
void
>
init
()
async
{
if
(!
mounted
)
return
;
await
SuperPlayerPlugin
.
setConsoleEnabled
(
true
);
_controller
=
TXVodPlayerController
();
await
_controller
.
initialize
();
_controller
.
onPlayerState
.
listen
((
val
)
{
debugPrint
(
"Playback status
${val?.name}
"
);
});
...
...
@@ -81,8 +81,6 @@ class _DemoTXVodPlayerState extends State<DemoTXVodPlayer> with WidgetsBindingOb
});
}
});
await
_controller
.
initialize
();
await
_controller
.
setLoop
(
true
);
await
_controller
.
enableHardwareDecode
(
enableHardware
);
await
_controller
.
setAudioPlayoutVolume
(
volume
);
...
...
@@ -91,16 +89,6 @@ class _DemoTXVodPlayerState extends State<DemoTXVodPlayer> with WidgetsBindingOb
await
_controller
.
startVodPlay
(
_url
);
}
void
startPlay
()
async
{
await
_controller
.
startVodPlayWithParams
(
TXPlayInfoParams
(
appId:
1500005830
,
fileId:
"243791578431393746"
,
psign:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTUwMDAwNTgzMCwiZmlsZUlkIjoiMjQzNzkxNTc4NDMxMzkzNzQ2IiwiY"
"3VycmVudFRpbWVTdGFtcCI6MTY3MzQyNjIyNywiY29udGVudEluZm8iOnsiYXVkaW9WaWRlb1R5cGUiOiJQcm90ZWN0ZWRBZGFwdGl"
"2ZSIsImRybUFkYXB0aXZlSW5mbyI6eyJwcml2YXRlRW5jcnlwdGlvbkRlZmluaXRpb24iOjEyfX0sInVybEFjY2Vzc0luZm8iOnsiZ"
"G9tYWluIjoiMTUwMDAwNTgzMC52b2QyLm15cWNsb3VkLmNvbSIsInNjaGVtZSI6IkhUVFBTIn19.q34pq7Bl0ryKDwUHGyzfXKP-C"
"DI8vrm0k_y-IaxgF_U"
));
}
void
_resizeVideo
(
Map
<
dynamic
,
dynamic
>
event
)
{
int
?
videoWidth
=
event
[
TXVodPlayEvent
.
EVT_PARAM1
];
int
?
videoHeight
=
event
[
TXVodPlayEvent
.
EVT_PARAM2
];
...
...
@@ -114,6 +102,7 @@ class _DemoTXVodPlayerState extends State<DemoTXVodPlayer> with WidgetsBindingOb
@override
void
initState
()
{
super
.
initState
();
_controller
=
TXVodPlayerController
();
init
();
WidgetsBinding
.
instance
.
addObserver
(
this
);
EasyLoading
.
show
(
status:
'loading...'
);
...
...
Flutter/ios/Classes/FTXVodPlayer.m
浏览文件 @
4f797050
...
...
@@ -481,7 +481,7 @@ static const int CODE_ON_RECEIVE_FIRST_FRAME = 2003;
if
(
old
&&
old
!=
pixelBuffer
)
{
CFRelease
(
old
);
}
if
(
_texture
Id
>=
0
&&
_textureRegistry
)
{
if
(
_texture
Registry
&&
_textureId
&&
_textureId
>=
0
)
{
[
_textureRegistry
textureFrameAvailable
:
_textureId
];
}
}
...
...
Flutter/superplayer_widget/lib/superplayer_controller.dart
浏览文件 @
4f797050
...
...
@@ -168,13 +168,13 @@ class SuperPlayerController {
_updatePlayerState
(
SuperPlayerState
.
END
);
break
;
case
TXVodPlayEvent
.
PLAY_EVT_PLAY_PROGRESS
:
dynamic
progress
=
event
[
TXVodPlayEvent
.
EVT_PLAY_PROGRESS
];
dynamic
duration
=
event
[
TXVodPlayEvent
.
EVT_PLAY_DURATION
];
dynamic
progress
=
event
[
TXVodPlayEvent
.
EVT_PLAY_PROGRESS
_MS
];
dynamic
duration
=
event
[
TXVodPlayEvent
.
EVT_PLAY_DURATION
_MS
];
if
(
null
!=
progress
)
{
currentDuration
=
progress
.
toDouble
();
// Current time, converted unit: seconds
currentDuration
=
progress
.
toDouble
()
/
1000
;
// Current time, converted unit: seconds
}
if
(
null
!=
duration
)
{
videoDuration
=
duration
.
toDouble
();
// Total playback time, converted unit: seconds
videoDuration
=
duration
.
toDouble
()
/
1000
;
// Total playback time, converted unit: seconds
}
if
(
videoDuration
!=
0
)
{
_observer
?.
onPlayProgress
(
currentDuration
,
videoDuration
,
await
getPlayableDuration
());
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论