PHPackages                             ekumanov/flarum-ext-inline-audio - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. ekumanov/flarum-ext-inline-audio

ActiveFlarum-extension[Image &amp; Media](/categories/media)

ekumanov/flarum-ext-inline-audio
================================

Automatically converts audio file links into inline players in posts, with optional \[player\] BBCode tag

v2.4.0(1mo ago)054↑66.7%MITJavaScriptPHP ^8.2

Since Mar 15Pushed 1mo agoCompare

[ Source](https://github.com/ekumanov/flarum-ext-inline-audio)[ Packagist](https://packagist.org/packages/ekumanov/flarum-ext-inline-audio)[ RSS](/packages/ekumanov-flarum-ext-inline-audio/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (17)Used By (0)

> ℹ️ If you've been using [Inline Audio (aka Audio URL to Player)](https://discuss.flarum.org/d/27255-inline-audio-aka-audio-url-to-player), that extension has been abandoned. This is a fresh, actively maintained replacement built for Flarum 2.0+ (and 1.8 via the [`1.x` branch](https://github.com/ekumanov/flarum-ext-inline-audio/tree/1.x)).

---

Inline Audio Player
-------------------

[](#inline-audio-player)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://github.com/ekumanov/flarum-ext-inline-audio/blob/main/LICENSE)[![Latest Stable Version](https://camo.githubusercontent.com/26dece07e9d488f3ceb8d2d2c8f1395a1c8829c0ccc3f8e1c10d01ba78306351/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f656b756d616e6f762f666c6172756d2d6578742d696e6c696e652d617564696f2e737667)](https://packagist.org/packages/ekumanov/flarum-ext-inline-audio)[![Total Downloads](https://camo.githubusercontent.com/da5003fb53cda26f3b1d48c2ecca2f35bd4b26a40be8dc751ee9ee3736d5923d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f656b756d616e6f762f666c6172756d2d6578742d696e6c696e652d617564696f2e737667)](https://packagist.org/packages/ekumanov/flarum-ext-inline-audio)

A Flarum extension that automatically converts audio file links in posts into clickable filenames backed by a shared overlay player bar, with an optional `[player]` BBCode tag.

Audio links are replaced with a compact filename button. Clicking it loads the track into a **fixed player bar** at the bottom of the page — keeping posts clean while giving you a persistent, always-visible player.

[![No player open](https://raw.githubusercontent.com/ekumanov/flarum-ext-inline-audio/main/docs/No%20player%20open.png)](https://raw.githubusercontent.com/ekumanov/flarum-ext-inline-audio/main/docs/No%20player%20open.png)

[![Player open](https://raw.githubusercontent.com/ekumanov/flarum-ext-inline-audio/main/docs/Player%20open.png)](https://raw.githubusercontent.com/ekumanov/flarum-ext-inline-audio/main/docs/Player%20open.png)

---

### Features

[](#features)

- Auto-detects links to audio files and replaces them with a clickable filename — no BBCode required
- Clicking a filename loads it into a **shared overlay player bar** fixed at the bottom of the page
- Clicking the same filename again **toggles play/pause**
- Clicking the track name in the bar **scrolls back to the source post**
- A **circle-play icon** precedes each filename in the post; it switches to a **pulsating circle-pause** while that track is playing
- When a new track starts, any currently playing audio is **stopped automatically** — one track at a time
- **Right-click a filename** to get the browser's native "Save link as" menu (configurable)
- **Download button** in the player bar; works correctly in all browsers including Safari (opt-in via admin settings)
- **Auto-play** on first click is configurable
- `[player]URL[/player]` BBCode for explicit embedding — identical behavior to auto-detected links
- The player bar follows the **Flarum theme** (light/dark) rather than the OS theme
- On narrow screens the filename expands to fill available width; audio controls shrink to their natural size
- The bar has a **close button** that stops playback and dismisses the bar
- Bar rises above the Flarum composer when it is open
- Accessible: keyboard navigation, screen reader labels, respects `prefers-reduced-motion`
- Works seamlessly with [FoF Upload](https://github.com/FriendsOfFlarum/upload) when using a filename-link upload template (see below)

**Supported formats:** `mp3` · `wav` · `ogg` · `flac` · `m4a` · `aac` · `webm` · `mp4` · `mpeg` · `mpg` · `wave`

---

### Installation

[](#installation)

```
composer require ekumanov/flarum-ext-inline-audio
```

### Update

[](#update)

```
composer update ekumanov/flarum-ext-inline-audio
php flarum cache:clear
```

### Uninstall

[](#uninstall)

```
composer remove ekumanov/flarum-ext-inline-audio
```

---

### Admin Settings

[](#admin-settings)

All settings are found under **Extensions → Inline Audio Player** in the admin panel.

SettingDefaultDescriptionShow download button on player barOffAdds a download icon to the overlay player barAllow right-click on filename to saveOnRenders the in-post filename as an `` link, enabling the browser's native "Save link as" on right-clickStart playing immediately when a filename is clickedOnAuto-plays the track when loaded; disable to require a manual play pressHide numeric prefix from uploaded filenamesOnStrips the `timestamp-userId-` prefix that FoF Upload adds (e.g. `1774205518-685373-song.mp3` → `song.mp3`)---

### BBCode

[](#bbcode)

```
[player]https://example.com/audio/track.mp3[/player]

```

---

### FoF Upload Integration

[](#fof-upload-integration)

If you use [FoF Upload](https://github.com/FriendsOfFlarum/upload) and want audio files to automatically render as inline players after uploading — without requiring users to manually wrap links in `[player]` tags — you can register a filename-link upload template in your forum's `extend.php`.

FoF Upload does not ship with this template; add it yourself as follows:

```
use FoF\Upload\Contracts\Template;
use FoF\Upload\File;
use Flarum\Foundation\AbstractServiceProvider;
use FoF\Upload\Helpers\Util;

class FilenameLink implements Template
{
    public function tag(): string   { return 'filenamelink'; }
    public function name(): string  { return 'Filename link'; }
    public function description(): string { return 'Generates a link with the filename as text'; }

    public function preview(File $file): string
    {
        return '[' . $file->base_name . '](' . $file->url . ')';
    }
}

class FilenameLinkServiceProvider extends AbstractServiceProvider
{
    public function register()
    {
        $this->container->make(Util::class)
            ->addRenderTemplate($this->container->make(FilenameLink::class));
    }
}

// In your return array:
(new Extend\ServiceProvider())->register(FilenameLinkServiceProvider::class),
```

Once registered, select **Filename link** as the upload template in the FoF Upload admin settings.

To restrict the template to audio files only, set a MIME type filter in FoF Upload using this regex:

```
^audio\/(flac|x-flac|mp3|x-mp3|mpg|mpeg|mpeg3|x-mpeg|x-mpeg3|x-mpg|x-mp4a|x-mpegaudio|mp4|vnd.wave|wav|wave|x-wav|x-pn-wav|ogg|x-ogg|x-ogg-flac)

```

---

### Compatibility

[](#compatibility)

BranchFlarum version`main` (this)Flarum 2.0+[`1.x`](https://github.com/ekumanov/flarum-ext-inline-audio/tree/1.x)Flarum 1.8---

### Links

[](#links)

- [GitHub](https://github.com/ekumanov/flarum-ext-inline-audio)
- [Packagist](https://packagist.org/packages/ekumanov/flarum-ext-inline-audio)

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance89

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

15

Last Release

53d ago

Major Versions

v1.0.1 → v2.0.0-beta.12026-03-17

v1.1.1 → v2.0.12026-03-17

v1.2.0 → v2.3.02026-03-18

v1.3.0 → v2.4.02026-03-19

### Community

Maintainers

![](https://www.gravatar.com/avatar/a23c4539c1c2283960743eb8b92e2c56fb2c5f33a7b44bd03a3d07b882fd67ed?d=identicon)[ekumanov](/maintainers/ekumanov)

---

Top Contributors

[![ekumanov](https://avatars.githubusercontent.com/u/24654623?v=4)](https://github.com/ekumanov "ekumanov (38 commits)")

---

Tags

audioextensioninlineflarumplayer

### Embed Badge

![Health badge](/badges/ekumanov-flarum-ext-inline-audio/health.svg)

```
[![Health](https://phpackages.com/badges/ekumanov-flarum-ext-inline-audio/health.svg)](https://phpackages.com/packages/ekumanov-flarum-ext-inline-audio)
```

###  Alternatives

[happyworm/jplayer

jPlayer allows you to create a media player with a consistent interface and experience across all browsers.

4.6k114.2k1](/packages/happyworm-jplayer)[laravel-admin-ext/media-player

Intergrates mediaelement into laravel-admin

3253.7k](/packages/laravel-admin-ext-media-player)[flarum-lang/french

French language pack to localize the Flarum forum software plus its official and third-party extensions.

2033.8k](/packages/flarum-lang-french)[flarum/gdpr

Features for GDPR, PII management

1425.2k15](/packages/flarum-gdpr)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
