Releases: SuRGeoNix/Flyleaf
Flyleaf v3.5.10 (AIO x64 .NET6 with FFmpeg v4/v5)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
- Engine: Fixes an issue with engine's thread for stats calculation while using multiple players
- Config: Adds Config.Subtitles.Parser for custom formatting/parsing
- Config: Adds Config.Player.MaxLatency for the new low latency with audio implementation which is embedded to default AVS usage
- Player: Fixes a thread safety issue during Stop and Open/OpenAsync/Config.Video.AspectRatio change
- Player: Adds Usage.ZeroLatencyAudioVideo for another low latency which supports audio with (no respect to min buffer or max latency)
- Player: Improves speed playback
- Plugins: Improves handling with media file extensions
- Renderer: Fixes a rendering issue while the Player was buffering (no layout update)
- VideoView: Fixes an issue with jitter while dragging (DPI)
- VideoView: Fixes an issue with Subscribe Events on early player assignment (mainly for front window)
- VideoView: Fixes an issue with front window's visibility
- VideoView: Fixes an issue with early actions (eg. swapping when collapsed in a tab control) before the template has been applied by creating winforms control earlier
- Controls.WPF: Includes the new Max Latency in Settings
- Controls.WPF: Updates FlyleafLib, MaterialDesign and Dragablz
Flyleaf v3.5.8 (AIO x64 .NET6 with FFmpeg v4/v5)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
- Player: Introduces TakeSnapshotToBitmap and renames old TakeSnapshot to TakeSnapshotToFile
- Player: Fixes a critical issue with playlists (switching between playlist streams)
- Renderer: Fixes issues and improves GetBitmap
- Logger: Improves file writer with caching and by avoiding writing to file from UI thread
- Engine.Config: Introduces LogCachedLines to set cached lines before writing/flushing to file
- Plugins.YoutubeDL: Fixes an issue with invalid filename on windows systems
- Updates Vortice
- Controls.WPF: Introduces ThemeLoaded event to properly manually change theme colors if required
Flyleaf v3.5.7 (AIO x64 .NET6 with FFmpeg v5)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
- Overall: UI update improvements
- VideoView: Fixes an issue with WindowsFormsHost and Front Window within a Scroll Viewer
- Renderer: Introduces Player.renderer.GetBitmap which can be used in parallel with rendering to retrieve (and resize if required) a gpu texture
- TakeSnapshot: Improvements and adds resize on gpu support
- Languages: Better handling of audio, subtitles and online subtitles languages (using windows cultures)
- Config: Introduces Config.Video.ClearScreenOnOpen to allow the last frame to be presented until the new open has been completed
- Config: Introduces Config.Video.Swap10Bit to use 10-bit instead of 8-bit swap chain
- Config: Introduces Config.Video.SwapBuffers to manually set render's swap chain buffers
- Controls.WPF: Fixes UIConfig to properly save for subtitles FontWeight, FontStyle and FontStretch
Flyleaf v3.5.6 (AIO x64 .NET6 with FFmpeg v5)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
- Config: Fixes clone implementation
- Demuxer/Screamer: Improves EOF without raising errors in some cases
- M3UPlaylist: Fixes an issue with Tags
- Mouse: Fixes an issue with WinMoveOnDrag (sometimes it was moving the window when it should not)
- Remuxer: Fixes a possible issue with TS extension by adding it manually on the demuxer
- Renderer: Allows D3D11 to play HDR videos (even if does not support it yet) when forced as VP
- VideoView: Binds VideoViews visibility with the Foreground Window
- Controls.WPF: Fixes Subtitles Fonts to respect FontFamily configuration
- Controls.WPF: Fixes an issue with Custom Aspect Ratio
Flyleaf v3.5.2 (AIO x64 .NET6) - Includes latest ffmpeg 4/5 patched libraries
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
- Adds FFmpeg 5 support
Just add FFmpeg.Autogen v5 NuGet package to your application
- Adds FFmpeg devices support
- Requires avdevices/avfilters/postproc dlls
- Set FFmpegDevices engine's config to true
- List of available Audio/Video Cap Devices can be found in Engine.Audio/Engine.Video
- Introduces new scheme device://[device_name]?[FFmpeg_Url]
Sample device urls:
device://gdigrab?desktop
device://gdigrab?title=Command Prompt
device://dshow?video=Lenovo Camera
device://dshow?audio=Microphone (Relatek):video=Lenovo Camera
Notes:
- Remuxer (Recording/Downloader) might not support the output format context (it will require transcoding)
- To use with the sample version make sure you edit Flyleaf.Engine.xml and set FFmpegDevices to true (check log file for available cap devices)
- Fixes and improves activity mode
- Fixes an issue with Alt+F4 on VideoView's front window
Flyleaf v3.5 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
[Enchantments]
- Playlists: Adds playlists support (for M3U, PLS, YoutubeDL, Torrent)
- Sessions: Allows to open a previously opened session with the same configuration
- Subtitles: Improves suggestions and adds SearchLocal/SearchLocalOnInputType/SearchOnline/SearchOnlineOnInputType configuration
- Renderer: Improves compatibility with proper fallback to WARP device and improves the way you specify a GPU adapter
- ModelView: Includes playlist items and streams (embedded and external) in library's model view
- OpenAsync: Improves threading implementation, locking and interrupts
[Issues]
- Fixes a critical issue with timestamps (mainly for some avi files while using show frame prev/next)
- Fixes an NPE on Renderer's SetViewport
- Fixes an NPE on Audio.Mute
[Control.WPF Enchantments]
- Playlists: Adds playlists support (on pop-up menu)
- Settings: Adds Search Local / Search Online
- External Streams: Will be all now be under External sub-menu
- UI Config: Extends UI Config with the subtitles options
[Control.WPF Issues]
- Fixes an issue that it wouldn't go idle when the mouse was above the sliders
[Important / Breaking Changes]
- Player.Title can now be accessed from Player.Playlist.Selected.Title
- Player.PlaybackCompleted renamed to Player.PlaybackStopped
- Player.[AVS].Inputs and Player.[AVS].ExternalStreams can be accessed from Playlist.Items and Playlist.Items[N].External[AVS]Streams
- LogOutput for files now will not append by default check Engine.Config.LogAppend
- Config.Video.GPUAdapterLUID renamed to Config.Video.GPUAdapter (LUID can change on system reboot, now you can use a string to match)
- Player can start playing now before the control's assignment or its handle creation
- Changes the way that Player's Open Completed events will fire (only what user requested to open). If you still need to catch all the events subscribe on the Decoder Context's events (Player.decoder)
Flyleaf v3.5-pre (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
[New Features]
* Playlist
- Adds Playlist support on the decoder context (will be extended to support playlist files such as .pls/.m3u/.m3u8 etc.)
- Adds Playlist support for BitSwarm (Torrent) and YoutubeDL (Web) plugins
- Allows playing received items while playlist is still in progress
- Separates main user input with playlist items, embedded streams and external streams
- Adds basic scraping (for title, season, episode)
* Sessions: Adds support to re-open a previously opened session (with the same input/playlist item/streams/curtime/audio and subs delay)
* Subtitles
- Adds basic local search support and improves suggestion algorithm
- Adds Config.Subtitles.SearchLocal/SearchLocalOnInputType/SearchOnline/SearchOnlineOnInputType
[Enchantments]
* Overall Code Clean-up
* Renderer
- Allows late assignment of the Control/Handle (you can start playing before the control has been created)
- Allows WARP device to be forced from the configuration (luid=-1000)
* Threading, Locking and Cancellation
- Improves Open/OpenAsync implementation
- Replaces threads with tasks and gets rid of EnsureThreadDone
- Improves locking and cancellation
* Demuxer Packet Queue, CurTime and BufferedDuration
* UI Updates mainly for Streams (as ObservableCollection)
[Issues]
* Fixes a null reference on renderer's SetViewport with D3D11 VP #158
* Fixes a rare dead lock on player's seek
* Fixes an issue on WPF Control that it wouldn't go idle when the mouse was above the sliders
* Fixes an issue with Downloader while downloading only audio (on external audio demuxer)
[Important/Breaking Changes]
* Player.Title can now be accessed from Player.Playlist.Selected.Title
* Player.PlaybackCompleted renamed to Player.PlaybackStopped
* Player.[AVS].Inputs and Player.[AVS].ExternalStreams can be accessed from Playlist.Items and Playlist.Items[N].External[AVS]Streams
* LogOutput for files now will not append by default check Engine.Config.LogAppend
* Changes the way that Player's Open Completed events will fire (only what user requested to open). If you still need to catch all the events subscribe on the Decoder Context's events (Player.decoder)
Flyleaf v3.4.14 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
- Introduces Config.Demuxer.BufferPackets as a second option for buffering limits along with the BufferDuration
- Introduces Config.Demuxer.MaxAudioPackets to prevent memory leaks on timestamps wrapping (2^33 ffmpeg bug) which will fire AudioLimit event (can be used to restart the player)
- Improves support for VideoView within another VideoView overlay
- Fixes an issue with Brightness/Contrast while switching between video processors
- Fixes an audio compatibility issue with the Device Id for Win7/8
- Fixes an issue with OpenFromFileDialog and WinMoveOnDrag
- Fixes a critical issue with Recording while loglevel is less than info
- Updates Vortice
Flyleaf v3.4.10 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
- Adds support for playback speed 1.25, 1.5, 1.75, etc.
- Fixes Brightness/Contrast dim issues while switching to Flyleaf Video Processor (FLVP)
- Disables by default the new Config.Decoder.AllowProfileMismatch as it causes issues (mainly with HEVC)
Flyleaf v3.4.7 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
Enriches FlyleafLib with Logging
- Adds Log Support for both FlyleafLib and FFmpeg (with separate log levels for each)
- Organizes the previously Master and renaming it to Engine
- Allows runtime/dynamic changes to log configuration
- Collects all the Global configuration to one place and allows Load/Save
- Controls.WPF: Renames Buffering Tab to Player and adds the new Logging settings
- Controls.WPF: Adds Read Timeout to Player Settings
- AudioOnly: Prevents the initialization of VideoDecoder and Renderer
- Adds a read timeout even on the demuxer (Player.VideoDemuxer.TimedOut)
Breaking/Important Changes
- New way to initialize FlyleafLib with Engine.Start
- Master has been renamed to Engine
- Master.RegisterFFmpeg and Master.RegisterPlugins have been removed
- Master.GPUAdapters transferred to Engine.Video.GPUAdapters
- Master.AudioMaster.Devices transferred to Engine.Audio.Devices
- Master configuration properties transferred to Engine.Config
Start Engine Example
Engine.Start(new EngineConfig()
{
UIRefresh = true, // Required for Activity,BufferedDuration,Stats in combination with Config.Player.Stats = true
UIRefreshInterval = 250; // How often to update the UI
UICurTimePerSecond = false, // Whether to update CurTime only when it's second changed or by UIRefreshInterval
HighPerformaceTimers= false, // Forces TimeBeginPeriod(1) always active
//LogOutput = ":debug",
//LogOutput = ":console",
LogOutput = "C:\\logs\\file.log",
LogLevel = LogLevel.Debug,
FFmpegLogLevel = FFmpegLogLevel.Warning,
PluginsPath = "C:\\SomePath\\Plugins",
FFmpegPath = "C:\\SomePath\\FFmpeg",
});
- FFmpegPath and PluginsPath support both relative and absolute paths and can specify the ":" prefix for any folder below the current
Solution Notes
- FFmpeg libraries for x86 platforms have been removed from the solution
- FFmpeg libraries have been transferred to FFmpeg/ folder
- All the global classes have been transferred to Engine/