23 Oct 2016
  1. General info
  2. Filling of metadata
    1. Clip title parsing rule
    2. Metadata overriding
    3. Metadata editing
    4. Site-specific metadata
  3. Youtube feeds support
  4. Component user interface
    1. History
    2. Search
    3. Log
  5. Context menu
    1. Make album
    2. Search replacement
  6. Add multiple URLs
  7. Clip subtitles as lyrics
  8. Integrated search playlist item
  9. Clip link files
  10. Component preferences
    1. Audio
    2. Features
    3. Video
    4. Search
    5. Advanced
  11. Troubleshooting
  12. Miscellaneous notes
    1. About MP4 DASH files
    2. Component variants
    3. Note for Linux users
    4. Docking the video window
  13. External topics
    1. Media quality on Youtube
    2. Adaptive streams

General info

This component adds possibility to play Youtube, Vimeo and Dailymotion clips directly by their URL.

In addition to single clip URLs it supports clip feeds (i.e. playlists, channels etc.) from Youtube and Dailymotion.

Single clips and feeds can be added using File menu commands Add location and Add multiple URL(s).

Component has several UI elements, both DUI and CUI are supported. There are element for searching on Youtube within the program, for video playback and elements for various technical info about clip and component work flow. All elements are listed under Youtube Source group in UI configuration windows.

In addition to UI elements it has several popup windows with similar functionality.

For Lyric Show Panel 3 it provides additional lyric source.

Clip thumbnails are exposed as album art to the program.

Single clip can be turned into album with multiple tracks.

Component settings are placed in Preferences Tools Youtube Source. Additionally advanced settings are placed in Preferences Advanced Tools Youtube Source.

Filling of metadata

Clip title parsing rule

The only useful text, available from the clip, is its name specified by the person who uploaded it. Many music videos have clip title of the form '%artist&% - %title%' e.g. 'Manowar - Mountains'. Clip title parsing rule adds possibility to split clip title to several metadata fields. It has three predefined rules. Their description by the order in the list:

  1. use whole Youtube clip title as track title
  2. use text part before first '-' character as artist name and other text as track title.
    E.g. Queen - Bohemian Rhapsody will be artist: 'Queen', title: 'Bohemian Rhapsody'
  3. same as previous but also ignore any text within () or [] at end of the clip title.
    E.g. Queen - Bohemian Rhapsody (Live At Wembley Stadium, Saturday 12 July 1986) will be artist: 'Queen', title: 'Bohemian Rhapsody'

If you are familiar with regular expressions then you can add own rules there. How a rule is processed. Each string within %% (e.g. %title%) replaces with (.*?), resulting expression wraps with ^ and $. E.g. '%artist% - %title%' becomes '^(.*?) - (.*?)$'. If whole clip title matches to the expression then subexpression values used as appropriate metadata fields. If something goes wrong, it will just not add any metadata, so you'll see clip url as track title.

Metadata overriding

It is possible to specify metadata for particular clip individually. This can be done by extending clip URL by pairs field=value where field is metadata field name appended with fb2k_ prefix (to distinguish metadata fields from regular URL params). Pairs should be separated by '&' and should use percent-encoding utf8. Example:

https://www.youtube.com/watch?v=oozJH6jSr2U&fb2k_artist=Queen&fb2k_title=Bohemian%20Rhapsody

If fb2k_ fields found, global parsing rule will not be used.

In addition to this for clip can be specified custom parsing rule using 3dydfy_parsing_rule URL param e.g.

https://www.youtube.com/watch?v=oozJH6jSr2U&fb2k_artist=Queen&3dydfy_parsing_rule=%title%

All in all, filling of metadata goes by this way:

  1. use custom parsing rule (3dydfy_parsing_rule)
  2. use fb2k_ fields (which rewrite found metadata fields if there are conflicts)
  3. if not found any fb2k_ fields and 3dydfy_parsing_rule then use global parsing rule
  4. apply manually added/edited metadata with rewriting existing metadata fields (read Metadata editing topic below)

Clip length also can be overridden. This is possible using URL param 3dydfy_alt_length. It will be used until will get the real length from the decoder. Usage example (track length 90 seconds):

https://www.youtube.com/watch?v=oozJH6jSr2U&fb2k_artist=Queen&3dydfy_alt_lenght=90

Metadata overriding for individual clips can be turned off by Advanced preferences checkbox Allow metadata overriding for individual clips.

Metadata editing

Metadata of Youtube tracks can be edited manually. To deal with other metadata filling ways those edited fields are additionally stored in track technical info fields. They can be viewed under Properties window » Properties tab » Youtube Source group. Any manually edited tag will be listed there as 'Custom %TAGNAME%'. Removing manually edited metadata field also removes appropriate tech info field. After this metadata field fills by usual rules using title parsing. Empty tags are not supported. Multiple values are not supported. Also at retagging need Youtube title so if track haven't it yet (for example track was created by the old component version or it was added with metadata overriding which not required track analysis) then will be performed usual track analysis to retrieve Youtube title.

Remember that because manually edited fields also stored in tech info fields, max field length limited to max length of tech info field which has much smaller size in default configuration in comparing to regular metadata fields length limit (default limit of the tech info field at the moment of writing this is 200 bytes, see infoMax field in LargeFieldsConfig.txt from foobar2000 application data folder).

Also note that such manually edited fields are stored in tech info fields of the track, thereby they exist only until exist the track. If remove the edited track from all playlists and close the program then manually edited tags will be lost (if not close the program then they will be available till it keeps data for Undo).

Site-specific metadata

Component stores some clip properties from the site in track tech info fields. They are listed in Properties window » Properties tab » Youtube Source group. Those fields can be used in title formatting. List of current fields:

Usage example can be viewed in video window fallback text.

Youtube feeds support

In addition to usual Youtube Playlists component also supports adding clips from Youtube Channels and User Uploads. When speaking about all of them used common word feed.

Youtube feed url can be entered the same way as url of the single clip - using Add location... command. Component will fill playlist with clips from the feed.

Component adds all clips from the feed but not more than the maximum quantity specified on the preferences page. Max limit there is 1000 which is Youtube limit, not component's decision.

Clips which cannot be played will not be added to playlist and not counted. These clips are clips which was rejected by Youtube (due to copyrights or any other reason) and clips with restricted access (from unauthorized viewing, due to geolocation restrictions etc). If clip was skipped, additional info can be found in Log. Info line starts with SKIPPED: word and contains clip title, url and reason of skipping. Example:

SKIPPED: title: Ayumi Hamasaki - Duty[HD], url: youtube.com/watch?v=Sr8_XdKREkU, reason: rejected (Terms of use violation)

In general case there should be no problems with feed url recognition. However if you have such problem, below listed canonical feeds urls so edit your url according to them.

Playlists

Canonical url form:

https://www.youtube.com/playlist?list=playlistID

Youtube almost everywhere adds also one of the clips urls to resulting link. In this case will be added this clip instead of whole playlist, so try to find on the site some link like View full playlist or modify link manually before add. For example here will be added single clip v=rYC8ZJxim3w:

https://www.youtube.com/watch?v=rYC8ZJxim3w&list=PLE25D68EF51886FDC

And here will be added whole playlist

https://www.youtube.com/playlist?list=PLE25D68EF51886FDC

Channels

Canonical url form:

https://www.youtube.com/channel/channelID

User Uploads

Canonical url form:

https://www.youtube.com/user/username

Component retrieves clips, uploaded by a user, sorted by date - last uploaded videos will come first.

Component user interface

Component UI currently consist of three parts: History, Search and Log. Each part available as separated UI element (both DUI and CUI are supported) and as tab within component main window (menu View » Youtube Source)

History

It displays info about all the media files found on the pages of recently decoded clips. It was added for a clear understanding of what clip page may contain, what qualities was ignored due to component settings and which one was selected to play (example).

If track mouse pointer over tree item icon ('magnify' icon) then tooltip with detailed quality info wil be shown. Tootip of parent item (where clip name placed) shows info about qualities count (count of usual, video-only (VO), audio-only (AO) clips and total clips count).

Search by tab in main window and by UI element 'Youtube Source - Search (Integrated)' little differs. The main difference between those two ways is in place where search results are going: own search results list in case of tab and active playlist in case of UI element.

At searching using Search tab results placed in list below the tab. This list does not relate to playlists - need add items to playlist manually. At other hand it is possible to select only specific items set and it has variety of options related to destination playlists (screenshot).

In case if UI element for search results used active playlist. During the search playlist is locked. After search it also adds to playlist '...get more' item for next portion search. At click on it will be added next portion of search results and playback will be stopped. But if item was started to play not explicitly (for example previous item was played and ended) - it will fill playlist with next portion of search results and continue play.

Both ways mentioned above have same search settings (screenshot). Here need mention HD and CC settings.

HD setting finds only clips which have HD quality. In case of audio listening this has sense because audio quality on Youtube always correlates with the video - higher video quality comes with higher audio quality.

CC setting finds only videos with subtitles. This is useful when using lyrics source.

Log

Component has own log which separated from standard Console to do not flood it because has too much text. It quite useful for understanding component workflow and in some cases may help with the diagnosics of problems.

Context menu

Component has own context menu group Youtube Source which has next items:

Make album

For the cases when the clip contains whole album. Using info from MusicBrainz it is possible to split the clip to album tracks (similar to cuesheets).

After using this context menu item the dialog box appears. In simple case press Search » select album » press Finish. If press Next then also can be edited generated cuesheet which will be used for this album.

Albums list has additional columns (right click on the list header). In this list can be selected only one release. If it is multi-disk release then can be selected multiple disks within it. This need when one video represented by multi-disk release (example for this video).

In tracks list can be edited title and offset of each track. Editing track offsets here in some cases can be much more convenient than manual cuesheet editing (example).

Requirements and limitations. To make it work, %cuesheet% tag field should not be marked as spam in LargeFieldsConfig.txt file from foobar settings directory. Field size limit should be large enough to keep the cuesheet. Component will show appropriate warnings if this is not so. Original playlist item should be kept anywhere in the playlists or you will get error "Unsupported format or corrupted file" at playback start. Clip should be seekable or you will get error "Object is not seekable" at playback start.

Users often place tracks list in Youtube clip description (even with time offsets), this is very useful at selecting appropriate release, so it is also recommended to increase infoMax value from LargeFieldsConfig.txt because description stores in tech info fields and component cuts description to not overflow this limit (clipped description appends with '(...)').

Source media file at switching between album tracks will be reused for audio and for video (if you due playback didn't change quality settings through preferences or for video - in Source group of video window context menu). If video is disabled, you even will have gapless playback between album tracks.

Search replacement

For the case when you have clip which is not available any more (due to account termination or any other reason). This command replaces the clip with 'get more' item. This item configured to search replaced clip on Youtube and use first search result.

Available two command variants: auto and manual. Search query in auto variant generates using titleformatting. Rule for it available in component Advanced preferences. Manual variant does the same but before replacing will appear dialog box where search query can be edited.

Regular (i.e. non-Youtube) playlist items can be replaced too.

Add multiple URLs

When component installed in File menu available additional command Add multiple URLs. Use it if need to add multiple links; paste them in multiline edit box, each link should be on separated line. Supported both single clip urls and feed urls, they also can be mixed together.

It also possible to add list of titles. In this case will be performed search for each title and first result will be added to the playlist. In combobox at left bottom window corner can be selected how to interpret each line: as an URL to the clip page or as a title.

Unlike 'Add location...', if url was not recognized as valid Youtube clip/feed url then it will not be added to playlist.

Clip subtitles as lyrics

Youtube has ability to add external subtitles (closed captions) to clips by their uploader. In context of audio listening those subtitles can be used as timestamped lyrics. But need understand that subtitles are not always original song lyric - they may be also a translation to other language. Check for example this clip. It has two subtitles: original English lyric and translation to Portuguese.

Component has its own lyric source for Lyric Show Panel 3 (foo_uie_lyric3 component) which provides clip subtitles as lyrics. To use it need add Youtube Source to active lyric sources list in panel preferences. By default it not used (screenshot).

Through propeties window can be configured timeout values and which susbtitles to load (screenshot). Option 'All except Youtube ASR' means download all subtitles except automatically generated by Automatic Speech Recognition, ASR.

Found subtitles always report with Medium quality. If ASR subtitles selected to download, it always reports with Bad quality.

Integrated search playlist item

If use search from Search (Integrated) UI element or context menu search item then along with search results at end of the playlist also appears '...get more' item for next portion search. Actually this item is separated feature and can be used independently of others. Path of this item generates by next rule:

3dydfy-search://q=query&d=duration&o=order&h=hd&c=cc&p=page&m=maxresults&t=uploaded&g=addgetmore

query - search query in form of percent-encoding utf8
duration - 0 (any, default) / 1 (< 4 min) / 2 (4-20 min) / 3 (> 20 min)
order - 0 (relevance, default) / 1 (published) / 2 (view count) / 3 (rating)
hd - 0 (search all, default) / 1 (search only HD videos)
cc - 0 (search all, default) / 1 (search only videos with subtitles (Closed Captions))
uploaded (v1.5+, period when clip was uploaded) - 0 (today) / 1 (this week) / 2 (this month) / 3 (all time, default)
addgetmore - 0 (do not add '...get more' item) / 1 (add it, default)
page - search page index starting from 1
maxresults - items per page (1-25). Thus will be searched items range [ (p-1)*m+1, p*m ] e.g. p=3&m=6 will search items [13-18].

Example:

3dydfy-search://q=phapsody%20of%20fire&d=2&o=0&h=1&c=0&m=25&p=1

Generated by this way link can be added then programmatically or using 'Add location...'

Clip link files

Version 1.10.1 - 1.11.1 RIP

Clip link file is physical file of plain text format which recognises by foobar as Youtube clip. Below is format specification draft (might be significantly changed).

File extension: *.3dydfy. File format: XML. Character encoding: UTF-8. Simple example:

<?xml version="1.0" encoding="UTF-8"?>
<track>
	<path>https://youtube.com/watch?v=PuErECk4_iA</path>
</track>

File is simple representation of track properties. Possible XML elements:

Text of each element can be represented as is or using CDATA to not worry about XML entities. For example both elements below are equivalent:

<meta name="title">Some text with &lt; or &amp; chars</meta>
<meta name="title"><![CDATA[Some text with < or & chars]]></meta>

Once file added to the playlist, track will be analysed by the component. If need, this analysis can be bypassed. Component thinks that analysis was already done if track has original clip title in tech info fields (component puts it there after analysis). Example:

<?xml version="1.0" encoding="UTF-8"?>
<track>
	<path>https://youtube.com/watch?v=PuErECk4_iA</path>
	<length>245.5</length>
	<meta name="album">Consign to Oblivion</meta>
	<tech name="3dydfy_title">Epica - Solitary Ground (Official Video)</tech>
</track>

Other variant - component skips analysis if Metadata overriding is used.

Component preferences

Audio

Youtube holds many qualitites per clip. Which quality to choose configured through Preferred Quality group. Precision of this choice regarding to media files, available on the page, configured through Playback Start group.

Playback Start

Links to media files on Youtube have limited lifetime so it always need to retrieve them again by clip page analysis. Thus at playback start component has only link to Youtube clip page. This option specifies what component should to do to retrieve media information about available qualities. Using more information it can more accurately choose quality selected in Preferred Quality group below. But for more information need to download more data which results in playback start time slowing down. So, possible variants:

Preferred Quality

Prefer a media file

Contains three variants of strategies which media source to select. Below is description of workflow of choice for them. Any next condition there used only if was not able to select quality by previous condition.

At comparing by frequency 44100Hz and 48000Hz threated as the same to do not prefer Opus by this property.

Formats to ignore

List of formats to be excluded from the list of found formats before deciding which quality to play. Excluded formats marked with 'x' state icon in History (at left of 'magnify' icon, in this example it shows for WebM, FLV and M4A (MP4 AO)).

Priority of formats

Which formats prefer if there is more than one audio source with the same quality. Formats in the beginning of the list have highest priority. Formats not mentioned here have the lowest priority.

Prefer audio-only media files regardless of their quality

If option is checked and page contains AO files then only they will be used in comparing the audio. If option is unchecked then regular video files also will be used in the comparison. File size in this case matters only in comparison of two audio with the same quality e.g. if need 192 kbps audio and there are no AO with this quality then audio from regular video clip will be used.

Processing

Media downloading

How to download media file data at playing. Options foobar2000 and foo_youtube provide two different approaches, each has own advantages.

First is downloading way provided by foobar core. It downloads only data requested to play right now, without caching thus saving bandwidth. Note, it is foobar's core part thus uses proxy settings from foobar, not from component (i.e. from Preferences » Networking » Proxy server). This also concerns to other foobar networking settings like Allow seeking over HTTP etc.

If foo_youtube is selected, internal downloader will be used. It uses temporary file where writes all data, downloaded during playing. It starts downloading from playing position to the end of file. Downloading does not depend on playback. At several connection errors it tries to reconnect and restart downloading from current position. This allows bypass several temporary connection problems. Place where to store temporary files can be configured using Temporary directory option. Disk space for temporary files pleallocates at start of the downloading.

Version 1.4.1+, media downloading by ffmpeg removed: since some time Youtube may provide media data using HTTPS instead of HTTP. At this moment FFmpeg builds on Windows cannot use HTTPS so selecting ffmpeg in Media downloading may result in error at the playback start.

Decode by FFmpeg

List of formats which to decode by FFmpeg. For now, if you are using FFmpeg, it is recommended to decode all formats with it.

Note about M4A (MP4 AO). At opening need scan m4a files to able seek though them. This is very slow (i.e. takes long time to open a file) thus by default seeking for m4a is disabled. It can be enabled using Advanced preferences. For more info read note About MP4 DASH files.

Path to FFmpeg

The path to the folder where are placed FFmpeg binaries. Use 32-bit shared version 2.3 or above from Zeranoe or from 32-bit LAV Filters version 0.63 and above. If folder not specified then binaries are searched relatively to folder where component binary is placed.

Below FFmpeg path edit box placed list of needed FFmpeg binaries. Binary file string there can be edited manually if need.

Other

Clip title parsing rule

Read Clip title parsing rule.

Features

Check for updates

This component is not a part of official 3rd party components so it can't be automatically updated using standard foobar2000 way. Also if new version available, it does not show by 'Check for updated components' Help menu item. Describing action checks if new version is available and shows textual message with download link if it is so.

This action also can be accessed through menu Help » Youtube Source » Check for updated version.

Max feed items count

Read Youtube feeds support.

Enable search autocomplete

Turn on/off search autocomplete in search query edit boxes from Search tab and Search (Integrated) UI elements.

Show clip thumbnail in Album Art

Provide clip thumbnail image for program as front cover in Album Art. Downloaded thumbnails cached in program profile folder, subfolder "3dydfy\thumbnails". If folder has needed image then it will not be downloaded again.

Remove black areas in thumbnails

Thumbnails on Youtube have 4:3 aspect ratio. In many cases thumbnail source is widescreen video (16:9) so thumbnail has black areas at top and bottom. If user used some custom image as thumbnail, they may appear at left and right - all depends on aspect ratio of the original image from which thumbnail was created.

If this option enabled, component processes original image and creates one more thumbnail image in thumbnails folder i.e. original image it stores too. Processed images are suffixed with '-noblackareas' string.

Note, all that component does - removes black areas from the image. So if original image had black on its sides - they will be removed too.

Limit count of images in thumbnails cache

Hold in cache no more than specified amout of images. If cache limit exceed then most unused image files will be deleted from cache folder. Note, cache updates only at album art requesting and not earlier than after 10 minutes after last update so sometimes actual images count in cache folder may be little greater than specified in the limit.

Video

This feature tested with LAV Filters and limited to be used only with them. If you are downloading them from original site, use installer (select in it at east LAV Splitter (x86) and LAV Video (x86)) or x86 zip archive (extract to any folder and run at least install_splitter.bat and install_audio.bat). These filters are also included in popular codec packs (K-Lite, CCCP).

Subtitles to show initially

List of subtitles to show initially. Will be displayed first subtitle from this list that will be found in available subtitles for the clip. If there are no match, no subtitles will be displayed initially even if the clip has subtitles.

Example: "en;es". Explanation: display English subtitles, or Spanish subtitles if there are no English, or nothing if there are no English nor Spanish subtitles regardless of what else subtitles the clip has.

Component uses subtitle language tag, when searching for match. It consists of language code (ISO 639-1 or 639-2, lowercase) appended by optional script code (ISO 15924, first letter uppercase, the rest lowercase) and/or optional country code (ISO 3166-1 alpha-2 (uppercase) or numeric). Existence of sctript and county code is up to the clip page. All parts are separated by hyphen.

For auto-translated subtitles the prefix 'at:' is additionally added to language tag. For automatic speech recognition the prefix is 'asr'. There are no prefix for regular subtitles. For lyrics from Lyric Show Panel 3 is used special tag 'lrc'.

Example for Chinese (Simplified): zh-Hans (regular subtitles), at:zh-Hans (auto-translated), asr:zh-Hans (automatic speech recognition). You can check tag for every on-page subtitle using details tooltip in History UI element.

Search is case-sensitive. To be selected, on-page subtitle tag should contain provided tag. I.e. 'en' will match regular English as well as 'en-GB', 'at:en', 'asr:en'.

In addition to specifying explicit tags there also can be specified regular expressions. So there can be made complex rules, though more complex the rule is, less convinient regex it might have. Here are some examples:

Through this section can be configured search from Youtube Source context menu group.

Titleformatting can be used here in any editbox including name of the item.

If search query for item is empty string then particular search item disables in context menu. In pair with titleformatting this is usefull in case when need to handle situations when playlist item haven't particular metadata field. For example if playlist item haven't artist name then search query [%artist%] will be empty string thus search item will be disabled.

Advanced

Those settings available in preferences Advanced » Tools » Youtube Source.

Adapt for screen reader

This option changes several parts in UI to be better accessible using screen readers and keyboard. When it is set to auto, component detects whether screen reader is currently running.

Limit of pre-downloaded data size per clip at analysis (KB)

Read Playback Start » Slow.

Proxy

Proxy server configuration. Expected format:

[username[:password]@][scheme://]hostname[:port]

Where scheme (v1.8+) is proxy type (socks4, socks4a, socks5, socks5h or http which is default). Examples:

myname:mypassword@socks5://proxyhost:3128
proxyhost:9090
myname@proxyhost:6666

Note, this proxy used for requests made by the component itself. I.e. it will not be used if in Media downloading selected foobar2000, in this case will be used proxy specified in foobar settings but only for actual downloading of media data, all analysis done before this will use proxy specified here.

Temporary directory

(Version 1.6+) Directory where will be placed temporary files if foo_youtube is selected in Media downloading. Empty value (default) means Windows Temp directory. Any other string threats as path. If entered not absolute path, it threats as relative to foobar user profile directory.

If directory does not exist, component creates it at first use. If directory cannot be accessed (invalid path or not enough rights to access it) decoding error will occur.

Troubleshooting

Unable to open item for playback (Unsupported format or corrupted file (array access out of range))

Most likely M4A (MP4 AO) was selected to play but cannot be played using current configuration. Add M4A to Decode by internal FFmpeg OR update foobar2000 to 1.3.7+ OR disable M4A using Formats to ignore.

Unable to open item for playback (Object is not seekable)

Probably you have unchecked Allow seeking over HTTP option in Preferences » Advanced » Networking and at playing was selected format which needs seeking through a file at opening. You can do one of following things:

If you are getting any other error starting with Unable to open item for playback...

First you need to check whether a component found clips on the page. Go to History and check if clip has media qualities listed there.

If it does then probably problem is in file format selected to play. By default component settings allow only formats supported by program out of the box so if you've changed them, you can try reset decoding settings by 'Reset page' button in Audio tab of component preferences page.

If clip does not listed there at all then check clip url - maybe this clip was removed from Youtube due some reason or access to it was restricted. If all ok with this then check component Log. If it says 'Page analysis, no video found on Youtube URL' then probably Youtube changed their internal site format and all you can to do is wait. ...And notify about this if you don't see yet red alarm at top of the page.

When playback stops after a while with similar error:

Decoding failure at 3:22.385 (Connection error):
"3dydfy://youtube.com/watch?v=kim-REn8ecg"

This behaviour was seen if foobar2000 is selected in Media downloading. Doesn't matter which decoder is used (ffmpeg or foobar's internal). Try other variants from from Media downloading option.

Interruptions on playback

Possible reason: WebM selected for playback (or OGG/Opus which are WebM AO), used native decoder and foobar2000 is selected in Media downloading. Change one of these three conditions

.

If program crashes because of this component

You can help fix this by sending crash dump files, generated by a program. You'll get better chance to help fix it by sending crash dump files (*.dmp and *.txt) directly to fy@3dyd.com instead of using Send Report button.

Miscellaneous notes

About MP4 DASH files

Adaptive streams on Youtube encoded using MP4 DASH and WEBM DASH. Out of the box MP4 DASH decoding in foobar2000 is available from version 1.3.7 (in previous versions will be this error). Alternatively to decode it can be used external FFmpeg binaries. Possibility to decode this format is important because the best audio quality is available only within it (256kbps AAC 44100Hz Stereo).

No matter what decoding is used (native foobar2000 or using external FFmpeg), MP4 DASH file opening may take a long time. This issue actually relates to FFmpeg (foobar2000 internally also uses it for decoding). FFmepg prior to 2.8.2 needs to scan whole MP4 DASH file at opening. This is not a problem in case of local files but for files transported over the Internet this issue becomes extremely noticeable. Avoiding this scanning is possible by implementation some MP4 format features but they are not mandatory by the format specification thus no guarantee that this will be sometime soon implemented in 2.8.2.

To work around this problem in older FFmpeg versions scanning can be disabled at file opening. In this case opening will be fast but file will be not seekable. This workaround used by default in decoding using external FFmpeg. If seeking is more important than file opening time, use Allow seeking over M4A checkbox from Preferences » Advanced » Tools » Youtube Source group, it will turn back seek ability (and slow file opening). This option has no effect on native MP4 DASH decoder.

Component variants

Component has few variants to download: standalone and preconfigured. To provide video playback, better quality and/or less bandwidth usage on audio playback need 3rd party plugins. Some of them need install in the system, some need to download and select in the component settings the place where they are stored. All this can be done manually using standalone variant. Preconfigured variants has all needed plugins inside. Also default settings in preconfigured variants already changed to use these plugins.

Need to understand that this is not different component versions: component binary file (i.e. foo_youtube.dll) in all variants is identical. Difference is in default component settings. Standalone variant configured to play best quality from the formats which foobar2000 can play out of the box and without problems. Variant preconf_audio configured to use wider set of formats which can be played without problems only using 3rd party plugins which it contains. Variant preconf_video also has needed DirectShow filers to be able to play video without need to install them in the system.

Background

Variant preconf_audio contains latest (at the moment of release) FFmpeg build compiled with support of all (and only) required formats and codecs.

Variant preconf_video contains LAV Filters and xy-VSFilter. At audio decoding used FFmpeg binaries from LAV Filters. Internal LAV Filters and xy-VSFilter used only if not found in the system or their versions are greater.

All settings, which default values are different in standalone and preconfigured variants, will be reset to default values at first program start after switching from one variant to another. These settings are: (Audio preferences tab) Prefer a media file including bitrate, Formats to ignore, Priority of formats, Decode by FFmpeg, paths to FFmpeg binaries, (v1.12.3+) Allow seeking over M4A.

Note for Linux users

If you see the error containing "SSL connect error (35)", go to Maintenance preferences tab and select any external libcurl library with working SSL backend. Prebuilded variant with OpenSSL can be downloaded here. You also can experiment with other existing variants which can be found on cURL download page.

Background

For HTTPS component uses native SSL backend (Secure Channel), primarilly for smaller binary size and better performance in rare cases. But this might be a problem under Wine. So to component was added support of external libcurl binaries (which uses SSL backend in its turn).

Docking the video window

At this moment there are no DUI/CUI element for the video. However if you want to make the video window docked to the main window, this can be done using current settings.

Move the video window over desired area where it should be docked. Then use video window context menu, item Window » 'Lock relative to main window' and item 'Fix to current'. With first item will be locked the window position thus when you move foobar window, video window will stay at the same position relative to it. With second item will be locked the window size so it will not resize according to the video frame size of original video. You can also remove any window border (Window » Show video only) to make video window looked like the part of the parent window. It also makes sense to choose the appropriate video resolution in component preferences: for example in 300x200 window 240p and 720p look the same but the first consumes less bandwidth and opens faster.

Disadvantages: artefacts on foobar window moving (explanationAccording to reasonable usage restrictions of foobar2000 SDK the only way to track the position of the main window is periodically get it in the timer (WM_TIMER/GetWindowRect). Timer delay is not very small to prevent inappropriate overhead (thus video window position becomes out of sync at the beginning of moving foobar2000 window). This delay dynamically decreases at moving (thus this desync decreases after few moments of the moving).); changing video window size dynamically when resizing foobar window is not possible; video window visibility does not depend on area below it (e.g. it cannot be used as part of tabbed UI). At other hand, you can put it for example over Album Art panel and set to show only when a clip from supported sites is playing. In this case you will see the video when a clip is playing and Album Art instead of blank area in other cases.