Sinaxxr.FFME.Windows
8.1.361-sinaxxr.8
See the version list below for details.
dotnet add package Sinaxxr.FFME.Windows --version 8.1.361-sinaxxr.8
NuGet\Install-Package Sinaxxr.FFME.Windows -Version 8.1.361-sinaxxr.8
<PackageReference Include="Sinaxxr.FFME.Windows" Version="8.1.361-sinaxxr.8" />
<PackageVersion Include="Sinaxxr.FFME.Windows" Version="8.1.361-sinaxxr.8" />
<PackageReference Include="Sinaxxr.FFME.Windows" />
paket add Sinaxxr.FFME.Windows --version 8.1.361-sinaxxr.8
#r "nuget: Sinaxxr.FFME.Windows, 8.1.361-sinaxxr.8"
#:package Sinaxxr.FFME.Windows@8.1.361-sinaxxr.8
#addin nuget:?package=Sinaxxr.FFME.Windows&version=8.1.361-sinaxxr.8&prerelease
#tool nuget:?package=Sinaxxr.FFME.Windows&version=8.1.361-sinaxxr.8&prerelease
Fork of Unosquare.FFME upgraded to FFmpeg 8.1 with lifecycle and performance work: ThreadPool-free engine (every worker on a dedicated thread, event-driven command dispatch), DirectSoundPlayer audio output, deterministic teardown, spurious-MediaEnded fix, UI-decoupled video rendering. Native FFmpeg binaries are not included; see repository for installation notes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- FFmpeg.AutoGen (>= 8.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.1.361-sinaxxr.9 | 75 | 8/27/2026 |
| 8.1.361-sinaxxr.8 | 76 | 7/27/2026 |
| 8.1.361-sinaxxr.7 | 73 | 7/10/2026 |
| 8.0.361-sinaxxr.2 | 126 | 4/26/2026 |
| 8.0.361-sinaxxr.1 | 87 | 4/25/2026 |
8.1.361-sinaxxr.8: IsBuffering gains hysteresis. Previously the flag recomputed as "reader wants packets AND queue below full" every buffering-stats update; on local files the packet queue oscillates by one packet around the reader's pause threshold at steady state, flapping IsBuffering (and the BufferingStarted/BufferingEnded events, each a UI-dispatcher post) once per consumed packet — ~17-20 times per second per playing clip, continuously. Buffering now engages only when genuinely starved (sync-buffering or BufferingProgress below 0.5) and releases only when replenished (reader satisfied, or full buffer outside sync-buffering); between thresholds the state holds. Events now mark real starvation boundaries: open, seek/loop flush, actual underruns.
8.1.361-sinaxxr.7: Command dispatch moves off the ThreadPool. IntervalWorkerBase now runs each worker (CommandManager, log flusher, LegacyAudioPlayer) on its own dedicated AboveNormal thread and the shared StepTimer is deleted — under pool saturation, play/pause/seek dispatch lagged 500+ ms and every 15 ms tick paid one no-op pool dispatch per open element. Play/pause/seek/stop now wake the command thread immediately on enqueue (sub-millisecond dispatch).
8.1.361-sinaxxr.6: Video render no longer blocks the engine's Highest-priority quantum thread on a synchronous UI dispatch. WriteableBitmap updates post to the dispatcher fire-and-forget (coalesced to one in-flight per renderer); the InteropBitmap renderer stops waiting on its UI invalidation. UI stalls can no longer starve audio feeding, clock updates, or end-of-media detection, and many concurrent elements no longer convoy their render workers on the single dispatcher thread.
8.1.361-sinaxxr.5: Fix spurious MediaEnded on reused elements. New engine invariant: MediaEnded cannot fire for an open generation that has never rendered a main-component block. An open-generation token invalidates stale queued MediaEnded dispatcher delegates (including their LoopingBehavior Stop/Close actions) across Close/Open, and guards the decode worker's HasDecodingEnded publication against straggler cycles. Consumers no longer need pre-open Stop()+Close() or Seek(0)-after-Open workarounds.
8.1.361-sinaxxr.4: Deterministic teardown. DirectSound COM objects are released on their owning cycle thread (never the finalizer thread); worker disposal stops cycles deterministically and joins dedicated threads; concurrent double-close (interrupt-close racing dispose) is serialized; renderer close is exception-isolated; decode calls run under the container decode lock so disposal cannot free a codec context mid-decode; audio device creation failures degrade to no-audio instead of orphaning COM state.
8.1.361-sinaxxr.3: Upgrade to FFmpeg 8.1 (FFmpeg.AutoGen 8.1.0). Sonames unchanged from 8.0 (avcodec-62 et al.); pair with BtbN n8.1 win64-gpl-shared binaries.
8.0.361-sinaxxr.2: Fix heap corruption (0xc0000374) on H.264 video with non-mod-16 visible width/height. Root cause: sws_scale's SIMD output kernel writes 16-pixel-wide chunks and overruns an exactly-sized destination buffer by up to 15 pixels. VideoBlock.Allocate now over-allocates row stride to a 16-pixel boundary; VideoRenderer copies row-by-row when source/destination strides differ.
8.0.361-sinaxxr.1: Fork of Unosquare.FFME upgraded to FFmpeg 8 / FFmpeg.AutoGen 8.0.0.1, dedicated decode/read worker threads, DirectSoundPlayer audio output, seek-to-zero close/open workaround.
This package does not contain the required FFmpeg binaries. See repository README for installation instructions: https://github.com/sinaxxr/ffmediaelement