ActivityPub federated video streaming platform using P2P directly in the web browser https://joinpeertube.org/
 
 
 
 
 
 
Go to file
lutangar ef14cf4a5c
feat(transcription): groundwork
chore: fiddling around some more

chore: add ctranslate2 and timestamped

chore: add performance markers

chore: refactor test

chore: change worflow name

chore: ensure Python3

chore(duration): convert to chai/mocha syntahx

chore(transcription): add individual tests for others transcribers

chore(transcription): implement formats test of all implementations

Also compare result of other implementation to the reference implementation

chore(transcription): add more test case with other language and models size and local model

chore(test): wip ctranslate 2 adapat

chore(transcription): wip transcript file and benchmark

chore(test): clean a bit

chore(test): clean a bit

chore(test): refacto timestamed spec

chore(test): update workflow

chore(test): fix glob expansion with sh

chore(test): extract some hw info

chore(test): fix async tests

chore(benchmark): add model info

feat(transcription): allow use of a local mode in timestamped-whisper

feat(transcription): extract run and profiling info in own value object

feat(transcription): extract run concept in own class an run more bench

chore(transcription): somplify run object only a uuid is now needed and add more benchmark scenario

docs(transcription): creates own package readme

docs(transcription): add local model usage

docs(transcription): update README

fix(transcription): use fr video for better comparison

chore(transcription): make openai comparison passed

docs(timestamped): clea

chore(transcription): change transcribers transcribe method signature

Introduce whisper builtin model.

fix(transcription): activate language detection

Forbid transcript creation without a language.
Add `languageDetection` flag to an engine and some assertions.

Fix an issue in `whisper-ctranslate2` :
https://github.com/Softcatala/whisper-ctranslate2/pull/93

chore(transcription): use PeerTube time helpers instead of custom ones

Update existing time function to output an integer number of seconds and add a ms human-readable time formatter with hints of tests.

chore(transcription): use PeerTube UUID helpers

chore(transcription): enable CER evaluation

Thanks to this recent fix in Jiwer <3
https://github.com/jitsi/jiwer/issues/873

chore(jiwer): creates JiWer package

I'm not very happy with the TranscriptFileEvaluator constructor... suggestions ?

chore(JiWer): add usage in README

docs(jiwer): update JiWer readme

chore(transcription): use FunMOOC video in fixtures

chore(transcription): add proper english video fixture

chore(transcription): use os tmp directory where relevant

chore(transcription): fix jiwer cli test reference.txt

chore(transcription): move benchmark out of tests

chore(transcription): remove transcription workflow

docs(transcription): add benchmark info

fix(transcription): use ms precision in other transcribers

chore(transcription): simplify most of the tests

chore(transcription): remove slashes when building path with join

chore(transcription): make fromPath method async

chore(transcription): assert path to model is a directory for CTranslate2 transcriber

chore(transcription): ctranslate2 assertion

chore(transcription): ctranslate2 assertion

chore(transcription): add preinstall script for Python dependencies

chore(transcription): add download and unzip utils functions

chore(transcription): add download and unzip utils functions

chore(transcription): download & unzip models fixtures

chore(transcription): zip

chore(transcription): raise download file test timeout

chore(transcription): simplify download file test

chore(transcription): add transcriptions test to CI

chore(transcription): raise test preconditions timeout

chore(transcription): run preinstall scripts before running ci

chore(transcription): create dedicated tmp folder for transcriber tests

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): use short video for local model test

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): setup verbosity based on NODE_ENV value
2024-06-28 08:43:40 +02:00
.github feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
apps feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
client Fix lint 2024-06-27 14:34:18 +02:00
config feat: config option object_storage.max_request_attempts (#6418) 2024-06-11 13:57:18 +02:00
packages feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
scripts feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
server feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
support Prefer using req instead of body 2024-06-12 10:58:07 +02:00
.dockerignore
.editorconfig Update editor config 2023-03-14 14:15:39 +01:00
.eslintrc.json Fix lint 2024-02-22 10:32:28 +01:00
.gitignore feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
.gitpod.yml
.mocharc.cjs Fix tests 2024-02-23 16:29:52 +01:00
CHANGELOG.md Update changelog 2024-04-29 09:02:35 +02:00
CODE_OF_CONDUCT.md Misc wording fixes, while learning how to test/contribute (#5727) 2023-04-05 08:51:38 +02:00
CREDITS.md Update contributors list 2024-06-20 10:50:36 +02:00
FAQ.md Update FAQ.md 2021-08-11 10:46:14 +02:00
LICENSE
README.md It's 2024! 2024-02-16 08:58:29 +01:00
SECURITY.md Update security.md 2024-05-15 16:00:28 +02:00
package.json feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
tsconfig.base.json Implement user import/export in server 2024-02-21 13:49:08 +01:00
tsconfig.eslint.json feat(transcription): groundwork 2024-06-28 08:43:40 +02:00
yarn.lock Update server dependencies 2024-06-21 14:39:50 +02:00

README.md

PeerTube

Website | Join an instance | Create an instance | Chat with us | Donate

Be part of a network of multiple small federated, interoperable video hosting providers. Follow video creators and create videos. No vendor lock-in. All on a platform that is community-owned and ad-free.

Developed with ❤ by Framasoft

Framasoft logo

Client

Server
test suite status JavaScript Style Guide


screenshot

Introduction

PeerTube is a free, decentralized and federated video platform developed as an alternative to other platforms that centralize our data and attention, such as YouTube, Dailymotion or Vimeo. 🎬

To learn more:

Features

All features for viewers | All features for content creators | All features for administrators

Video streaming, even in live!

Just upload your videos, and be sure they will stream anywhere. Add a description, some tags and your video will be discoverable by the entire video fediverse, not just your instance. You can even embed a player on your favorite website!

You are used to hosting live events? We got you covered too! Start livestreaming from your favorite client, and even host permanent streams!


Keep in touch with video creators

Follow your favorite channels from PeerTube or really any other place. No need to have an account on the instance you watched a video to follow its author, you can do all of that from the Fediverse (Mastodon, Pleroma, and plenty others), or just with good ol' RSS.


An interface to call home

Be it as a user or an instance administrator, you can decide what your experience will be like. Don't like the colors? They are easy to change. Don't want to list videos of an instance but let your users subscribe to them? Don't like the regular web client? All of that can be changed, and much more. No UX dark pattern, no mining your data, no video recommendation bullshit™.


Communities that help each other

In addition to visitors using P2P with WebRTC to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide).

Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and alter creativity (more about that in our FAQ).

🙌 Contributing

You don't need to be a programmer to help!

You can give us your feedback, report bugs, help us translate PeerTube, write documentation, and more. Check out the contributing guide to know how, it takes less than 2 minutes to get started. 😉

You can also join the cheerful bunch that makes our community:

Feel free to reach out if you have any questions or ideas! 💬

📦 Create your own instance

See the production guide, which is the recommended way to install or upgrade PeerTube. For hardware requirements, see Should I have a big server to run PeerTube? in the FAQ.

See the community packages, which cover various platforms (including YunoHost and Docker).

📖 Documentation

If you have a question, please try to find the answer in the FAQ first.

User documentation

See the user documentation.

Admin documentation

See how to create your own instance.

See the more general admin documentation.

Tools documentation

Learn how to import/upload videos from CLI or admin your PeerTube instance with the tools documentation.

Technical documentation

See the architecture blueprint for a more detailed explanation of the architectural choices.

See our REST API documentation:

See our ActivityPub documentation.

License

CC BY-SA 4.0, by Framasoft

Code

Copyright (C) 2015-2024 PeerTube Contributors (see CREDITS.md)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.