Beta 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

3.0 beta 12 (03-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.

Beta changelog

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.

youtube-dl support

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 fy+channel (e.g. fy+channel://

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.

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. 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.

Usability improvements

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.

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.

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 changes

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_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 can be found here: Custom metadata.

Other changes

Changelog Beta version details