Changelog

Version details

  1. Format and codecs
  2. Quality settings improvements
  3. Improved search on site
  4. youtube-dl support
  5. Exploring Youtube channels
  6. Decoding improvements
  7. Usability improvements
  8. Metadata changes
  9. Other changes
  10. 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

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 to Always, 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 item Properties 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 in Analysis 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 criterion the closest below 128kbps now arranges them next way: 128kbps, 256kbps, no-bitrate, when in previous versions 256kbps 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 to Zoom popup menu of video window context menu. Options 50%, 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 source None in 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 Randomization period and Initial 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:// and https:// 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 (particularly Language and Region) 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