|
|
||
|---|---|---|
| examples | ||
| .gitignore | ||
| index.js | ||
| lbry-format.js | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| templates.js | ||
LBRY File Format
The LBRY format is a multimedia-format designed to promote interoperability and transmission of complex digital media.
This repo contains some tools & libraries for working with *.lbry files.
CLI Installation
Windows: npm i -g https://github.com/lbryio/lbry-format
Mac / Linux: sudo npm i -g https://github.com/lbryio/lbry-format
Once installed, run lbry-format --help
CLI Usage
lbry-format pack ./sourceDirectory ./outputPackage.lbry
What It's For
A lbry-format file is a compressed web site, much like a zip file. More specifically, it's a directory of files individually zipped with Zstandard, then collected into a tar archive.
It is recognized and launched by the LBRY-desktop app to enable rich, interactive media in the client.
When the LBRY desktop app encounters the .lbry extension, and the user presses "play," it decompresses the .lbry file, launches a sandboxed web server in the background, and 'serves up' this file like a real web server might.
This enables a lot of possibilities. To see what is currently possible with this format, check out the LBRY channel @OpenSourceGames.
There are more restrictions to a .lbry archive than normal websites, because of the security issues and the fact that it's not running on a domain.
Name
- Name Format:
*.lbry - Character Set:
UTF-8 - Extension:
lbry
Metadata
- Media Type:
application/x-lbry
Container
- Compression:
Zstandard - Archival:
tar
Contents
Descriptor
- Format:
JSON,UTF-8
lbry-format
Requirements
- Node.js v11.6.0 (see https://nodejs.org/docs/v11.6.0/api/esm.html)
Usage
WARNING: These method signatures will change as the JSON Descriptor is finalized.
Install npm i https://github.com/lbryio/lbry-format.git
Pack
const lbryFormat = require('lbry-format');
// Pack `./` to `package.lbry`
lbryFormat.packDirectory('./', {
fileName: 'package.lbry',
});
Unpack
const lbryFormat = require('lbry-format');
// Unpack `package.lbry` to `./`
lbryFormat.unpackDirectory('./', {
fileName: 'package.lbry',
});