Commit Graph

44 Commits (efb27fb9d17a43d3bff6c10fdc76524c60499f1c)

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 44919a8d57
Fix hidden runner jobs tab
If remote runners feature is only enabled on transcription
2024-07-31 08:56:33 +02:00
Chocobozzz a9d08d2646
Correctly handle invalid current password 2024-07-31 08:35:24 +02:00
Chocobozzz 3a71086e35
Correctly handle transcription conflicts 2024-06-28 14:42:19 +02:00
Chocobozzz fd4831e502
Metadata to know if the caption is auto generated 2024-06-28 08:44:59 +02:00
Chocobozzz 1bfb791e05
Integrate transcription in PeerTube 2024-06-28 08:44:58 +02:00
Chocobozzz 3427330611
Support update object storage urls 2024-06-05 09:01:40 +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
Chocobozzz 4ea659d569
Handle videos with FPS < 1 2024-05-29 08:56:53 +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
kontrollanten cd42491cf0
feat: add support for sub routes under /my-account (#6218)
* feat: add support for sub routes under /my-account

closes #6217

* feat(plugins/client-routes): page titles

Add support for adding custom page titles in client routes.

* fix(client/PluginPages): reload component upon URL change

* Styling

* docs(plugins): update registerClientRoute

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-04-04 08:17:59 +02:00
kontrollanten aaa5acbb0c feat(plugins): add filter:api.user.me.get.result
relates to #6219
2024-03-27 13:32:53 +01:00
Chocobozzz a159b8b517
Add ability to list and delete original file
In admin
2024-03-26 14:10:02 +01:00
Chocobozzz c09e27d77a
Optimize transcoding profile building 2024-03-19 09:53:59 +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 98781f353d
Add user history in import/export 2024-02-28 16:48:59 +01:00
Chocobozzz a4b497c2a9
Add postingRestrictedToMods to channels AP objects
See https://github.com/LemmyNet/lemmy/issues/3837
2024-02-27 15:46:38 +01:00
Chocobozzz b6b1aaa56f
Add video aspect ratio in server 2024-02-27 15:24:34 +01:00
Chocobozzz 0165786f65
Add total moderators/admins in stats 2024-02-23 15:04:18 +01:00
Chocobozzz bb7cb0d2fd
Add ability to set avatar to instance 2024-02-23 14:27:11 +01:00
Chocobozzz 0648d57870
Add total video file size column in users list 2024-02-21 15:28:38 +01:00
Chocobozzz db69d9491e
Add abuse and registration requests stats 2024-02-21 14:57:20 +01:00
Chocobozzz 7986ab8452 Support chapter import/export 2024-02-21 13:49:08 +01:00
Chocobozzz 3cac8a756f Fix lint, tests and styling 2024-02-21 13:49:08 +01:00
Chocobozzz 8573e5a80a Implement user import/export in server 2024-02-21 13:49:08 +01:00
Chocobozzz 7ee0efb57a
Add ability to set a banner to the instance 2024-02-20 11:33:10 +01:00
Chocobozzz a012d6c2a9
Add notification on subscription live stream 2024-02-15 14:06:25 +01:00
Chocobozzz 4cbea51255
Add subdivision to viewer stats 2023-12-28 09:56:05 +01:00
Chocobozzz 4f3fb47884
Implement FEP-2677
Better way to find and follow remote instance actor
2023-12-27 16:01:52 +01:00
Chocobozzz b9077c83fc
Add ability to disable storyboards 2023-12-27 10:39:09 +01:00
Chocobozzz b6b50bf0b4
Use new plugin index sort and recommended tags 2023-12-20 10:55:47 +01:00
Chocobozzz fe37e5232b
Add ability to customize views/playback interval 2023-12-20 10:55:47 +01:00
Chocobozzz b4f4432459
Viewers federation protocol v2
More efficient than the current one where instance is not fast enough to
send all viewers if a video becomes popular

The new protocol can be enabled by setting env
USE_VIEWERS_FEDERATION_V2='true'

Introduce a result field in View activity that contains the number of
viewers. This field is used by the origin instance to send the total
viewers on the video to remote instances. The difference with the
current protocol is that we don't have to send viewers individually to
remote instances.

There are 4 cases:
 * View activity from federation on Remote Video -> instance replaces
   all current viewers by a new viewer that contains the result counter
 * View activity from federation on Local Video -> instance adds the
   viewer without considering the result counter
 * Local view on Remote Video -> instance adds the viewer and send it to
   the origin instance
 * Local view on Local Video -> instance adds the viewer

Periodically PeerTube cleanups expired viewers. On local videos, the
instance sends to remote instances a View activity with the result
counter so they can update their viewers counter for that particular
video
2023-12-20 10:55:47 +01:00
Chocobozzz af8a47125f
Better isNewVideo variable/functions name 2023-12-15 14:52:12 +01:00
Chocobozzz d4f21493e1
Respect "transcode original resolution" for runner 2023-11-17 16:25:11 +01:00
Chocobozzz d3c9a2e5b9
Add script to move videos to file system 2023-11-02 09:21:49 +01:00
Chocobozzz 543fbd1ffe
Correctly display broken muxing session
Can happen when we stream an audio stream only
2023-10-30 11:57:39 +01: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 44e12dc809
Update bullmq dependency 2023-10-12 09:29:45 +02:00
Chocobozzz 2db1f3238d
Update server dependencies 2023-10-11 11:06:34 +02:00
Chocobozzz d0f8a0e677
Fix mime type handling from remote instances 2023-10-04 09:59:27 +02:00
Chocobozzz 77b70702d2
Add video chapters support 2023-08-28 16:17:31 +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