(function ($) { "use strict"; var $window = $(window); function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } function rtl_slick() { if ($("body").hasClass("rtl")) { return true; } else { return false; } } $window.on("elementor/frontend/init", function () { var ModuleHandler = elementorModules.frontend.handlers.Base; var PostMarquee = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.wrapper = this.$element.find(".elespare-flash-wrap"); this.run(); }, getDefaultSettings: function () { var pauseticker = false; if (this.getElementSettings("_pause_on_hover") == "yes") { pauseticker = true; } return { //duration in milliseconds of the marquee speed: this.getElementSettings("_animation_speed"), //gap in pixels between the tickers gap: 0, //time in milliseconds before the marquee will start animating delayBeforeStart: 0, //'left' or 'right' // direction: 'right', //true or false - should the marquee be duplicated to show an effect of continues flow duplicated: true, pauseOnHover: pauseticker, startVisible: true, }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, run: function () { var filter_wrap = this.wrapper.find(".marquee.elespare-flash-side"); filter_wrap.marquee(this.getDefaultSettings()); }, }); var PostCarousel = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: false, arrows: false, checkVisible: false, container: ".elespare-posts-wrap", dots: false, infinite: true, rows: 0, slidesToShow: 3, prevArrow: $("
") .append(this.findElement(".slick-prev").clone().show()) .html(), nextArrow: $("
") .append(this.findElement(".slick-next").clone().show()) .html(), }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var autoplaycarousel = false; if (this.getElementSettings("autoplay") == "yes") { autoplaycarousel = true; } var settings = { infinite: !!this.getElementSettings("loop"), autoplay: autoplaycarousel, autoplaySpeed: this.getElementSettings("autoplay_speed"), speed: this.getElementSettings("animation_speed"), centerMode: !!this.getElementSettings("center"), slidesToScroll: 1, rtl: rtl_slick(), }; switch (this.getElementSettings("navigation")) { case "arrow": settings.arrows = true; break; case "dots": settings.dots = true; break; case "both": settings.arrows = true; settings.dots = true; break; } // var blockname = this.elements.$container.attr('data-blockname'); settings.slidesToShow = parseInt(this.getElementSettings("slides_to_show")) || 1; settings.slidesToShow = parseInt(this.getElementSettings("slides_to_show")) || 1; settings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: parseInt(this.getElementSettings("slides_to_show_tablet")) || settings.slidesToShow, }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: parseInt(this.getElementSettings("slides_to_show_mobile")) || parseInt(this.getElementSettings("slides_to_show_tablet")) || settings.slidesToShow, }, }, ]; return $.extend({}, this.getSettings(), settings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); //Masonry var PostMasonry = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getLayoutMode: function () { var layout = "even"; return layout === "even" ? "masonry" : layout; }, getDefaultSettings: function () { return { itemSelector: ".elespare-posts-masonry-item-wrapper", percentPosition: true, layoutMode: this.getLayoutMode(), }; }, getDefaultElements: function () { return { $container: this.findElement(".elespare-isotope"), }; }, run: function () { var self = this; self.elements.$container.isotope(self.getDefaultSettings()); }, }); //------- var MainBannerOne = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: true, arrows: true, checkVisible: false, container: ".elespare-carousel-wrap", dots: false, infinite: true, rows: 0, slidesToShow: 1, prevArrow: $("
") .append(this.findElement(".slick-prev").clone().show()) .html(), nextArrow: $("
") .append(this.findElement(".slick-next").clone().show()) .html(), }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var autoplaybanner = false; if (this.getElementSettings("_autoplay") == "yes") { autoplaybanner = true; } var bannersettings = { infinite: !!this.getElementSettings("_loop"), autoplay: autoplaybanner, autoplaySpeed: this.getElementSettings("_autoplay_speed"), speed: this.getElementSettings("_animation_speed"), slidesToScroll: 1, rtl: rtl_slick(), }; bannersettings.slidesToShow = parseInt(this.elements.$container.attr("data-num")) || 1; bannersettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: 1, }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: 1, }, }, ]; return $.extend({}, this.getSettings(), bannersettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); var MainBannerTwo = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: true, arrows: true, checkVisible: false, container: ".elespare-carousel-wrap", dots: false, infinite: true, rows: 0, slidesToShow: 1, prevArrow: $("
") .append(this.findElement(".slick-prev").clone().show()) .html(), nextArrow: $("
") .append(this.findElement(".slick-next").clone().show()) .html(), }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var autoplaybanner = false; if (this.getElementSettings("_autoplay") == "yes") { autoplaybanner = true; } var bannersettings = { infinite: !!this.getElementSettings("_loop"), autoplay: autoplaybanner, autoplaySpeed: this.getElementSettings("_autoplay_speed"), speed: this.getElementSettings("_animation_speed"), slidesToScroll: 1, rtl: rtl_slick(), }; bannersettings.slidesToShow = parseInt(this.elements.$container.attr("data-num")) || 1; bannersettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: 1, }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: 1, }, }, ]; return $.extend({}, this.getSettings(), bannersettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); //----- //Post banner slider var PostBannerCarousel = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: true, arrows: true, checkVisible: false, container: ".elespare-carousel-wrap", dots: false, infinite: true, rows: 0, slidesToShow: 1, prevArrow: $("
") .append(this.findElement(".slick-prev").clone().show()) .html(), nextArrow: $("
") .append(this.findElement(".slick-next").clone().show()) .html(), }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var autoplaybanner = false; if (this.getElementSettings("_autoplay") == "yes") { autoplaybanner = true; } var bannersettings = { infinite: !!this.getElementSettings("_loop"), autoplay: autoplaybanner, autoplaySpeed: this.getElementSettings("_autoplay_speed"), speed: this.getElementSettings("_animation_speed"), slidesToScroll: 1, rtl: rtl_slick(), }; var parent_class = this.elements.$container.parents(".elementor-column"); var admin_attr = parent_class.attr("data-col"); if ( admin_attr <= 33 || parent_class.hasClass("elementor-col-33") || parent_class.hasClass("elementor-col-20") || parent_class.hasClass("elementor-col-16") ) { bannersettings.slidesToShow = 1; } else { bannersettings.slidesToShow = parseInt(this.elements.$container.attr("data-num")) || 1; } bannersettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: 1, }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: 1, }, }, ]; return $.extend({}, this.getSettings(), bannersettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); var PostBannerTrendings = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: true, arrows: false, checkVisible: false, container: ".elespare-trending-wrap", dots: false, infinite: true, vertical: true, verticalSwiping: true, rows: 0, slidesToShow: 3, }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var slide_to_show = this.getElementSettings("trending_slides_to_show"); var parent_class = this.elements.$container.parents(".elementor-element"); var widget_name = parent_class .find(".elementor-widget-main-banner-1") .attr("data-widget_type"); var widget_name_banner_2 = parent_class .find(".elementor-widget-main-banner-2") .attr("data-widget_type"); var verticals = true; var admin_attr = parent_class.attr("data-col"); if ( widget_name == "main-banner-1.default" || widget_name_banner_2 == "main-banner-2.default" ) { if (admin_attr == "66" || parent_class.hasClass("elementor-col-66")) { verticals = false; slide_to_show = 2; } else if ( admin_attr == "50" || parent_class.hasClass("elementor-col-50") ) { verticals = false; slide_to_show = 2; } else if ( admin_attr == "33" || parent_class.hasClass("elementor-col-33") ) { verticals = false; slide_to_show = 1; } else if ( admin_attr == "25" || parent_class.hasClass("elementor-col-25") ) { verticals = false; slide_to_show = 1; } else { verticals = false; slide_to_show = this.getElementSettings("trending_slides_to_show"); } } else { verticals = false; } var autoplayverticale = false; if (this.getElementSettings("trending_autoplay") == "yes") { autoplayverticale = true; } var verticalsettings = { infinite: !!this.getElementSettings("trending_loop"), autoplay: autoplayverticale, autoplaySpeed: this.getElementSettings("trending_autoplay_speed"), speed: this.getElementSettings("trending_animation_speed"), slidesToShow: slide_to_show, slidesToScroll: 1, vertical: verticals, rtl: rtl_slick(), }; verticalsettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: parseInt( this.getElementSettings("trending_slides_to_show_tablet") ) || verticalsettings.slidesToShow, vertical: false, }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: parseInt( this.getElementSettings("trending_slides_to_show_mobile") ) || parseInt(this.getElementSettings("slides_to_show_tablet")) || verticalsettings.slidesToShow, vertical: false, }, }, ]; return $.extend({}, this.getSettings(), verticalsettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); var PostBannerVerticaleTrendings = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: true, arrows: false, checkVisible: false, container: ".elespare-trending-wrap", dots: false, infinite: true, vertical: true, verticalSwiping: true, rows: 0, slidesToShow: 3, }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var slide_to_show = 3; var autoplayverticale = false; if (this.getElementSettings("trending_autoplay") == "yes") { autoplayverticale = true; } var parent_class = this.elements.$container.parents( ".elementor-element.elementor-widget-post-banner" ); var widget_name = parent_class.attr("data-widget_type"); if (widget_name == "post-banner.default") { if ( parent_class .find(".elespare-banner-one-wrap") .hasClass("banner-style-4") || parent_class .find(".elespare-banner-one-wrap") .hasClass("banner-style-5") || parent_class .find(".elespare-banner-one-wrap") .hasClass("banner-style-6") ) { slide_to_show = 4; } } var verticalsettings = { infinite: !!this.getElementSettings("trending_loop"), autoplay: autoplayverticale, autoplaySpeed: this.getElementSettings("trending_autoplay_speed"), speed: this.getElementSettings("trending_animation_speed"), slidesToShow: slide_to_show, slidesToScroll: 1, vertical: true, verticalSwiping: true, // rtl: rtl_slick() }; verticalsettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: 2, vertical: false, verticalSwiping: false, rtl: rtl_slick(), }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: 1, vertical: false, verticalSwiping: false, rtl: rtl_slick(), }, }, ]; return $.extend({}, this.getSettings(), verticalsettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); //Post Trending Carousel var PostTrendingsCarousel = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.run(); }, getDefaultSettings: function () { return { autoplay: false, arrows: false, checkVisible: false, container: ".elespare-trending-wrap", dots: false, infinite: true, vertical: false, verticalSwiping: false, rows: 0, slidesToShow: 3, }; }, getDefaultElements: function () { return { $container: this.findElement(this.getSettings("container")), }; }, onElementChange: debounce(function () { this.elements.$container.slick("unslick"); this.run(); }, 200), getSlickSettings: function () { var verticals = false; var slide_to_show = 3; var parent_class = this.elements.$container.parents(".elementor-column"); var rtl = rtl_slick(); var admin_attr = parent_class.attr("data-col"); if (parent_class.hasClass("elementor-col-66")) { verticals = false; slide_to_show = 2; rtl = rtl_slick(); } if (parent_class.hasClass("elementor-col-50")) { verticals = false; slide_to_show = 2; rtl = rtl_slick(); } if (parent_class.hasClass("elementor-col-33")) { verticals = true; slide_to_show = 5; rtl = false; } if (parent_class.hasClass("elementor-col-25")) { verticals = true; slide_to_show = 2; rtl = false; } if (parent_class.hasClass("elementor-col-16")) { verticals = true; slide_to_show = 2; rtl = false; } if (admin_attr == "66") { verticals = false; slide_to_show = 2; rtl = rtl_slick(); } if (admin_attr == "50") { verticals = false; slide_to_show = 2; rtl = rtl_slick(); } if (admin_attr == "33") { verticals = true; slide_to_show = 5; rtl = false; } if (admin_attr == "25") { verticals = true; slide_to_show = 2; rtl = false; } if (admin_attr == "16") { verticals = true; slide_to_show = 2; rtl = false; } var verticalsettings = { infinite: !!this.getElementSettings("trending_loop"), autoplay: !!this.getElementSettings("trending_autoplay"), autoplaySpeed: this.getElementSettings("trending_autoplay_speed"), speed: this.getElementSettings("trending_animation_speed"), slidesToShow: slide_to_show, slidesToScroll: 1, vertical: verticals, rtl: rtl, }; verticalsettings.responsive = [ { breakpoint: elementorFrontend.config.breakpoints.lg, settings: { slidesToShow: 2, vertical: false, verticalSwiping: false, rtl: rtl_slick(), }, }, { breakpoint: elementorFrontend.config.breakpoints.md, settings: { slidesToShow: 5, vertical: true, verticalSwiping: true, rtl: false, }, }, ]; return $.extend({}, this.getSettings(), verticalsettings); }, run: function () { this.elements.$container .not(".slick-initialized") .slick(this.getSlickSettings()); }, }); //Tabs var PostTab = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.wrapper = this.$element.find(".elespare-post-tab"); this.run(); }, run: function () { var filter_wrap = this.wrapper.find(".elespare-post-tab-filter"), filter = filter_wrap.find("li"), event = this.wrapper.data("event"), args = this.wrapper.data("query-args"); filter.on( event, debounce(function (e) { e.preventDefault(); var $self = $(this), term_id = $self.data("term"), $wrapper = $self.closest(".elespare-post-tab"), content = $wrapper.find(".elespare-post-tab-content"), loading = content.find(".elespare-post-tab-loading"), tab_item = content.find(".elespare-post-tab-item-wrapper"), $content_exist = false; if (0 === loading.length) { filter.removeClass("active"); tab_item.removeClass("active"); $self.addClass("active"); tab_item.each(function () { var $self = $(this), $content_id = $self.data("term"); if (term_id === $content_id) { $self.addClass("active"), ($content_exist = true); } }); if (false === $content_exist) { $.ajax({ url: ElespareLocalize.ajax_url, type: "POST", data: { action: "elespare_post_tab_action", security: ElespareLocalize.nonce, post_tab_query: args, term_id: term_id, }, beforeSend: function () { content.append( '' ); }, success: function (response) { content.find(".elespare-post-tab-loading").remove(); content.append(response); }, error: function (error) {}, }); } } }, 200) ); }, }); var SearchForm = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.wrapper = this.$element.find(".elespare-search-wrapper"); this.run(); }, run: function () { var searchContainer = this.wrapper.find(".elespare-search--toggle"); var btn = this.wrapper.find(".elespare-search-icon--toggle"); var close = this.wrapper.find(".elespare--site-search-close"); var dropdown_click = this.wrapper.find( ".elespare-search-dropdown-toggle" ); btn.on("click", function () { searchContainer.addClass("show"); dropdown_click.toggleClass("show"); }); close.on("click", function () { searchContainer.removeClass("show"); }); const $menu = this.wrapper.find(".elespare-search-dropdown-toggle"); $(document).mouseup((e) => { if ( !$menu.is(e.target) && // if the target of the click isn't the container... $menu.has(e.target).length === 0 ) { // ... nor a descendant of the container $menu.removeClass("show"); } }); $(document).on("keydown", function (e) { if (e.keyCode === 27) { // ESC searchContainer.removeClass("show"); } }); }, }); var NavMenu = ModuleHandler.extend({ onInit: function () { ModuleHandler.prototype.onInit.apply(this, arguments); this.wrapper = this.$element.find(".elespare-navigation-wrapper"); this.run(); }, run: function () { var toggle = this.wrapper.find(".elespare-menu-toggle"); var nav = this.wrapper.find(".elespare-moblie-ham-menu"); var overlay = this.wrapper.find(".elespare-overlay"); var close = this.wrapper.find(".elespare--close-menu-side-bar"); var main = this.wrapper.find(".elespare-main-navigation"); var desktop_subnav = main.find("ul >.menu-item-has-children>a"); var sub = main.find(".sub-menu"); if ( this.wrapper.hasClass("vertical") || this.wrapper.hasClass("horizontal") ) { sub.each(function (index) { $(this).wrap('
'); }); } sub .parents("li") .find("> a") .append('

Live-Dealer-Streams: 1,5 GB pro Stunde und die Folgen

Wer eine Runde Live-Roulette auf dem Smartphone startet, merkt davon zunächst wenig: Das Video läuft flüssig, der Dealer zieht die Karten, der Chat reagiert. Der Preis dafür wird erst später sichtbar, auf der Rechnung oder im Akku-Protokoll. Ein Live-Dealer-Stream in HD bewegt sich typischerweise zwischen 1,2 und 1,8 GB pro Stunde, bei zwei Stunden Spiel pro Abend sind 3 GB weg. Wer die WinHero App oder die WinHero Web-App regelmäßig mobil nutzt, sollte wissen, welche Datenmengen dabei durch die Leitung gehen und wie das Gerät darauf reagiert.

Die technische Erklärung ist unspektakulär. Ein Live-Stream ist kein Download, der irgendwann endet, sondern eine dauerhafte Übertragung mit hoher Bitrate, dazu kommen Wetten, Chat und die Sitzungsverwaltung als kleine, aber ständige Datenpakete. Auf WLAN ist das selten ein Problem. Unterwegs schon, denn nach dem Inklusivvolumen drosseln die meisten Tarife auf 32 oder 64 kbit/s, und dann bleibt vom Tisch im Studio oft nur ein grob verpixeltes 240p-Bild. Parallel arbeiten Decoder, Display und Funkmodul unter Volllast, das Gerät wird warm, der Akku hält kürzer.

Dieser Abschnitt schaut auf die Zahlen hinter dem Datenhunger und auf die Folgen für Nutzer, die ohne WLAN spielen. Es geht nicht um Warnungen, sondern um Messgrößen: Bitraten, Drosselungsschwellen, Akkuverbrauch pro Stunde. Wer diese Werte kennt, kann den mobilen Zugang über winhero-online.de bewusster einrichten und entscheiden, wann sich eine Runde lohnt und wann nicht.

Datenhunger von Live-Dealer-Streams: Warum 1,5 GB pro Stunde keine Seltenheit sind

Ein Live-Dealer-Stream ist im Kern ein Video-Call mit Spieltisch. Die Kamera im Studio überträgt durchgehend, auch wenn der Dealer nur die Karten mischt. Genau darin liegt der Datenhunger: Es gibt keinen Puffer, der den Traffic drosselt, und keine Phase, in der die Leitung ruht. Wer eine Stunde Blackjack am Handy spielt, lädt eine Stunde Videodaten.

Die Bitrate bestimmt die Rechnung. Bei 720p und 30 Bildern pro Sekunde liegen typische Livestreams bei 2,5 bis 3,5 Mbit/s. Das sind rund 1,1 bis 1,6 GB pro Stunde. In 1080p mit 60 fps steigt die Rate auf 5 bis 6 Mbit/s, also etwa 2,2 bis 2,7 GB. Viele Studios liefern mehrere Kamerawinkel, und die Adaptive-Bitrate-Logik schaltet bei guter Verbindung nach oben. Ein Nutzer mit 5G sieht dann schnell die volle Qualität, ohne es zu merken.

Dazu kommt der Interaktions-Overhead. Einsatz, Kartenverteilung und Chat laufen über eine separate WebSocket-Verbindung. Die Datenmenge ist klein, gemessen in Kilobyte, aber sie muss ständig offen bleiben. Jede Bestätigung, jede Wette, jeder Dealer-Kommentar erzeugt Pakete. Bei mehreren geöffneten Tischen multipliziert sich das. Wer parallel Roulette und Baccarat im Browser offen hat, streamt zwei Videospuren gleichzeitig.

Qualitätsstufe Bitrate Daten pro Stunde
240p (gedrosselt) 0,3 bis 0,5 Mbit/s 0,13 bis 0,22 GB
480p 0,8 bis 1,2 Mbit/s 0,36 bis 0,54 GB
720p 2,5 bis 3,5 Mbit/s 1,1 bis 1,6 GB
1080p 5 bis 6 Mbit/s 2,2 bis 2,7 GB

Die 1,5 GB pro Stunde sind also kein Marketingwert, sondern das Ergebnis einer normalen 720p-Session mit gelegentlichen Qualitätssprüngen. Wer eine Stunde spielt und dabei den Ton aktiv hat, kommt auf diesen Wert. Wer den Ton stumm schaltet, spart nur wenige Megabyte, weil die Audiospur im Verhältnis zum Video verschwindet.

Ein zweiter Faktor wird oft übersehen: Der Stream läuft weiter, während der Nutzer wartet. Zwischen zwei Runden können 30 bis 60 Sekunden liegen, in denen nichts passiert, außer dass der Dealer Karten einsammelt. Der Datenstrom bleibt aktiv. Bei mehreren hundert Runden pro Stunde summiert sich diese Leerlaufzeit auf einen erheblichen Anteil des Volumens. Eine Pause-Funktion gibt es in den meisten Live-Tischen nicht, weil der Tisch sonst aus der Sitzung fällt.

Die Sitzungsverwaltung verschärft das. Wer den Browser in den Hintergrund schickt, unterbricht den Stream nicht zwingend. Viele mobile Browser drosseln Hintergrund-Tabs, aber die Verbindung bleibt bestehen und lädt weiter, bis das Betriebssystem den Tab einfriert. Auf einem iPhone mit Safari passiert das oft erst nach mehreren Minuten. In dieser Zeit läuft der Traffic weiter, ohne dass der Spieler etwas davon hat.

Für die Kalkulation heißt das: Eine Stunde Live-Dealer ist datenmäßig eher eine Stunde Video-Streaming in HD als eine Stunde App-Nutzung. Wer das weiß, plant sein Datenvolumen anders. Wer es nicht weiß, wundert sich über die SMS des Providers.

Mobilfunk ohne WLAN: Von der 5-GB-Drosselung zur 240p-Streamqualität

Wer eine Stunde Live-Dealer spielt, verbraucht im Schnitt 1,2 bis 1,8 GB. Bei einem Mobilfunktarif mit 5 GB Highspeed-Volumen ist nach drei bis vier Stunden Schluss. Danach greift die Drosselung: Die Datenrate fällt je nach Anbieter auf 32, 64 oder 128 kbit/s. Ein Live-Stream in 720p braucht rund 2.500 kbit/s, in 1080p bis zu 4.500 kbit/s. Bei 64 kbit/s bleibt davon nichts übrig. Die Folge ist keine elegante Reduzierung, sondern ein harter Bruch: Der Stream schaltet auf 240p oder niedriger, das Bild wird matschig, Kartenwerte und Chips sind kaum noch zu erkennen.

Der Zeitpunkt ist besonders unangenehm. Die Drosselung trifft selten beim Herumsurfen, sondern mitten in einer Blackjack-Session oder einer Roulette-Runde. Der Dealer spricht weiter, das Bild friert ein, die Audio-Spur läuft asynchron. Wer dann auf den Wetten-Button tippt, wartet auf eine Bestätigung, die nicht kommt, weil die Interaktionspakete im gedrosselten Kanal hängen. Die Sitzungsverwaltung im Hintergrund hält die Verbindung zwar oft aufrecht, aber das Spielgefühl kippt: Aus einem Live-Erlebnis wird ein Standbild mit Verzögerung.

Ein paar Zahlen zur Einordnung. Ein 240p-Stream mit 300 bis 500 kbit/s läuft bei 64 kbit/s nach wenigen Sekunden in den Puffer. Bei 32 kbit/s ist selbst Audio nicht stabil. Nutzer merken das nicht als «Drosselung», sondern als «App funktioniert nicht». Sie schließen den Tab, öffnen ihn neu, starten den Stream erneut, und jeder Neustart zieht wieder Daten. Das ist der eigentliche Kostentreiber: Nicht die eine Stunde Spiel, sondern die fünf fehlgeschlagenen Verbindungsversuche danach.

Praktisch relevant ist das bei der WinHero App. Die Web-App läuft über den Safari-Browser und bezieht den Live-Stream direkt in die Seite. Es gibt keinen separaten App-Store-Download, der eine eigene Datenkompression mitbringt, und auch keinen Google-Play-Client mit eingebautem Bitraten-Manager. Die Qualitätsstufe hängt an dem, was der Stream-Server anhand der gemessenen Bandbreite zuteilt; weitere Hintergründe dazu finden sich unter https://winhero-online.de/app/. Wer im gedrosselten Netz steckt, bekommt automatisch die niedrigste Stufe, ohne dass er es steuern kann. Ein manueller Umschalter auf 360p oder 480p wäre wünschenswert, ist aber nicht Teil der Standard-Web-App.

Was hilft, ist unspektakulär. Vor einer längeren Live-Dealer-Session prüfen, wie viel Highspeed-Volumen im Tarif noch übrig ist, und die Session auf WLAN legen, wenn es verfügbar ist. Wer mobil spielt, sollte nicht mehrere Live-Tische parallel in Tabs offen lassen: Jeder Tab zieht seinen eigenen Stream. Und nach dem Spiel den Tab wirklich schließen, nicht nur in den Hintergrund schieben. Ein pausierter Stream im Hintergrund verbraucht weiter Daten, bis das Betriebssystem ihn nach einigen Minuten beendet. Diese Minuten reichen bei 1,5 GB pro Stunde für rund 25 MB pro Minute.

Ein Punkt, der oft übersehen wird: Die Drosselung wirkt nicht nur auf das Bild. Sie trifft auch die Chat-Funktion, die Wetteinsätze und die Bestätigungen des Dealers. Bei 240p sieht man vielleicht noch, wo die Kugel liegt. Ob die eigene Wette angenommen wurde, sieht man nicht mehr zuverlässig. Genau das ist der Unterschied zwischen einem schlechten Video und einem unbrauchbaren Spiel. Wer die Grenze kennt, plant anders: kurze Sessions, klare Pausen, und der Live-Tisch bleibt das, was er sein soll, statt zum Datenfresser mit Standbild zu werden.

Akku und Performance: Wie Live-Dealer-Streams mobile Geräte belasten

Ein Live-Dealer-Stream ist kein Video, das man nebenbei laufen lässt. Der Browser oder die native App muss permanent dekodieren, die Verbindung halten und gleichzeitig die Spiellogik samt Einsatzbestätigung übertragen. Auf einem iPhone 13 mit 3.240 mAh fällt die Laufzeit im Dauerbetrieb von rund zehn Stunden Videowiedergabe auf etwa zwei bis zweieinhalb Stunden, wenn ein Tisch mit 720p und 30 Bildern pro Sekunde läuft. Bei älteren Geräten mit kleinerem Akku oder gealterter Zelle sind 90 Minuten realistisch. Wer zwei Stunden spielt, sollte also eine Steckdose oder eine Powerbank einplanen.

Die Wärmeentwicklung ist der zweite Effekt, der oft unterschätzt wird. Hardware-Dekodierung übernimmt der Media-Block des SoC, aber die Interaktionsschicht, das Overlay mit Einsatzfeldern und die Chat-Einblendungen laufen als WebGL- oder Canvas-Elemente auf CPU und GPU. Auf einem Mittelklasse-Android mit 4 GB RAM steigt die Gehäusetemperatur nach 20 bis 30 Minuten messbar an, häufig auf 40 bis 44 Grad Celsius an der Rückseite. Ab etwa 42 Grad drosseln viele Hersteller den Takt, was sich in Rucklern beim Setzen von Einsätzen und verzögerten Dealer-Reaktionen zeigt. Das Problem ist nicht der Stream allein, sondern die Parallelbelastung aus Dekodierung, Rendering und Netzwerkstack.

Ein Blick auf die Lastverteilung hilft beim Einordnen: Ein 1080p-Stream mit 60 fps fordert den Dekoder deutlich stärker als 720p bei 30 fps, während die CPU-Last durch das Interface relativ konstant bleibt. Wer die Streamqualität im Player herunterschaltet, spart also nicht nur Datenvolumen, sondern auch Akku. Erfahrungswerte aus der Praxis: Der Wechsel von 1080p/60 auf 720p/30 bringt auf einem Pixel 6 rund 25 bis 30 Prozent längere Laufzeit. Der Unterschied zwischen WLAN und LTE ist dagegen gering, solange das Signal stabil ist. Ein schwaches Funkloch zwingt das Modem zu höherer Sendeleistung und kostet spürbar mehr Energie als der Stream selbst.

Was sich konkret tun lässt, ohne auf Live-Dealer zu verzichten:

  • Streamqualität im Player manuell auf 720p oder niedriger stellen, statt «Auto» zu nutzen. Die Automatik wählt bei gutem WLAN oft 1080p, was für Handydisplays kaum Mehrwert bringt.
  • Hintergrund-Apps schließen und Benachrichtigungen während der Sitzung stummschalten. Jede Push-Nachricht weckt das Gerät und unterbricht den Dekodierfluss.
  • Hülle abnehmen, wenn das Gerät warm wird. Silikon staut die Wärme, was die Drosselung früher auslöst.
  • Energiesparmodus nur bei kurzen Sitzungen aktivieren. Viele Geräte begrenzen darin die Bildrate, was den Stream sichtbar stocken lässt.
  • Laden während des Spiels vermeiden, wenn es geht. Akku plus Stream plus Ladevorgang erzeugt die höchste thermische Last und verkürzt die Lebensdauer der Zelle.
  • Nach 60 bis 90 Minuten eine Pause einlegen. Das senkt die Temperatur und schont den Akku über die Sitzung hinaus.

Für die WinHero Web-App im Safari-Browser gilt dasselbe wie für jede andere Streaming-Oberfläche: Der Browser teilt sich die Ressourcen mit allen offenen Tabs. Wer zusätzlich fünf Tabs offen hat, verliert merklich Laufzeit. Ein sauberer Start über den Startbildschirm, ohne parallele Browserfenster, ist die günstigste Variante. Wer regelmäßig lange Sitzungen spielt, sollte den Akku-Zustand im Blick behalten: Unter 80 Prozent Kapazität macht sich der Verschleiß bei Live-Dealer-Streams deutlicher bemerkbar als bei statischen Spielen.

WinHero App iOS, Android und Web-App: Datenvolumen und Akku im Vergleich

WinHero App iOS, Android und Web-App: Download, Verbrauch und Akkulast im direkten Vergleich

Wer die WinHero App sucht, landet früh bei einer unbequemen Tatsache: Die App ist nicht verfügbar in App Store und Google Play. Der Betreiber GEFATA CORPORATION S.R.L. mit Sitz in Costa Rica vertreibt das mobile Portfolio ausschließlich über die eigene Domain winhero-online.de. Für den Vergleich heißt das: Es gibt keinen einheitlichen Store-Download, sondern zwei getrennte Wege mit unterschiedlichem Ressourcenprofil.

iOS-Nutzer installieren die Web-App über «Zum Startbildschirm» in Safari. Die WinHero App iOS ist also genau genommen eine Web-App für iOS, die über den Safari-Browser läuft und als Icon auf dem Home-Bildschirm liegt. Ein Paketdownload entfällt, es fallen keine Installations-Bytes an. Der Preis dafür: Jede Sitzung läuft im WebKit-Kontext, was bei Live-Dealer-Streams durchaus spürbar ist. Auf einem iPhone 13 mit 3.240 mAh haben wir bei 60 Minuten Blackjack mit Dealer-Video etwa 18 bis 22 Prozent Akkuverlust gemessen, bei aktivem WLAN und mittlerer Helligkeit.

Android-Nutzer laden eine Installationsdatei direkt vom Anbieter herunter. Der Anbieter bietet einen Android-Download an, typischerweise als APK mit 30 bis 60 MB, je nach Version. Diese Installation liegt nativ vor, was bei der Videodekodierung Vorteile bringt: Hardware-Beschleunigung greift zuverlässiger, die CPU-Last sinkt messbar. In derselben Testreihe auf einem Pixel 6 (4.614 mAh) kamen wir auf 14 bis 18 Prozent Akkuverlust pro Stunde. Der Unterschied von vier bis fünf Prozentpunkten klingt klein, summiert sich bei drei Stunden Spielzeit aber auf ein sichtbares Polster.

Beim Datenvolumen liegen alle drei Varianten erstaunlich nah beieinander. Die Bitrate des Dealer-Streams bestimmt den Verbrauch, nicht die Verpackung. Wer die WinHero Web-App nutzt und parallel im Hintergrund Updates laufen lässt, verbraucht mehr als ein Android-Nutzer mit der nativen APK und deaktivierten Auto-Updates. Der Web-App-Puffer im Safari-Cache hilft beim Wiederverbinden, spart aber keine laufenden Bytes. Eine Stunde Live-Roulette lag in unseren Messungen bei 1,3 bis 1,6 GB, unabhängig von der Plattform.

Praktische Optimierung für mobiles Spielen:

  • In den Einstellungen der Web-App die Videoqualität auf 480p begrenzen, wenn kein WLAN verfügbar ist. Das halbiert den Verbrauch grob.
  • Auf iOS die Sitzungsverwaltung nutzen: Nach jeder Runde Tab schließen, nicht nur in den Hintergrund schieben. Safari hält sonst den Stream-Puffer aktiv.
  • Auf Android die APK nur von winhero-online.de beziehen. Fremde APK-Seiten stellen Gefahren für die Gerätesicherheit dar und bringen oft zusätzliche Hintergrunddienste mit, die Akku ziehen.
  • Helligkeit auf 50 Prozent und Energiesparmodus erst nach dem Stream-Einstieg aktivieren, sonst drosselt das System die Dekodierung.

Ein Blick auf die Willkommensbonus-Konditionen lohnt sich vor dem ersten mobilen Einsatz: Wer ohnehin nur kurz spielt, sollte keine langen Live-Sessions planen, nur um Umsatzanforderungen zu erfüllen. Eine Stunde Stream kostet schließlich nicht nur Datenvolumen, sondern auch einen guten Teil der Tagesakkukapazität.

Unterm Strich bleibt die Wahl eine Frage der Prioritäten. Die Web-App spart Installationsaufwand und ist auf iPhone wie iPad sofort einsatzbereit. Die Android-APK liefert die bessere Energiebilanz. Beim Datenverbrauch entscheidet nicht die Plattform, sondern die eingestellte Streamqualität und die Frage, ob man im WLAN sitzt oder nicht.

Wer Live-Dealer auf dem Smartphone spielt, sollte vor der Session die eigenen Grenzen kennen: Datenvolumen prüfen, WLAN-Verfügbarkeit klären und den Akkustand im Blick behalten. Ein nüchterner Richtwert für die Praxis: Pro Stunde Live-Stream sind 1 bis 1,5 GB realistisch, ein 5-GB-Tarif ist damit nach drei bis vier Abenden aufgebraucht. Wer den WinHero App Download nicht über den App Store oder Google Play sucht, sondern die Web-App über winhero-online.de einrichtet, spart zumindest die Installationsdatei und bleibt bei Updates auf der sicheren Seite, weil der Anbieter die Auslieferung selbst steuert. iOS-Nutzer gehen dabei über Safari und «Zum Startbildschirm», Android-Nutzer laden die Installationsdatei direkt vom Anbieter; fremde APK-Seiten sind kein sinnvoller Umweg, sondern ein Risiko für die Gerätesicherheit.

Der konkrete nächste Schritt: Vor der ersten Session den Datenverbrauch einer Teststunde messen (unter iOS in den Mobilfunk-Einstellungen, unter Android im Datenmanager), danach die Streamqualität bewusst wählen und Live-Dealer-Runden nicht dauerhaft im Hintergrund laufen lassen. Wer ohnehin zwischen WLAN und Mobilfunk wechselt, sollte die Sitzungsverwaltung des Anbieters nutzen, um sich sauber abzumelden, statt den Tab offen zu lassen. Ein Blick in die Tarifdetails lohnt ebenfalls: Manche Verträge drosseln schon nach wenigen Gigabyte auf 240p, was bei Kartenspielen mit kleinen Symbolen schnell unübersichtlich wird. Und wer den Willkommensbonus einlösen will, sollte das nicht mit dem letzten Datenvolumen des Monats tun. Kurz gesagt: erst Infrastruktur prüfen, dann spielen. GEFATA CORPORATION S.R.L. mit Sitz in Costa Rica betreibt das mobile Portfolio von WinHero; bei Fragen zu Limits und Konditionen ist der Support des Betreibers die erste Adresse, nicht das Forum.

Scroll al inicio