Commit Graph

256 Commits

Author SHA1 Message Date
Chocobozzz
816f346a60 Separate HLS audio and video streams
Allows:
  * The HLS player to propose an "Audio only" resolution
  * The live to output an "Audio only" resolution
  * The live to ingest and output an "Audio only" stream

 This feature is under a config for VOD videos and is enabled by default for lives

 In the future we can imagine:
  * To propose multiple audio streams for a specific video
  * To ingest an audio only VOD and just output an audio only "video"
    (the player would play the audio file and PeerTube would not
    generate additional resolutions)

This commit introduce a new way to download videos:
 * Add "/download/videos/generate/:videoId" endpoint where PeerTube can
   mux an audio only and a video only file to a mp4 container
 * The download client modal introduces a new default panel where the
   user can choose resolutions it wants to download
2024-08-05 08:31:59 +02:00
Chocobozzz
af73531e3a Add large-v2 model info 2024-07-15 08:27:37 +02:00
Chocobozzz
f81bc3d3dc Relax client log rate limiting 2024-07-02 09:43:07 +02:00
Chocobozzz
1bfb791e05 Integrate transcription in PeerTube 2024-06-28 08:44:58 +02:00
kontrollanten
ca26687e1f feat: config option object_storage.max_request_attempts (#6418)
* feat: config option object_storage.max_attempts

Backblaze recommends to have a high amount of attempts since they've
designed their architecture so that it will return 5xx errors to
indicate that the client should do a new attempt.

https://www.backblaze.com/blog/b2-503-500-server-error/

closes #6415

* Rephrase comment

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-06-11 13:57:18 +02:00
Chocobozzz
1e3a5b25c3 Plan to have multiple sizes in the future 2024-05-31 09:02:34 +02:00
Chocobozzz
5e01c9c9a7 Check latest plugin versions every 4 hours
12 hours is too much for important plugin releases
2024-05-30 16:59:38 +02:00
Chocobozzz
29329d6c45 Implement auto tag on comments and videos
* Comments and videos can be automatically tagged using core rules or
   watched word lists
 * These tags can be used to automatically filter videos and comments
 * Introduce a new video comment policy where comments must be approved
   first
 * Comments may have to be approved if the user auto block them using
   core rules or watched word lists
 * Implement FEP-5624 to federate reply control policies
2024-05-29 15:03:14 +02:00
Skid
0a43de655a Fix typo at log.rotation.enabled 2024-05-15 16:16:25 +02:00
Chocobozzz
5cb3e6a0b8 Use sessionId instead of IP to identify viewer
Breaking: YAML config `ip_view_expiration` is renamed `view_expiration`
Breaking: Views are taken into account after 10 seconds instead of 30
seconds (can be changed in YAML config)

Purpose of this commit is to get closer to other video platforms where
some platforms count views on play (mux, vimeo) or others use a very low
delay (instagram, tiktok)

We also want to improve the viewer identification, where we no longer
use the IP but the `sessionId` generated by the web browser. Multiple
viewers behind a NAT can now be able to be identified as independent
viewers (this method is also used by vimeo or mux)
2024-04-04 16:27:40 +02:00
Chocobozzz
302fd93c49 Disable http metrics by default
Can lead to performance issues on prometheus side and peertube side if
many different URLs have been called on peertube side (google indexation
for example)
2024-03-19 14:52:41 +01:00
chagai95
e57c3024f4 Add config option to keep original video file (basic first version) (#6157)
* testing not removing old file and adding columb to db

* implement feature

* remove unnecessary config changes

* use only keptOriginalFileName, change keptOriginalFileName to keptOriginalFilename for consistency with with videoFile table, slight refactor with basename()

* save original video files to dedicated directory original-video-files

* begin implementing object storage (bucket) support

---------

Co-authored-by: chagai.friedlander <chagai.friedlander@fairkom.eu>
Co-authored-by: Ian <ian.kraft@hotmail.com>
Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-03-15 15:47:18 +01:00
Chocobozzz
10e78bb778 Remove twitter whitelisted option
It doesn't seem to be required
2024-03-08 10:54:29 +01:00
Chocobozzz
68d006b6fc Add config to disable storing lives in s3 2024-02-26 16:14:40 +01:00
Chocobozzz
0165786f65 Add total moderators/admins in stats 2024-02-23 15:04:18 +01:00
Chocobozzz
db69d9491e Add abuse and registration requests stats 2024-02-21 14:57:20 +01:00
Chocobozzz
8573e5a80a Implement user import/export in server 2024-02-21 13:49:08 +01:00
Chocobozzz
9489b536a2 Add warning for s3 provider support 2024-01-26 17:20:07 +01:00
Chocobozzz
4cbea51255 Add subdivision to viewer stats 2023-12-28 09:56:05 +01:00
Chocobozzz
b9077c83fc Add ability to disable storyboards 2023-12-27 10:39:09 +01:00
Chocobozzz
fe37e5232b Add ability to customize views/playback interval 2023-12-20 10:55:47 +01:00
Chocobozzz
2bc4d26b94 Add ability to customize frames to analyze 2023-11-08 10:18:39 +01:00
Chocobozzz
1ba8bbded0 Also use 127.0.0.1 for database and redis
Node 18 can resolve localhost to IPv6 address, where postgresql and/or
redis may listen on IPv4 only
2023-11-07 10:41:08 +01:00
Chocobozzz
90db2b3aed Add ability to disable HTTP logs 2023-10-24 10:57:41 +02:00
Wicklow
ea6c2b064f Allow to change the default channel name (#6000)
* Allow to change the default channel name

* Fix tests

* Fix tests

* Fix tests
2023-10-19 15:22:00 +02:00
Chocobozzz
822872aacd Don't display admin email in security.txt 2023-08-18 10:35:45 +02:00
Chocobozzz
3a4992633e Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge
conflicts, but it's a major step forward:

 * Server can be faster at startup because imports() are async and we can
   easily lazy import big modules
 * Angular doesn't seem to support ES import (with .js extension), so we
   had to correctly organize peertube into a monorepo:
    * Use yarn workspace feature
    * Use typescript reference projects for dependencies
    * Shared projects have been moved into "packages", each one is now a
      node module (with a dedicated package.json/tsconfig.json)
    * server/tools have been moved into apps/ and is now a dedicated app
      bundled and published on NPM so users don't have to build peertube
      cli tools manually
    * server/tests have been moved into packages/ so we don't compile
      them every time we want to run the server
 * Use isolatedModule option:
   * Had to move from const enum to const
     (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums)
   * Had to explictely specify "type" imports when used in decorators
 * Prefer tsx (that uses esbuild under the hood) instead of ts-node to
   load typescript files (tests with mocha or scripts):
     * To reduce test complexity as esbuild doesn't support decorator
       metadata, we only test server files that do not import server
       models
     * We still build tests files into js files for a faster CI
 * Remove unmaintained peertube CLI import script
 * Removed some barrels to speed up execution (less imports)
2023-08-11 15:02:33 +02:00
mira.bat
f862be2749 Add an option to sign federated fetches for mastodon compatibility (#5898)
* Fix player error modal

Not hidden when we change the video

* Correctly dispose player components

* Sign cross-server fetch requests for mastodon AUTHORIZED_FETCH compatibilty

* Add a remote fetch sign configuration knob

* Federated fetches refactoring

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
Co-authored-by: ira <ira@foxgirl.space>
2023-07-27 17:01:15 +02:00
Chocobozzz
97583d0023 Add more rate limits 2023-07-26 08:37:50 +02:00
Chocobozzz
12dc3a942a Implement replace file in server side 2023-07-21 17:38:13 +02:00
Chocobozzz
d732ec7b46 Rename "videos" config to "web-videos" 2023-07-11 11:23:51 +02:00
Chocobozzz
c57ad141a9 Rename webtorrent config to web_videos 2023-07-11 09:52:14 +02:00
Chocobozzz
784e2ad5c3 Prefer web videos in favour of webtorrent 2023-07-11 09:21:13 +02:00
Chocobozzz
d8f39b126d Add storyboard support 2023-06-29 10:16:55 +02:00
kontrollanten
674f8ddd41 feat(server): add redis sentinel support (#5593)
* feat(server): add redis sentinel support

closes #5141

* Styling

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-10 09:52:50 +02:00
Chocobozzz
5e47f6ab98 Support studio transcoding in peertube runner 2023-05-09 08:57:34 +02:00
Chocobozzz
6a49056026 Add TMP persistent directory
To store files that must be preserved between peertube restarts
2023-05-09 08:57:34 +02:00
Chocobozzz
0c9668f779 Implement remote runner jobs in server
Move ffmpeg functions to @shared
2023-05-09 08:57:34 +02:00
Chocobozzz
7b59f76e82 Remove extra space 2023-05-02 10:33:50 +02:00
Wicklow
b302c80dc0 feature/ability to disable video history by default (#5728)
* draft: ability to disable video history by default

* Update configuration and add tests

* Updated code based on review comments

* Add tests on registration and video quota

* Remove required video quotas in query

* Fix tests
2023-04-07 10:09:54 +02:00
ar9708
b5f38b7898 Correct API docs link in ./config/production.yaml.example
Just a broken link. :)
2023-04-03 11:08:32 +02:00
Chocobozzz
8d1f78044c Add ability to disable http duration OTEL metrics 2023-02-27 13:53:54 +01:00
Chocobozzz
4765348107 Add x-powered-by header 2023-02-27 09:22:59 +01:00
Chocobozzz
f44cd95c01 Update doc anchor links 2023-02-23 09:46:43 +01:00
Chocobozzz
c5c95361e6 Move to new documentation links 2023-02-22 16:15:14 +01:00
Chocobozzz
15825ef18d Fix default trending algorithm in admin config 2023-02-20 10:18:05 +01:00
Chocobozzz
e364e31e25 Implement signup approval in server 2023-01-19 13:53:40 +01:00
Chocobozzz
3f3530c3db Merge branch 'release/5.0.0' into develop 2023-01-12 08:54:13 +01:00
Chocobozzz
8180f60477 Fix ACL incompatibility with some s3 providers
We'll move to another method in the future

See https://github.com/Chocobozzz/PeerTube/issues/5497
2023-01-12 08:41:16 +01:00
Chocobozzz
b65f5367ba Add ability to customize token lifetime 2023-01-04 11:41:29 +01:00