14 Apr 2017

Help

  1. Add multiple URLs
  2. Component preferences
    1. Audio
    2. Features
    3. Video
    4. Search
    5. Advanced
  3. Troubleshooting
  4. Miscellaneous notes
    1. About MP4 DASH files
    2. Docking the video window

This page contains barely modified (and partially outdated) parts of original help until they will be rewritten in more proper way.

Add multiple URLs

Component adds additional item in File menu called Add multiple URLs.

It can be used to add several URLs at once. To do that, paste them in multi line edit box. Each link should be on separated line.

There are 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 combo box 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 clip/feed URL from supported site then it will not be added to playlist.

Component preferences

Audio

Youtube holds many qualities per clip. One can choose which quality to use using Preferred Quality group. Precision of this choice, regarding to media files that are available on the page, is configured through Playback Start group.

Playback Start

URLs 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 URL to Youtube clip page. This option specifies what component must 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 slower playback start time. So, possible variants:

FastComponent downloads only clip pages and uses quality info reported on those pages (e.g. itag value). Note that in this case component should already "know" reported quality itag, so new ones could be reported incorrectly or lack some quality info that is used to make proper choice.
MediumThe same as previous but for each media file it also makes request to get its file size (HTTP HEAD). Additionally it becomes possible to calculate file bitrate, so this choice is required if in Prefer a media file is selected criteria to use overall bitrate of the file. Also at quality selection, if several files have same audio quality, component selects the smallest of them.
SlowFor each media file component will fetch media file data until it gets required info or reaches limit of pre-download data size. So it will operate real quality info instead an info reported by the site. Pre-download limit can be changed using Advanced preferences Limit of pre-downloaded data size per clip at analysis.

Preferred Quality

Prefer a media file

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

When audio frequencies are compared, 44100Hz and 48000Hz are threated as the same to do not prefer Opus by this property.

Priority of formats

Which formats to 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 regular video files (i.e. files containing both video and audio streams) will be ignored. 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 one is the way provided by foobar2000 core. It downloads only data required to play right now. Note, it is part of foobar2000 core thus uses proxy settings not from component but from foobar2000 (i.e. from Preferences Networking Proxy server). This also concerns to other foobar2000 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 playback. It starts downloading from current play 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.

Variant ffmpeg is close in spirit to foobar2000, just instead of foobar2000 core features it uses ffmpeg as backend.

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.

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.

Features

Check for updates

Since there are two component variants, it cannot be automatically updated using standard foobar2000 way. Accordingly, it will be not shown when menu Help Check for updated components is used.

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

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.

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.

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.

Help Junk