Beta 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
3.0 beta 7 (27-Feb-2019)
After nearly 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.
- [beta 2] added
Systemsource for youtube-dl
- [beta 2] fixed inability to use youtube-dl installed via pip
- [beta 2] fixed possible error opening
- [beta 3] limited youtube-dl to be used only for
- [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 (particularly
Region) do not fit the screen
- [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 5] fixed possible crash when opening video. Crash happened at cleanup in case if
foo_youtubedownloader 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 Sourcegroup now
- [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
- [beta 6] removed option
Video Playback Subtitles Enableas superseded by new source
Maintenance 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
Initial delay. It makes no sense to make such things configurable
- [beta 7] channel action
Get channel's uploads playlistnow retrieves only single track representing playlist (previously it also fetched first portion of the playlist)
- [beta 7] search config items in
Destination specific playlistgroup 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
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 much 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 and much wider set of desires. There also were added testing tools that explain how rules get applied to real stream properties. This 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 they 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.
Remote URLs with qualities inherited from local files (album art, metadata editing), playlists and search represented as single tracks and many more. All this definitely can be used not only for Youtube but for other sites as well. Adding support for them directly in the component is a bad idea due to increase of time costs spent 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 in this case the choice is obvious. That way 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
Channel's track metadata reflects properties of the channel. There are channel title, description, creation date, image, total number of videos and total number of views (the 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.
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. 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. And for single files, what is the simplest case, it basically does not matter what decoder is used - any will work.
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 next one).
All this increases chances 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.
Options from Advanced preferences tree were moved to component preferences (
Preferences Youtube Source) and rearranged for (potentially) better usability. In this way, all global settings now are concentrated in one place.
Main reason for that: 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 "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.
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.
You can check out the option
Maintenance Language. It has one test language to see how it looks and what UI parts it affects.
Metadata exposed by the component has been revised. Well, change of major version is good excuse for that (previous revision was exactly in 2.0).
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_item_count (number of videos for playlist, number of playlists for channel, number of search results for search).
Complete list of custom metadata can be found here: Custom metadata.
- 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 analyze part of each media file). This way it does not depend on file bitrate
- what subtitles to show initially is controlled now using media criteria
- context menu
Youtube Source Copygot additional item
URL at current time. It is enabled only for currently playlist 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 that pos)
foo_youtubedownloader now does not download whole file unless it is explicitly allowed to do so via option
Network 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 playlist
- combo box history now can be wiped using keyboard. This is about combo boxes in
Search on Siteand
Load channel or playlist...windows. When list box with history items is opened, use
Deletekey to remove selected items from history
- moved search popup window option
Initial focus to search boxto 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 Decodinglist
- 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. Switch to 4.x also brought back possibility to use ffmpeg from last versions of LAV Filters
fileURL scheme in Activity UIE
- link control representing search config in
Search (Integrated)UIE and on
Search on Sitepage 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
- 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
Changelog Beta version details