9fd036d494
Added a little more detail in the README for the curious who wish to try it out |
||
---|---|---|
.gitignore | ||
index.js | ||
lbry-format.js | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md |
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',
});