17 Commits

Author SHA1 Message Date
2ef8b2deec cq 21 2024-04-13 23:54:50 -04:00
6a150618b9 change to cq 20 rather than 22 2024-04-13 22:13:37 -04:00
6640ba5c25 bump version 2024-04-13 20:33:17 -04:00
6a47bd9e77 keep -cq within bitrate limits, we'll see how it goes 2024-04-13 20:32:58 -04:00
bdcdb2e8e5 cq 24 again, no bitrate 2024-04-13 19:53:49 -04:00
356caf37fd rely on -cq rather than bitrate, remove bufsize 2024-04-13 19:48:34 -04:00
8483a37bae fuck it, cq 24 2024-04-13 19:45:24 -04:00
940ca6d751 back to -cq 22 2024-04-13 19:45:00 -04:00
9848e0de9f test -cq 18 from -cq 24 2024-04-13 19:32:34 -04:00
de17b72171 add rc:v vbr and -bf 4 2024-04-13 19:18:32 -04:00
c92e017680 bump version 2024-04-13 19:05:23 -04:00
4b8b0e4888 fuck it, just go with input bitrate 2024-04-13 19:04:47 -04:00
b24c0e4ef7 restore target bitrate settings 2024-04-13 18:55:32 -04:00
ae2c910f20 remove erroneous stuff 2024-04-13 18:14:56 -04:00
ee56666c33 fix syntax error 2024-04-13 18:08:01 -04:00
35ffb74383 cq 22, re-add bufsize and bitrate shit 2024-04-13 18:02:09 -04:00
84cc3a58cd replace -cq 21 with -cq 23 2024-04-13 17:35:51 -04:00
2 changed files with 22 additions and 28 deletions

48
dist/main.js vendored
View File

@ -6,7 +6,6 @@ let transcodingManager;
const DEFAULT_HARDWARE_DECODE = false;
const DEFAULT_VOD_QUALITY = "p7";
const DEFAULT_LIVE_QUALITY = "hq";
const DEFAULT_CQ = 23;
const DEFAULT_BITRATES = new Map([
[0, 64 * 1000],
[144, 320 * 1000],
@ -21,7 +20,6 @@ let pluginSettings = {
hardwareDecode: DEFAULT_HARDWARE_DECODE,
vodQuality: DEFAULT_VOD_QUALITY,
liveQuality: DEFAULT_LIVE_QUALITY,
cqQuality: DEFAULT_CQ,
baseBitrate: new Map(DEFAULT_BITRATES)
};
let latestStreamNum = 9999;
@ -74,14 +72,6 @@ async function register({ settingsManager, peertubeHelpers, transcodingManager:
default: DEFAULT_LIVE_QUALITY.toString(),
private: false
});
registerSetting({
name: 'constant-quality',
label: 'Constant Quality (-cq)',
descriptionHTML: 'Edit the constant quality (-cq) for videos. The lower the number, the higher the perceived visual fidelity and file size.',
type: 'input',
default: DEFAULT_CQ.toString(),
private: false,
});
registerSetting({
name: 'base-bitrate-description',
label: 'Base bitrate',
@ -116,7 +106,6 @@ async function loadSettings(settingsManager) {
pluginSettings.hardwareDecode = await settingsManager.getSetting('hardware-decode') == "true";
pluginSettings.vodQuality = parseInt(await settingsManager.getSetting('vod-quality')) || DEFAULT_VOD_QUALITY;
pluginSettings.liveQuality = parseInt(await settingsManager.getSetting('live-quality')) || DEFAULT_LIVE_QUALITY;
pluginSettings.cqQuality = parseInt(await settingsManager.getSetting('constant-quality')) || DEFAULT_CQ;
for (const [resolution, bitrate] of DEFAULT_BITRATES) {
const key = `base-bitrate-${resolution}`;
const storedValue = await settingsManager.getSetting(key);
@ -157,12 +146,12 @@ function buildInitOptions() {
async function vodBuilder(params) {
const { resolution, fps, streamNum, inputBitrate } = params;
const streamSuffix = streamNum == undefined ? '' : `:${streamNum}`;
// let targetBitrate = getTargetBitrate(resolution, fps);
//let targetBitrate = getTargetBitrate(resolution, fps);
let targetBitrate = inputBitrate;
let shouldInitVaapi = (streamNum == undefined || streamNum <= latestStreamNum);
// if (targetBitrate > inputBitrate) {
// targetBitrate = inputBitrate;
// }
//if (targetBitrate > inputBitrate) {
// targetBitrate = inputBitrate;
//}
logger.info(`Building encoder options, received ${JSON.stringify(params)}`);
if (shouldInitVaapi && streamNum != undefined) {
latestStreamNum = streamNum;
@ -174,12 +163,14 @@ async function vodBuilder(params) {
inputOptions: shouldInitVaapi ? buildInitOptions() : [],
outputOptions: [
`-preset ${pluginSettings.vodQuality}`,
// `-b:v${streamSuffix} ${targetBitrate}`,
// `-bufsize ${targetBitrate * 2}`,
//`-crf 21`, // increased 19 to 21, file size massive
`-b:v${streamSuffix} ${targetBitrate}`,
//`-b:v${streamSuffix} 0`,
`-bufsize ${targetBitrate * 2}`,
`-profile:v${streamSuffix} high`,
`-cq 22`,
`-c:v${streamSuffix} h264_nvenc`
`-cq 21`,
`-rc:v vbr`,
`-c:v${streamSuffix} h264_nvenc`,
`-bf 4`
]
};
logger.info(`EncoderOptions: ${JSON.stringify(options)}`);
@ -191,9 +182,9 @@ async function liveBuilder(params) {
// let targetBitrate = getTargetBitrate(resolution, fps);
let targetBitrate = inputBitrate;
let shouldInitVaapi = (streamNum == undefined || streamNum <= latestStreamNum);
// if (targetBitrate > inputBitrate) {
//if (targetBitrate > inputBitrate) {
// targetBitrate = inputBitrate;
// }
//}
logger.info(`Building encoder options, received ${JSON.stringify(params)}`);
if (shouldInitVaapi && streamNum != undefined) {
latestStreamNum = streamNum;
@ -205,13 +196,16 @@ async function liveBuilder(params) {
inputOptions: shouldInitVaapi ? buildInitOptions() : [],
outputOptions: [
`-tune ${pluginSettings.liveQuality}`,
// `-r:v${streamSuffix} ${fps}`,
`-r:v${streamSuffix} ${fps}`,
`-profile:v${streamSuffix} high`,
`-c:v${streamSuffix} h264_nvenc`,
`-cq 22`
// `-g:v${streamSuffix} ${fps * 2}`,
// `-b:v${streamSuffix} ${targetBitrate}`,
// `-bufsize ${targetBitrate * 2}`,
`-cq 21`,
`-g:v${streamSuffix} ${fps * 2}`,
`-b:v${streamSuffix} ${targetBitrate}`,
//`-b:v${streamSuffix} 0`,
`-bufsize ${targetBitrate * 2}`,
`-rc:v vbr`,
`-bf 4`
]
};
logger.info(`EncoderOptions: ${JSON.stringify(options)}`);

View File

@ -1,6 +1,6 @@
{
"name": "peertube-plugin-nctv-nvenc-transcode",
"version": "1.0.7",
"version": "1.1.1",
"license": "MIT",
"description": "Plugin that adds transcode profiles which use NVIDIA NVENC for hardware acceleration",
"engine": {