instancePlayer method
Implementation
FijkPlayer instancePlayer(VideoTikEntry entry) {
var player = FijkPlayer();
Function()? playerCall;
playerCall = () {
if (player.state == FijkState.started) {
playStartNotify!(player);
}
};
player.addListener(playerCall);
Future.wait([
//通过立即清理数据包来减少等待时长
player.setOption(FijkOption.formatCategory, "flush_packets", 1),
player.setOption(FijkOption.formatCategory, "probesize", 1024 * 16),
//设置最长分析时长
player.setOption(FijkOption.formatCategory, "analyzemaxduration", 100),
// player.setOption(FijkOption.formatCategory, "http-detect-range-support", 0),
//跳过循环滤波
player.setOption(FijkOption.codecCategory, "skip_loop_filter", 48),
player.setOption(FijkOption.codecCategory, "skip_frame", 0),
// player.setOption(FijkOption.playerCategory, "max_cached_duration", 500);
// player.setOption(FijkOption.playerCategory, "dns_cache_clear", 0);
player.setOption(FijkOption.playerCategory, "reconnect", 3),
// player.setOption(FijkOption.playerCategory, "mediacodec", 1);
// player.setOption(FijkOption.playerCategory, "mediacodec-auto-rotate", 1);
// player.setOption(FijkOption.playerCategory, "mediacodec-handle-resolution-change", 1);
//网络不好的情况下进行丢包
player.setOption(FijkOption.playerCategory, "framedrop", 1),
player.setOption(FijkOption.playerCategory, "infbuf", 1),
//暂停输出直到停止后读取足够的数据包
player.setOption(FijkOption.playerCategory, "packet-buffering", 0),
// 不查询stream_info,直接使用
player.setOption(FijkOption.playerCategory, "find_stream_info", 1),
//等待开始之后才绘制
player.setOption(FijkOption.playerCategory, "render-wait-start", 0),
]).then((result){
player.setDataSource(
entry.videoUrl,
showCover: true,
autoPlay: entry.autoPlay,
);
// player.addListener(() {
// if (player.state == FijkState.error) {
// resetPlayer(entry,player);
// }
// });
});
return player;
}