Git Product home page Git Product logo

howler.blazor's Introduction

Howler.Blazor

A Blazor JSInterop wrapper for Howler.js.

NuGet: Howler.Blazor

Live Demo

https://stefh.github.io/Howler.Blazor

Usage

Install the NuGet

PM> Install-Package Howler.Blazor

Add the required dependency injections

public void ConfigureServices(IServiceCollection services)
{
+    services.AddScoped<IHowl, Howl>();
+    services.AddScoped<IHowlGlobal, HowlGlobal>();
}

Add the required javascripts to _Host.cshtml

<head>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.2/howler.core.min.js" integrity="sha256-q2vnVvwrx3RbYXPyAwx7c2npmULQg2VdCXBoJ5+iigs=" crossorigin="anonymous"></script>
+    <script src="_content/Howler.Blazor/JsInteropHowl.js"></script>
</head>

Use the player

@page "/example"
@using Howler.Blazor.Components

<!-- Inject services -->
@inject IHowl Howl
@inject IHowlGlobal HowlGlobal

<div>
    <button class="btn btn-primary oi oi-media-play" @onclick="Play"></button>
    <button class="btn btn-primary oi oi-media-stop" @onclick="Stop"></button>
    <button class="btn btn-primary oi oi-media-pause" @onclick="Pause"></button>
    <pre>TotalTime : @TotalTime</pre>
    <pre>State : @State</pre>
    <pre>Supported Codes : @SupportedCodes</pre>
</div>

@code {
    protected TimeSpan TotalTime;
    protected string State = "-";
    protected string SupportedCodes;

    protected override async Task OnInitializedAsync()
    {
        // Display all supported codecs
        var codecs = await HowlGlobal.GetCodecs();
        SupportedCodes = string.Join(", ", codecs);

        // Register callbacks
        Howl.OnPlay += e =>
        {
            State = "Playing";
            TotalTime = e.TotalTime;

            StateHasChanged();
        };

        Howl.OnStop += e =>
        {
            State = "Stopped";

            StateHasChanged();
        };

        Howl.OnPause += e =>
        {
            State = "Paused";

            StateHasChanged();
        };
    }

    protected async Task Play()
    {
        await Howl.Play("https://www.healingfrequenciesmusic.com/wp-content/uploads/2015/03/Love-Abounds-Sample.mp3?_=1");
    }

    protected async Task Stop()
    {
        await Howl.Stop();
    }

    protected async Task Pause()
    {
        await Howl.Pause();
    }
}

Example Page

Blazor-WebDAV-AudioPlayer

Example project

See

howler.blazor's People

Contributors

chris1411 avatar k-u-s avatar stefh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.