</h1>
<h4 align="center">
-Decentralized video streaming platform using P2P (BitTorrent) directly in the web browser with <a href="https://github.com/feross/webtorrent">WebTorrent</a>.
+Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with <a href="https://github.com/feross/webtorrent">WebTorrent</a>.
</h4>
**PeerTube is sponsored by [Framasoft](https://framatube.org/#en), a non-profit that promotes, spreads and develops free-libre software. If you want to support this project, please [consider donating them](https://soutenir.framasoft.org/en/).**
#### Debian
- 1. Install NodeJS 6.x (previous LTS): [https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)
+ 1. Install NodeJS 8.x (current LTS): [https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)
2. Install yarn: [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
- 3. Add jessie backports to your *source.list*: http://backports.debian.org/Instructions/
4. Run:
$ apt-get update
- $ apt-get install ffmpeg postgresql-9.4 openssl
+ $ apt-get install ffmpeg postgresql openssl
#### Ubuntu 16.04
expect(video.description).to.equal('my super description for server 1')
expect(video.serverHost).to.equal('localhost:9001')
expect(video.duration).to.equal(10)
- expect(video.tags).to.deep.equal([ 'tag1p1', 'tag2p1' ])
expect(dateIsValid(video.createdAt)).to.be.true
expect(dateIsValid(video.updatedAt)).to.be.true
expect(video.accountName).to.equal('root')
expect(dateIsValid(videoDetails.channel.createdAt)).to.be.true
expect(dateIsValid(videoDetails.channel.updatedAt)).to.be.true
expect(videoDetails.files).to.have.lengthOf(1)
+ expect(videoDetails.tags).to.deep.equal([ 'tag1p1', 'tag2p1' ])
const file = videoDetails.files[0]
const magnetUri = file.magnetUri
expect(video.description).to.equal('my super description for server 2')
expect(video.serverHost).to.equal('localhost:9002')
expect(video.duration).to.equal(5)
- expect(video.tags).to.deep.equal([ 'tag1p2', 'tag2p2', 'tag3p2' ])
expect(dateIsValid(video.createdAt)).to.be.true
expect(dateIsValid(video.updatedAt)).to.be.true
expect(video.accountName).to.equal('user1')
expect(videoDetails.channel.name).to.equal('Default user1 channel')
expect(dateIsValid(videoDetails.channel.createdAt)).to.be.true
expect(dateIsValid(videoDetails.channel.updatedAt)).to.be.true
+ expect(videoDetails.tags).to.deep.equal([ 'tag1p2', 'tag2p2', 'tag3p2' ])
expect(videoDetails.files).to.have.lengthOf(4)
expect(video1.description).to.equal('my super description for server 3')
expect(video1.serverHost).to.equal('localhost:9003')
expect(video1.duration).to.equal(5)
- expect(video1.tags).to.deep.equal([ 'tag1p3' ])
expect(video1.accountName).to.equal('root')
expect(dateIsValid(video1.createdAt)).to.be.true
expect(dateIsValid(video1.updatedAt)).to.be.true
const res2 = await getVideo(server.url, video1.id)
const video1Details = res2.body
expect(video1Details.files).to.have.lengthOf(1)
+ expect(video1Details.tags).to.deep.equal([ 'tag1p3' ])
const file1 = video1Details.files[0]
expect(file1.magnetUri).to.have.lengthOf.above(2)
expect(video2.description).to.equal('my super description for server 3-2')
expect(video2.serverHost).to.equal('localhost:9003')
expect(video2.duration).to.equal(5)
- expect(video2.tags).to.deep.equal([ 'tag2p3', 'tag3p3', 'tag4p3' ])
expect(video2.accountName).to.equal('root')
expect(dateIsValid(video2.createdAt)).to.be.true
expect(dateIsValid(video2.updatedAt)).to.be.true
const res3 = await getVideo(server.url, video2.id)
const video2Details = res3.body
+ expect(video2Details.tags).to.deep.equal([ 'tag2p3', 'tag3p3', 'tag4p3' ])
expect(video2Details.files).to.have.lengthOf(1)
expect(videoUpdated.languageLabel).to.equal('French')
expect(videoUpdated.nsfw).to.be.ok
expect(videoUpdated.description).to.equal('my super description updated')
- expect(videoUpdated.tags).to.deep.equal([ 'tag_up_1', 'tag_up_2' ])
expect(dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true
const res2 = await getVideo(server.url, videoUpdated.uuid)
const videoUpdatedDetails = res2.body
+ expect(videoUpdatedDetails.tags).to.deep.equal([ 'tag_up_1', 'tag_up_2' ])
- const file = videoUpdatedDetails .files[0]
+ const file = videoUpdatedDetails.files[0]
expect(file.magnetUri).to.have.lengthOf.above(2)
expect(file.resolution).to.equal(720)
expect(file.resolutionLabel).to.equal('720p')
expect(video.description).to.equal(null)
expect(video.serverHost).to.equal('localhost:9002')
expect(video.accountName).to.equal('root')
- expect(video.tags).to.deep.equal([ ])
expect(dateIsValid(video.createdAt)).to.be.true
expect(dateIsValid(video.updatedAt)).to.be.true
}