PHPackages                             hn/video - 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. hn/video

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

hn/video
========

TYPO3 extension that compresses videos during upload to 720p H.264 MP4 using ffmpeg.wasm for optimal compatibility and reduced storage. Additionally generates embedded poster images for improved video previews.

v2.2.1(4w ago)01.0kGPL-2.0-or-laterPHPPHP &gt;=8.2CI passing

Since Sep 24Pushed 4w agoCompare

[ Source](https://github.com/hauptsacheNet/video)[ Packagist](https://packagist.org/packages/hn/video)[ RSS](/packages/hn-video/feed)WikiDiscussions v2 Synced today

READMEChangelog (2)Dependencies (6)Versions (15)Used By (0)

[![Packagist Version](https://camo.githubusercontent.com/39348b54b8f3c53d46c0fc9fdd62660e3c292f2ef93854fedcc06d7a621dbf0d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f686e2f766964656f2e737667)](https://packagist.org/packages/hn/video)[![Packagist](https://camo.githubusercontent.com/ee19f6fd430574dacd94b3b5222ee15cb32fa1c6a441a33f58ac98857ef8dad0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f686e2f766964656f2e737667)](https://packagist.org/packages/hn/video)[![Packagist](https://camo.githubusercontent.com/f466dd1929ea5a078bd8e44a3f30a5baf8561531ec875db2d8be99a90628d4ed/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f686e2f766964656f2e737667)](https://packagist.org/packages/hn/video)[![Packagist](https://camo.githubusercontent.com/0ffe32e84b4d4a4d1f922c20d771517f8844149f75db6e7869ecd6b9bc0afae5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f686e2f766964656f2e737667)](https://packagist.org/packages/hn/video)

what does this extension do
---------------------------

[](#what-does-this-extension-do)

- It compresses videos during the upload process to 720p h264 mp4 file using a [web assembly version of ffmpeg](https://ffmpegwasm.netlify.app). This means there are no server dependencies for video compression.
    - This allows you to serve well compressed videos in a universally compatible format
    - It save storage space on your server by not uploading the original files
    - It potentially helps users upload videos that have a slow internet connection
- It automatically generates and embeds poster images (thumbnails) in MP4 files
    - Extracts a frame from the video and embeds it as cover art in the MP4
    - TYPO3's file processing system can extract these thumbnails for preview purposes
    - Automatically adds poster attributes to `` tags in frontend output
    - Provides better video file overview in the fileadmin and improved user experience

[![recording.clip.gif](recording.clip.gif)](recording.clip.gif)

installation
------------

[](#installation)

Running multithreaded WebAssembly comes with certain security requirements. To address these, browser vendors enforce the use of [specific cross-origin protections](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements).

For this extension to function correctly, the backend and JavaScript files require the following HTTP headers:

```
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
```

These headers can be configured in your .htaccess file or Apache server configuration as shown below:

```

    Header set Cross-Origin-Opener-Policy "same-origin"
    Header set Cross-Origin-Embedder-Policy "require-corp"

```

Adding these headers globally to your frontend might introduce unintended side effects. If you try to set it only for specific folders, make sure that all resources either have the header or don't have the header. Mixing them within a document leads to errors.

If the required headers are not properly configured, the extension will display a warning when accessing views containing the file uploader (e.g., the file list view).

### PHP Upload Size Configuration

[](#php-upload-size-configuration)

When working with video uploads, you should adjust your PHP configuration to accommodate larger file sizes. You can expect up to 30MB per minute of video, so set your upload limits accordingly. Add or modify the following settings in your PHP configuration (php.ini) or .htaccess file:

```
# In php.ini
upload_max_filesize = 300M
post_max_size = 300M

# Or in .htaccess (with mod_php only)

    php_value upload_max_filesize 300M
    php_value post_max_size 300M

```

known issues
------------

[](#known-issues)

- Empty folders in the Filelist have an upload button that avoids the drag-uploader in TYPO3 13.

testing thumbnail extraction
----------------------------

[](#testing-thumbnail-extraction)

You can test the thumbnail extraction functionality using the built-in commands:

```
# Test thumbnail extraction from a video file
docker compose exec php vendor/bin/typo3 video:test-thumbnail fileadmin/your-video.mp4

# Test file list thumbnail generation (like the TYPO3 backend does)
docker compose exec php vendor/bin/typo3 video:test-filelist fileadmin/your-video.mp4

# Test video tag generation with poster images (frontend rendering)
docker compose exec php vendor/bin/typo3 video:test-renderer fileadmin/your-video.mp4

# Run automated unit tests
docker compose exec php bash -c "cd packages/video && ../../vendor/bin/phpunit"
```

The test commands will:

- Analyze the video file to check for embedded poster images
- Extract the embedded poster image using pure PHP (no server-side FFmpeg required)
- Generate thumbnails in various sizes like the TYPO3 backend
- Test frontend video tag generation with automatic poster attributes
- Display detailed information about the extraction and rendering process

automated testing
-----------------

[](#automated-testing)

The extension includes comprehensive PHPUnit tests that verify:

- JPEG detection and extraction from MP4 files
- Data validation and image integrity
- Performance and consistency
- Error handling for edge cases

Run tests with: `docker compose exec php bash -c "cd packages/video && ../../vendor/bin/phpunit --testdox"`

future plans
------------

[](#future-plans)

- allow for quality configuration
    - the 720p default is a pretty good compromise between quality, compatibility and file size, but you might have different requirements
- hook into the file upload process to create HLS video fragments
    - reliably serve your videos to clients with a bad connection by offering different resolutions
    - can improve upload speeds with slow internet connections
    - avoid max upload size limits on your hoster
    - Cut videos by just modifying the playlist file. e.g. cut out the audio etc. Maybe even a tiny video editor in the backend.
- implement some form of optional server side video conversion
    - allows to use more complex video formats like av1 (which would take forever in wasm)
    - reduces requirements on the client computer (although increases internet bandwith requirement)

v1 vs v2
--------

[](#v1-vs-v2)

The old v1 video extension did work completely differently. It assumed that you upload original video files and that you want to exactly specify what format to use every time you embed a video. It therefore had to use server side video conversion or an api service. It was way too complicated for most use cases.

v2 is a completely different extension with a much simpler approach that will likely fit more users.

###  Health Score

54

—

FairBetter than 96% of packages

Maintenance94

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity79

Established project with proven stability

 Bus Factor1

Top contributor holds 87.5% 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 ~244 days

Recently: every ~75 days

Total

11

Last Release

29d ago

Major Versions

v1.0.0 → v2.0.0-alpha2024-10-14

PHP version history (3 changes)v1.0.0PHP ^7.1

v2.0.0PHP ^8.0

v2.1.0PHP &gt;=8.2

### Community

Maintainers

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

![](https://www.gravatar.com/avatar/698567b7927930e86ff0ac150a1b445b3631f3b99431201503dc6d3fdfd7a368?d=identicon)[kaywien](/maintainers/kaywien)

---

Top Contributors

[![Nemo64](https://avatars.githubusercontent.com/u/1749936?v=4)](https://github.com/Nemo64 "Nemo64 (21 commits)")[![claude](https://avatars.githubusercontent.com/u/81847?v=4)](https://github.com/claude "claude (2 commits)")[![hackerman26](https://avatars.githubusercontent.com/u/55436390?v=4)](https://github.com/hackerman26 "hackerman26 (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/hn-video/health.svg)

```
[![Health](https://phpackages.com/badges/hn-video/health.svg)](https://phpackages.com/packages/hn-video)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.1M8](/packages/netresearch-rte-ckeditor-image)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40529.5k](/packages/wazum-sluggi)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[typo3/cms-redirects

TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.

167.4M80](/packages/typo3-cms-redirects)[typo3/cms-adminpanel

TYPO3 CMS Admin Panel - The Admin Panel displays information about your site in the frontend and contains a range of metrics including debug and caching information.

115.7M66](/packages/typo3-cms-adminpanel)

PHPackages © 2026

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