fijkplayer
fijkplayer copied to clipboard
http网络视频重播不了
请问一下有遇到过http的视频不能重复播放吗?
http视频第一次播放是可以的,重复播不行,点击播放按钮,下面是状态变化
V[/AudioManager]()(22679): querySoundEffectsEnabled...
I[/flutter]() (22679): [inf] 2022-04-06 13:08:41.742531 [fijk] FijkPlayer{id:2} invoke start
D[/IJKMEDIA]()(22679): IjkMediaPlayer_start
D[/IJKMEDIA]()(22679): ijkmp_start()
D[/IJKMEDIA]()(22679): ijkmp_start()=0
D[/IJKMEDIA]()(22679): ijkmp_get_msg: FFP_REQ_START
D[/IJKMEDIA]()(22679): FFP_MSG_BUFFERING_START:
E[/IJKMEDIA]()(22679): stream 0, offset 0xfed: partial file
D[/IJKMEDIA]()(22679): ijkmp_get_msg: FFP_MSG_SEEK_COMPLETE
D[/IJKMEDIA]()(22679): FFP_MSG_SEEK_COMPLETE:
D[/IJKMEDIA]()(22679): FFP_MSG_BUFFERING_END:
I[/flutter]() (22679): [inf] 2022-04-06 13:08:41.750844 [fijk] FijkPlayer{id:2} state changed to FijkState.started <= FijkState.completed
I[/flutter]() (22679): ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I[/flutter]() (22679): ++++++++ 是否开始播放 => true ++++++++
I[/flutter]() (22679): +++++++++++++++++++ 播放器状态 => FijkState.started ++++++++++++++++++++
I[/flutter]() (22679): ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
W[/IJKMEDIA]()(22679): msg complete, duration 3233. position 0
I[/IJKMEDIA]()(22679): ffp_toggle_buffering: completed: OK
E[/IJKMEDIA]()(22679): stream 1, offset 0xb69a: partial file
D[/IJKMEDIA]()(22679): ijkmp_get_msg: FFP_MSG_COMPLETED
D[/IJKMEDIA]()(22679): FFP_MSG_COMPLETED:
I[/flutter]() (22679): [inf] 2022-04-06 13:08:41.860067 [fijk] FijkPlayer{id:2} state changed to FijkState.completed <= FijkState.started
I[/flutter]() (22679): ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I[/flutter]() (22679): ++++++++ 是否开始播放 => false ++++++++
I[/flutter]() (22679): +++++++++++++++++++ 播放器状态 => FijkState.completed ++++++++++++++++++++
I[/flutter]() (22679): ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I[/IJKMEDIA]()(22679): ffp_toggle_buffering: eof
但是使用https的网络视频和本地的视频是可以重复播放的。
播放器widget代码
import 'package:fijkplayer/fijkplayer.dart';
import 'package:fijkplayer_skin/schema.dart';
import 'package:flutter/material.dart';
import 'package:fijkplayer_skin/fijkplayer_skin.dart';
class VideoPlayerWidget extends StatefulWidget {
final videoPath;
VideoPlayerWidget({Key key, this.videoPath}) : super(key: key);
@override
_VideoPlayerWidgetState createState() => _VideoPlayerWidgetState();
}
class _VideoPlayerWidgetState extends State<VideoPlayerWidget>
with TickerProviderStateMixin {
final FijkPlayer player = FijkPlayer();
VideoSourceFormat _videoSourceTabs;
Map<String, List<Map<String, dynamic>>> _videoList;
ShowConfigAbs vCfg = PlayerShowConfig();
@override
void dispose() {
player.removeListener(_playerValueChanged);
player.release();
super.dispose();
}
@override
void initState() {
super.initState();
_videoList = {
"video": [
{
"name": "",
"list": [
{
"url": widget.videoPath,
"name": "",
},
]
},
]
};
// 格式化json转对象
_videoSourceTabs = VideoSourceFormat.fromJson(_videoList);
// 这句不能省,必须有
speed = 1.0;
player.addListener(_playerValueChanged);
}
_playerValueChanged() {
if (player.value.state == FijkState.completed) {
// resetDataSource();
// player.start();
}
}
///重新加载数据源
resetDataSource() async {
await player.reset();
await player.setDataSource(widget.videoPath,
autoPlay: false, showCover: true);
}
@override
Widget build(BuildContext context) {
return _videoSourceTabs == null || _videoList == null
? Container()
: Container(
child: FijkView(
height: 200,
color: Colors.black,
fit: FijkFit.cover,
player: player,
panelBuilder: (
FijkPlayer player,
FijkData data,
BuildContext context,
Size viewSize,
Rect texturePos,
) {
/// 使用自定义的布局
return CustomFijkPanel(
player: player,
viewSize: viewSize,
texturePos: texturePos,
pageContent: context,
// 标题 当前页面顶部的标题部分
playerTitle: "",
// 当前视频源tabIndex
curTabIdx: 0,
// 当前视频源activeIndex
curActiveIdx: 0,
// 显示的配置
showConfig: vCfg,
// json格式化后的视频数据
videoFormat: _videoSourceTabs,
);
},
),
);
}
}
class PlayerShowConfig implements ShowConfigAbs {
@override
bool drawerBtn = false;
@override
bool nextBtn = false;
@override
bool speedBtn = false;
@override
bool topBar = false;
@override
bool lockBtn = false;
@override
bool autoNext = false;
@override
bool bottomPro = true;
@override
bool stateAuto = true;
@override
bool isAutoPlay = false;
}
麻烦大佬给我支出一下哪边有问题
fijkplayer: ^0.10.1