- Exposed Interfaces
- Settings Overriding
Among with interfaces that are usual for DirectShow source filter (
IBaseFilter, IFileSourceFilter, IAMFilterMiscFlags, ISpecifyPropertyPages), filter exposes few other standard and custom interfaces. They are listed below. Not all functions of these interfaces are implemented, others will return
get_TitleReturns title of the clip. One line of text.
get_DescriptionReturns description of the clip. Multiline text.
Returned text is ready to use, i.e. any URL encoding, HTML entities, HTML tags etc. are removed.
get_BufferingProgressFilter uses it to report total downloading progress of all media streams. When option
Downloading the clipis turned off (and thus no such info can be provided) or option
Enable buffering notificationis turned off, it will return
S_FALSEand zero progress.
AbortOperationClip page and subtitles download, analysis and any other actions related to media file URLs retrieval (but not their download) are done in
AbortOperationcan be used to cancel this process. It does not take any action and returns
E_UNEXPECTEDat any other time except during the
This interface provides info about supported sites and exposes the way to test whether particular URL is supported or not.
This is custom interface, detailed description can be found in the archive below.
Using these interfaces filter exposes additional metadata and technical info.
List of exposed properties:
|channel_name||kProperty3dydMeta||Name of uploader or channel to which the video belongs|
|view_count||kProperty3dydMeta||Number of views of the video|
|thumbnail_urls||kProperty3dydTech||URL(s) of the clip thumbnail *|
|date||kProperty3dydSpecial||Clip publication date, UNIX time, in seconds **|
|channel_id||kProperty3dydTech||Unique identifier of the channel (|
|playlist_id||kProperty3dydTech||Unique identifier of the video playlist|
|like_count||kProperty3dydMeta||Number of likes of the clip|
|dislike_count||kProperty3dydMeta||Number of dislikes of the clip|
* - if there are several URLs, they are separated by '\0' character. In this case they are ordered by quality, best quality comes first
** - can have negative value, in this case only date is known for sure, otherwise both date and time are correct
dwHint field of
PROPBAG2 structure is used to report property type. It is kind of the way for forward compatibility, possible values are described in the table below.
|kProperty3dydMeta||Property is a metadata field|
|kProperty3dydTech||Property is a bit technical but still can be displayed to the user 'as is'|
|kProperty3dydSpecial||Property requires additional processing and has no meaning for the user if displayed 'as is'|
All quality-related settings and few other settings can be overridden using custom URL parameters. For example to use 720p no matter of what quality is selected in filter properties, can be used URL like
Value of URL parameter can be URL-encoded if need. All parameters reflect appropriate option in filter properties, no more, no less. Any option that was found in URL will be reported in
Log (tab in the filter properties).
Below is complete list of parameters with mapping to appropriate option. If not stated explicitly, expected value is the same as in appropriate option from the filter properties. For check boxes expected values are 0 and 1 (unchecked and checked respectively).
|URL param||Mapped option||Value|
|ys_show_in_systray||Show icon in system tray|
|ys_video_resolution||Preferred video resolution||smallest / 144p / 240p / 360p / 480p / 720p / 1080p / 1440p / 2160p / 3072p / best|
|ys_audio_bitrate||Preferred audio bitrate||auto / 32k / 64k / 128k / 192k / 256k / best|
|ys_prefer_hfr||(v1.7+) Prefer high frame rate videos|
|ys_prefer_hdr||(v1.7+) Prefer high dynamic range videos|
|ys_prefer_3d||Prefer 3D videos|
|ys_subs_download||Download subtitles||Read note below|
|ys_manual_select||Manual quality selection||never / always / hold_shift / hold_alt / hold_ctrl|
|ys_ignore_formats||Formats to ignore|
|ys_formats_priority||Priority of formats|
|ys_format_over_quality||Format takes precedence over quality|
|ys_enable_dash||Enable Youtube DASH streams|
|ys_max_width||(v1.7+) Maximum width of the video|
|ys_analysis_strategy||Getting info about clip||fast / medium / precise|
|ys_analysis_limit||Limit of the part size|
|ys_predownload||Downloading the clip|
|ys_notify_buffering||Enable buffering notification|
|ys_tmpdir_type||Temporary directory (type)||wintemp / custom|
|ys_tmpdir_path||Temporary directory (path)||full path to the directory if ys_tmpdir_type=custom|
Prior to version 1.6 i.e. prior to auto-translated subtitles support and precise subtitles selection it had three possible values:
never, all, except_asr. There
all means regular subtitles + ASR and
except_asr means only regular subtitles. In version 1.6 these values are still acceptable for back compatibility with exactly the same meaning i.e. auto-translated subtitles are not included in results.
Since 1.6 using this parameter can be specified any set of subtitles using next form:
where subX has format
|Value of ||Meaning|
lang_tag are: special word
_all (match any subtitle of given type) or 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). Subtitle becomes selected if its language tag contains any of provided language tags. 'Contains' means substring match, case-sensitive i.e. using generic C function it would be
NULL != strstr(original_lang_tag, param_lang_tag).
For example, to download all regular subtitles, never download ASR, download English and Chinese (Traditional) auto-translated subtitles this parameter would be: