player.setOption(FijkOption.formatCategory, 'rtsp_transport', 'udp'); player.setOption(FijkOption.formatCategory, 'vcodec', 'h264'); player.setOption(FijkOption.formatCategory, 'video_size', '1024x768'); player.setOption(FijkOption.playerCategory, 'start-on-prepared', 1); player.setOption(FijkOption.playerCategory, 'mediacodec', 1); player.setOption(FijkOption.formatCategory, 'max-fps', 30); player.setOption(FijkOption.formatCategory, 'max-buffer-size', 0); if (Platform.isAndroid) {
player.setOption(FijkOption.formatCategory, 'buffer_size', 1048576);
player.setOption(FijkOption.playerCategory, 'min-frames', 5);
} else {
player.setOption(FijkOption.formatCategory, 'buffer_size', 0);
player.setOption(FijkOption.playerCategory, 'min-frames', 3);
} player.setOption(FijkOption.formatCategory, 'zerolatency', 1); player.setOption(FijkOption.playerCategory, 'max_cached_duration', 0); player.setOption(FijkOption.formatCategory, 'analyzemaxduration', 0); player.setOption(FijkOption.formatCategory, 'probesize', 32); player.setOption(FijkOption.formatCategory, 'timeout', 0); player.setOption(FijkOption.formatCategory, 'flush_packets', 1); player.setOption(FijkOption.playerCategory, 'videotoolbox', 1); player.setOption(FijkOption.playerCategory, 'videotoolbox-max-frame-width', 300); player.setOption(FijkOption.formatCategory, 'auto_convert', 0); player.setOption(FijkOption.formatCategory, 'reconnect', 1); player.setOption(FijkOption.codecCategory, 'skip_frame', 8); player.setOption(FijkOption.codecCategory, 'skip_loop_filter', 48); player.setOption(FijkOption.codecCategory, 'skip_idct', 48); player.setOption(FijkOption.playerCategory, 'framedrop', 1); player.setOption(FijkOption.playerCategory, 'packet-buffering', 0); player.setOption(FijkOption.playerCategory, 'infbuf', 1); player.setOption(FijkOption.formatCategory, 'max_delay', 0); player.setOption(FijkOption.playerCategory, 'render-wait-start', 1); player.setOption(FijkOption.formatCategory, 'err_detect', '0'); player.setOption(FijkOption.formatCategory, 'reorder_queue_size', 0); player.setOption(FijkOption.formatCategory, 'fflags', 'nobuffer+fastseek'); player.setOption(FijkOption.playerCategory, 'flags', 'low_delay'); player.open(
Media(
'rtsp://',
extras: <String, dynamic>{
'rtsp_transport': 'udp',
'fflags': 'nobuffer',
'flags': 'low_delay',
'probesize': '32',
'analyzeduration': '0',
'max_delay': '0',
'buffer_size': '0',
…
},
),
); VlcPlayer(
controller: VlcPlayerController.network(
AppConstants.rtspUrl,
options: VlcPlayerOptions(
advanced: VlcAdvancedOptions([
VlcAdvancedOptions.networkCaching(50),
VlcAdvancedOptions.liveCaching(50),
]),
video: VlcVideoOptions([
VlcVideoOptions.dropLateFrames(true),
VlcVideoOptions.skipFrames(true),
]),
),
),
…
);