{"id":13548122,"url":"https://github.com/Nevcairiel/LAVFilters","last_synced_at":"2025-04-02T20:31:46.209Z","repository":{"id":8640959,"uuid":"10289758","full_name":"Nevcairiel/LAVFilters","owner":"Nevcairiel","description":"LAV Filters - Open-Source DirectShow Media Splitter and Decoders","archived":false,"fork":false,"pushed_at":"2025-03-26T12:56:30.000Z","size":62480,"stargazers_count":7870,"open_issues_count":105,"forks_count":800,"subscribers_count":257,"default_branch":"master","last_synced_at":"2025-04-01T21:08:00.491Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nevcairiel.png","metadata":{"files":{"readme":"README.txt","changelog":"CHANGELOG.txt","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Nevcairiel","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2013-05-25T20:59:11.000Z","updated_at":"2025-04-01T16:49:06.000Z","dependencies_parsed_at":"2023-01-13T15:01:05.149Z","dependency_job_id":"77c5d49e-a5fd-4419-966a-5c0d8b0c111e","html_url":"https://github.com/Nevcairiel/LAVFilters","commit_stats":null,"previous_names":[],"tags_count":112,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nevcairiel%2FLAVFilters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nevcairiel%2FLAVFilters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nevcairiel%2FLAVFilters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nevcairiel%2FLAVFilters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nevcairiel","download_url":"https://codeload.github.com/Nevcairiel/LAVFilters/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246888161,"owners_count":20850206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:01:05.990Z","updated_at":"2025-04-02T20:31:46.166Z","avatar_url":"https://github.com/Nevcairiel.png","language":"C++","readme":"LAV Filters - ffmpeg based DirectShow Splitter and Decoders\n\nLAV Filters are a set of DirectShow filters based on the libavformat and libavcodec libraries\nfrom the ffmpeg project, which will allow you to play virtually any format in a DirectShow player.\n\nThe filters are still under development, so not every feature is finished, or every format supported.\n\nInstall\n=============================\n- Unpack\n- Register (install_*.bat files)\n\tRegistering requires administrative rights, and an elevated shell (\"Run as Administrator\")\n\nUsing it\n=============================\nBy default, the splitter will register for all media formats that have been\ntested and found working at least partially.\nThis currently includes (but is not limited to)\n\tMKV/WebM, AVI, MP4/MOV, TS/M2TS/MPG, FLV, OGG, BluRay (.bdmv and .mpls)\n\nHowever, some other splitters register in a \"bad\" way and force all players\nto use them. The Haali Media Splitter is one of those, and to give priority\nto the LAVFSplitter you have to either uninstall Haali or rename its .ax file\nat least temporarily.\n\nThe Audio and Video Decoder will register with relatively high merit, which should make\nit the preferred decoder by default. Most players offer a way to choose the preferred\ndecoder however.\n\nAutomatic Stream Selection\n=============================\nLAV Splitter offers different ways to pre-select streams when opening a file.\nThe selection of video streams is not configurable, and LAV Splitter will quite simply\npick the one with the best quality.\n\nAudio stream selection offers some flexibility, specifically you can configure your preferred languages.\nThe language configuration is straightforward. Just enter a list of 3-letter language codes (ISO 639-2),\nseparated by comma or space.\nFor example: \"eng ger fre\". This would try to select a stream matching one of these languages,\nin the order you specified them. First, check if an English track is present, and only if not,\ngo to German, and after that, go to French.\n\nIf multiple audio tracks match one language, the choice is based on the quality. The primary attribute here\nis the number of channels, and after that is the codec used. PCM and lossless codecs have a higher priority\nthan lossy codecs.\n\nSubtitle selection offers the most flexibility.\nThere are 4 distinct modes of subtitle selection.\n\n\"No Subtitles\"\nThis mode is simple, by default subtitles will be off.\n\n\"Only Forced Subtitles\"\nThis mode will only pre-select subtitles flagged with the \"forced\" flag. It'll also obey the language preferences, of course.\n\n\"Default\"\nThe default mode will select subtitles matching your language preference. If there is no match, or you didn't configure\nlanguages, no subtitles will be activated. In addition, subtitles flagged \"default\" or \"forced\" will always be used.\n\n\"Advanced\"\nThe advanced mode lets you write your own combinations of rules with a special syntax. It also allows selecting subtitles\nbased on the audio language of the file.\n\nThe base syntax is simple, it always requires a pair of audio and subtitle language, separated by a colon, for example: \"eng:ger\"\nIn this example, LAV Splitter would select German subtitles if English audio was found.\n\nInstead of language codes, the advanced mode supports two special cases: \"*\" and \"off\".\nWhen you specify \"*\" for a language code, it'll match everything. For example \"*:eng\"  will activate English subtitles, independent\nof the audio language. The reverse is also possible: \"eng:*\" will activate any subtitles when the audio is English.\n\nThe \"off\" flag is only valid for the subtitle language, and it instructs LAV Splitter to turn the subtitles off.\nSo \"eng:off\" means that when the audio is English, the subtitles will be deactivated.\n\nAdditionally to the syntax above, the following flags can be appended to the subtitle token separated by a pipe symbol (\"|\"):\n - \"d\" for default subtitles\n - \"f\" for forced subtitles\n - \"h\" for hearing impaired\n - \"n\" for normal streams (not default, forced, or impaired).\nIn addition, you can also check for the absence of flags by preceding the flags with a \"!\".\nThe advanced rules can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.\nThe rules will always be parsed from left to right, the first match taking precedence.\n\nFinally, the rules can match the name of a stream, with some limitations. Only single words can be matched, as spaces are a separator for the next token.\nA text match can be added to the end of the token with an @ sign.\n\nExample: (basic flag usage)\n  \"*:*|f\"\nExplanation:\n  On any audio language, load any subtitles that are flagged forced.\n\nExample: (basic ruleset)\n  \"eng:eng|f eng:ger|f eng:off *:eng *:ger\"\nExplanation:\n  If the audio is English, load an English or a German forced subtitle track, otherwise, turn subtitles off.\n  If the audio is not English, load English or German subtitles.\n\nExample: (flag usage with negation)\n  \"jpn:ger|d!f\"\nExplanation:\n  In the Japanese language, load German subtitles that have the default-flag but not together with forced-flag.\n  This is useful when you have files where the default and forced flags are set together.\n\nExample: (advanced ruleset for files with multiple audio and subtitle-tracks)\n  \"jpn:ger|d!f  jpn:ger|!f  jpn:ger  ger:ger|f  ger:eng|f  ger:*|f\"\nExplanation:\n  On Japanese audio, try to load German full subs (default but not forced), then unforced, and at last any german subs if there are no unforced subs.\n  On German audio load only forced subs in the following order: German, English, any.\n\nExample: (text match)\n  \"*:eng@Forced\"\nExplanation:\n  On any audio, select english subtitle streams with \"Forced\" in the stream title.\n\nBluRay Support\n=============================\nTo play a BluRay, simply open the index.bdmv file in the BDMV folder on the BluRay disc.\nLAV Splitter will then automatically detect the longest track on the disc (usually the main movie),\nand start playing.\nAlternatively, you can also open a playlist file (*.mpls, located in BDMV/PLAYLIST), and LAV Splitter\nwill then play that specific title.\n\nIn future versions, you'll be able to choose the title from within the player, as well.\n\nCompiling\n=============================\nCompiling is pretty straightforward using VS2019 (included project files).\nOlder versions of Visual Studio are not officially supported, but may still work.\n\nIt does, however, require that you build your own ffmpeg and libbluray.\nYou need to place the full ffmpeg package in a directory called \"ffmpeg\" in the\nmain source directory (the directory this file was in). There are scripts to\nbuild a proper ffmpeg included.\n\nI recommend using my fork of ffmpeg, as it includes additional patches for\nmedia compatibility:\nhttps://gitea.1f0.de/LAV/FFmpeg\n\nlibbluray is compiled with the MSVC project files, however, a specially modified\nversion of libbluray is required. Similar to ffmpeg, just place the full tree\ninside the \"libbluray\" directory in the main directory.\n\nYou can get the modified version here:\nhttps://gitea.1f0.de/LAV/libbluray\n\nFeedback\n=============================\nGitHub Project: https://github.com/Nevcairiel/LAVFilters\nDoom9: https://forum.doom9.org/showthread.php?t=156191\n","funding_links":["https://github.com/sponsors/Nevcairiel"],"categories":["C++","Data Format \u0026 I/O"],"sub_categories":["For C++/C"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNevcairiel%2FLAVFilters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNevcairiel%2FLAVFilters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNevcairiel%2FLAVFilters/lists"}