Version details
- Format and codecs
- Quality settings improvements
- Improved search on site
- youtube-dl support
- Exploring Youtube channels
- Decoding improvements
- Usability improvements
- Metadata changes
- Other changes
- Beta changelog
3.0 (26-May-2019)
After a year of development I am glad to introduce version 3.0.
NOTE, all settings of the component will be reset to default values at first program run. This also applies to component's UI panels settings and search results from Search
popup window.
Format and codecs
Previous component versions did not separate information about media container and stream codecs. They used some simplified mix instead of that.
Such an approach was good enough for a start and that time (the logic was laid in 2012) Youtube had much lesser variety of supported features, thus this inconsistency was not catching eye too much. However nowadays it does more harm than good and prevents moving forward with new features, not to mention that this is incorrect after all.
In 3.0 these properties were separated. For example, instead of reporting OGG for Youtube it will report now (and operate internally) WebM DASH container with single Vorbis audio stream.
Nothing more to say actually, but under the hood it was huge piece of work.
Quality settings improvements
With time the quality selection in 2.x became a sore spot. Due to impressive variety of quality-related features on Youtube quality settings in the component could not fit every need, and more or less complex rules had generally unpredictable behavior.
In 3.x they were completely rewritten and can satisfy much wider set of desires. There also were added testing tools that explain how rules get applied to real stream properties. They can help when debugging complex rules.
More info: Media criteria.
Improved search on site
"Search" feature was entirely reworked. Now it supports multiple search providers. Available search options depend now on providers so providers can expose only options that they really support.
Currently there is still only search on Youtube but more will be added later. Also search on Youtube was significantly extended giving access to most features provided by underlying API.
Various places that use search were unified to provide the same set of features. These places are: search popup window, integrated search, context menu, Add Titles...
window. The last three also got comprehensive and unified set of destination options (where and how to add search results).
More info: Search.
youtube-dl support
Component evolves and now has features like album art and metadata editing for remote URLs, playlists and search represented by single track, video playback etc. They all definitely can be used not only for Youtube but for other sites as well. Adding support for them directly in the component is a dead end due to increase of time costs required just for maintenance. On the other hand, even with existing sites, without constant attention component is doomed to stop working.
There need some external source to make component be relevant without constant updates. And thinking this way the choice is obvious. So 3.0 got youtube-dl support.
You can find it in Maintenance Third-party binaries
list. Managed
source is also provided (reminder: this way component can check for updates and perform update of the binary by itself).
Currently are supported single video URLs and playlists. Other features like search or subtitles will likely be later.
Exploring Youtube channels
Component got fair support for Youtube channels. When adding channel URL in 2.x, component created track referencing channel's uploads playlist. Now it adds track representing the channel itself. This is additional track type that internally uses URL scheme fy+channel
(e.g. fy+channel://youtube.com?id=UC82lIgiaLTBkzhEebHWoazA
).
Channel's track metadata reflects properties of the channel. There are channel title, description, creation date, image URL, total number of videos and total number of views (sum of the number of views of all channel videos). As addition, playlist URL metadata field holds URL to the channel's uploads playlist.
There are two ways to deal with the channel track. You can get channel's uploads playlist (the same behavior as in 2.x). Or you can list all channel playlists (note, uploads playlist is not part of channel's playlists list).
Both actions are available in context menu of the channel track. Default action (when you "play" this track) can be changed using option Playlist Default action when opening channel
.
Decoding improvements
Audio downloading and decoding was separated in 2.x (options Media downloading
and Decode by FFmpeg
). As appeared to be, this works reliable only for audio represented by single file. This is the simplest scenario, so actually it basically does not matter what decoder to use - any would work. However when it comes to chunked files or live streams, it is just impossible to separate these two stages and expect that every decoder will work correctly.
Based on this, audio downloading and decoding are now always delegated to the same decoder. For example, when foobar2000
is selected as decoder, extracted media URL will be passed to foobar2000 without any intervention from the component.
Decoder to use can be tuned using media criteria. I.e. it is not constant for everything. Also when more than one decoder matches criteria, they all will be tried when opening an audio (i.e. if first one fails, component will try the next one).
All this increases the chance that audio will eventually be opened.
In case of video the only possible demuxer and decoder are LAV Splitter and LAV Video filters. So here is still can be configured only downloader (it will be the one who provides access to raw file data for the splitter). In this case it anyway makes sense to provide a choice what downloader to use. So in 3.0 it is also selected using media criteria, and when multiple downloaders match, they all are tried until the video is successfully opened.
Usability improvements
Options from Advanced preferences tree were moved to component preferences (Preferences Youtube Source
) and rearranged for (potentially) better usability. This way all global settings now are concentrated in one place.
Main reason for this change: there are no good way to determine whether option should go there or to Advanced preferences. One can easily break component using "non-advanced" settings or not to notice any difference from changing the "advanced" ones. On the other hand, grouping only by functionality looks simpler and cleaner. As a bonus, to refer an option now only need to mention its tab and name.
Multi-language support
Everyone interested knows foobar2000 is not going to be multi language. And it is not a secret there exist custom foobar2000 packages where program resources and strings are manually translated by enthusiasts. Cons of this way - one need to translate the binaries every time new version appears. And there is always a chance that part of functionality might stop working after that.
As an experiment, this component now provides alternative to such vicious circle at least for itself. Once translated, it does not have to be translated again when new component version arrives.
Current language can be changed using component preferences Maintenance Language
. For participation check out Translate topic.
Metadata changes
Metadata exposed by the component went thru another revision (previous one was in version 2.0). Well, the change of major version is good excuse for that.
fy_published_at
was renamed to fy_upload_date
and it exposes now only the date. Time part is not included because it is not always possible to get it and previous conception (use raw UNIX timestamp, positive values for date+time, negative ones for date-only) was making this field overcomplicated.
Other metadata changes: renamed fy_uploader
to fy_channel_title
. Added fy_item_count
(number of videos for playlist, number of playlists for channel, number of search results for search).
Complete list of custom metadata fields can be found here: Custom metadata.
Other changes
- starting with this version component is listed in foobar2000 components repository and can be updated from foobar2000 Components preferences page. Only final versions will be released there. Beta versions will be posted only on this site
- added Russian translation. Thanks to NatyA!
- component's custom file extension (
*.foo_youtube
) now can be associated with foobar2000 - the same is done for custom URL schemes (
fy+search, fy+playlist, fy+channel, fy+https
) - metadata cache and thumbnails cache locations are now configurable (
Metadata Cache directory
) - in 2.x metadata cache was unlimited. In 3.x it is unlimited by default but this can be adjusted using option
Metadata Maximum number of tracks to cache
- limiting thumbnails cache in 2.x was broken for quite some time effectively making it unlimited. In 3.0 this was fixed but default value now is "unlimited" to retain the same behavior as in current 2.x
- units for amount of data used to analyze media files were changed from kilobytes to seconds (this is about
Decoding Analysis Probe limit per stream
). This way it does not depend on file bitrate - added option
Auto fit
to video zoom options and made it used by default. It affects initial size of video popup window. Size in this case equals either original video frame size or 25% of the screen (keeping aspect ratio), depending on which one is smaller. All zoom options were moved toZoom
popup menu of video window context menu. Options50%, 100%, 200%
are now not permanent - added
None
source to the list of external binary sources for LAV Filters. This way the video logic can be entirely disabled in component - removed option
Video Playback Subtitles Enable
as superseded by new sourceNone
inMaintenance Third-party Binaries VSFilter
- what subtitles to show initially is controlled now using media criteria
- added a way to list stream quality properties, i.e. all these properties that are tested by criteria.
Analysis Cache
UIE contains tree with all streams found during the analysis. Now you can use its context menu itemProperties
to get a report containing full list of properties known for selected stream - context menu
Youtube Source Copy
got additional itemURL at current time
. It is enabled only for currently playing track and only when it is possible to construct URL containing current playback position (so if you enter it in browser, it will start playing from this position) foo_youtube
downloader now does not download whole file unless it is explicitly allowed to do so via optionNetwork Download media data independently from playback
- unplayable videos are no longer retrieved during Youtube playlists fetching. These are deleted or private videos, and there are no title nor other properties (except date sometimes, and of course there is video URL). Previous behavior (to fetch them anyway) can be returned back using option
Playlist Skip unplayable videos when loading Youtube playlists
- changed video title parse rule to use named subexpressions so it does not need now any preprocessing. Read more in Parsing original title topic
- combo box history now can be wiped using keyboard. This is about combo boxes in
Search on Site
andLoad channel or playlist...
windows. When list box with history items is opened, useDelete
key to remove selected items from history - moved search popup window option
Initial focus to search box
to window system menu (from search config) since it has nothing to do with actual search - built with foobar2000 SDK 2018-10-11. Noticeable difference in this regard: decoders provided by the component now are listed individually in
Preferences Playback Decoding
list - switched to ffmpeg mainline (4.x versions). Due to incompatibility with 3.x the minimum required version for external ffmpeg is now 4.0. Component was built with ffmpeg 4.1.3. Switch to 4.x also brought back possibility to use ffmpeg from last versions of LAV Filters
- enabled
file
URL scheme in Activity UIE - link control representing search config in
Search (Integrated)
UIE and onSearch on Site
page is now automatically resized to fit content. That means it can become multiline if there are a lot of selected options, so you may want to adjust UIE size accordingly - method of storing component settings was changed so that the default values are no longer actually stored. In this case gets stored only the flag indicating that option has default value. This way if default value for some option is changed in further version, one will not need to reset settings to get it (of course unless value was not changed manually)
- UI element configuration storage format was redesigned to have better forward compatibility
- updated libcurl and underlying libraries to latest versions (libcurl/7.64.1 Schannel zlib/1.2.11 brotli/1.0.7 nghttp2/1.38.0). Note for XP users: external libcurl has also been updated and got HTTP/2 support (libcurl/7.64.1 OpenSSL/1.1.1b zlib/1.2.11 brotli/1.0.7 nghttp2/1.38.0)
- increased minimum required LAV Filters version for Windows 7 and above to version 0.74.1
- merged component log with foobar2000 console. Separate Log UI was removed. Log level is now configured via
Maintenance Component Log level
- removed old video sync method from Advanced preferences (was disabled by default) and from code base. It was deprecated since 1.15
- removed option
Add ffdshow raw video filter to graph
Beta changelog
- [final] fixed possible crash when using video UIE in full screen mode
- [final] removed test language (Scrambled English) from package
- [beta 13] corrected which colors can be configured in CUI panels with custom color scheme
- [beta 13] fixed bug when flac files with embedded cover art are incorrectly recognized as containing video stream
- [beta 13] fixed possible crash when exiting program with paused video
- [beta 12] added Russian translation. Thanks to NatyA!
- [beta 12] if track comes not from supported site and option
Video Playback Popup window Show automatically
is set toAlways
, component will perform its analysis on playback start to determine whether it has video stream and thus whether video popup window should be shown (partially reverted related change in beta 8) - [beta 12] changed video title parse rule to use named subexpressions so it does not need now any preprocessing. Read more in Parsing original title topic. If you use non-default rule, it must be adjusted to use named subexpressions instead of
%field name%
tokens. For example, instead of%artist%
now need to use(?<artist>.+?)
pattern - [beta 11] added a way to list stream quality properties, i.e. all these properties that are tested by criteria.
Analysis Cache
UIE contains tree with all streams found during the analysis. Now you can use its context menu itemProperties
to get a report containing full list of properties known for selected stream - [beta 11] added stream filters to
Analysis Cache
UIE (similar to how it was in 2.x but with greater set of options) - [beta 11] fixed not working
Pseudo-table
context menu item inAnalysis Cache
UIE - [beta 11] fixed missing track length (and thus inability to seek) for some youtube-dl tracks
- [beta 11] fixed possible error checking for updated third-party binaries (it was saying in this case
error(568): Invalid encoding in string.
) - [beta 11] updated libcurl and underlying libraries to latest versions (libcurl/7.64.1 Schannel zlib/1.2.11 brotli/1.0.7 nghttp2/1.38.0). Note for XP users: external libcurl has also been updated and got HTTP/2 support (libcurl/7.64.1 OpenSSL/1.1.1b zlib/1.2.11 brotli/1.0.7 nghttp2/1.38.0)
- [beta 11] updated ffmpeg to 4.1.3
- [beta 10] fixed crash when probing live streams (when option
Probe each stream found during the analysis
is enabled) - [beta 10] fixed possible crash when starting video playback
- [beta 9] extended list of video and audio qualities criteria available out of the box; slightly adjusted existing ones
- [beta 9] changed optional criteria behavior for numeric properties. If quality contains property being considered and its value does not match condition, condition will now be considered as passed. Such quality has lesser priority than the ones whose properties really match condition but greater priority than qualities which do not contains considered properties. Example: you have qualities
256kbps
,128kbps
and quality without bitrate info (no-bitrate
). Optional criterionthe closest below 128kbps
now arranges them next way:128kbps
,256kbps
,no-bitrate
, when in previous versions256kbps
would be rejected at all - [beta 9] increased minimum required LAV Filters version for Windows 7 and above to version 0.74.1
- [beta 9] component now always use LAV Filters source specified in preferences. Previously it could still use system filters even if was asked to use external or managed source
- [beta 9] added
None
source to the list of external binary sources for LAV Filters. This way the video logic can be entirely disabled in component - [beta 9] fixed possible program freeze on startup when using external libcurl
- [beta 8] changed the way how video playback is starting. Now if track comes not from supported site (e.g. you are playing local video file) component does not perform analysis and passes track URL as is directly to the video player
- [beta 8] added option
Auto fit
to video zoom options and made it used by default. It affects initial size of video popup window. Size in this case equals either original video frame size or 25% of the screen (keeping aspect ratio), depending on which one is smaller. All zoom options were moved toZoom
popup menu of video window context menu. Options50%, 100%, 200%
are now not permanent - [beta 8] previously default settings for local LAV Filters were enforced unconditionally. Although this is not recommended, this behavior can be disabled now using LAV Filters context menu in
Maintenance Third-party Binaries
list - [beta 7] channel action
Get channel's uploads playlist
now retrieves only single track representing playlist (previously it also fetched first portion of the playlist) - [beta 7] search config items in
Destination specific playlist
group now use titleformatting when constructing playlist name. There also can be used custom field%search_query%
. Note, the use of titleformatting may affect existing names. For example if you use square brackets there, they have to be wrapped now with single quotes to be bypassed by titleformatting engine - [beta 7] fixed incorrectly working filters in
youtube.com
search provider - [beta 6] merged component log with foobar2000 console. Separate Log UI was removed. Log level is now configured via
Maintenance Component Log level
- [beta 6] fixed incorrectly working
youtu.be
URLs - [beta 6] removed option
Video Playback Subtitles Enable
as superseded by new sourceNone
inMaintenance Third-party Binaries VSFilter
- [beta 6] removed option
Video Window Fallback Text Enable
. Use empty fallback text to get the same behavior - [beta 6] removed auto-updated playlists options
Randomization period
andInitial delay
. It makes no sense to make such things configurable - [beta 5] fixed possible crash when opening video. Crash happened at cleanup in case if
foo_youtube
downloader successfully started downloading but overall decoding eventually failed (e.g. due to unsupported format) - [beta 5] fixed incorrectly working option
Decoding Maximum number of tracks in analysis cache
- [beta 5] removed obsolete options from Advanced preferences tree. There are no
Youtube Source
group now - [beta 3] limited youtube-dl to be used only for
http://
andhttps://
URLs - [beta 4] fixed possible crash when analyzing multiple tracks simultaneously
- [beta 4] failed analysis results now are also stored in analysis cache. So if track gets opened again, this does not result in full analysis
- [beta 4] allowed video playback from local files by default
- [beta 3] fixed crash if selected video downloader does not actually exist
- [beta 3] added option
Search Break long menu by screen height
. It can be useful if some popup menus from search config (particularlyLanguage
andRegion
) do not fit the screen - [beta 2] added
System
source for youtube-dl - [beta 2] fixed inability to use youtube-dl installed via pip
- [beta 2] fixed possible error opening
*.foo_youtube
files
Changelog Version details