Compare commits
	
		
			2 Commits
		
	
	
		
			6640ba5c25
			...
			add-cq-con
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 901d20e265 | |||
| 98acf0be91 | 
							
								
								
									
										44
									
								
								dist/main.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								dist/main.js
									
									
									
									
										vendored
									
									
								
							| @ -6,6 +6,7 @@ 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], | ||||
| @ -20,6 +21,7 @@ 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; | ||||
| @ -72,6 +74,14 @@ 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', | ||||
| @ -106,6 +116,7 @@ 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); | ||||
| @ -146,12 +157,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) { | ||||
|     // if (targetBitrate > inputBitrate) { | ||||
|     //     targetBitrate = inputBitrate; | ||||
|     //} | ||||
|     // } | ||||
|     logger.info(`Building encoder options, received ${JSON.stringify(params)}`); | ||||
|     if (shouldInitVaapi && streamNum != undefined) { | ||||
|         latestStreamNum = streamNum; | ||||
| @ -163,14 +174,12 @@ async function vodBuilder(params) { | ||||
|         inputOptions: shouldInitVaapi ? buildInitOptions() : [], | ||||
|         outputOptions: [ | ||||
|             `-preset ${pluginSettings.vodQuality}`, | ||||
|             `-b:v${streamSuffix} ${targetBitrate}`, | ||||
|             //`-b:v${streamSuffix} 0`, | ||||
|             `-bufsize ${targetBitrate * 2}`, | ||||
|             // `-b:v${streamSuffix} ${targetBitrate}`, | ||||
|             // `-bufsize ${targetBitrate * 2}`, | ||||
|             //`-crf 21`, // increased 19 to 21, file size massive | ||||
|             `-profile:v${streamSuffix} high`, | ||||
|             `-cq 22`, | ||||
|             `-rc:v vbr`, | ||||
|             `-c:v${streamSuffix} h264_nvenc`, | ||||
|             `-bf 4` | ||||
|             `-c:v${streamSuffix} h264_nvenc` | ||||
|         ] | ||||
|     }; | ||||
|     logger.info(`EncoderOptions: ${JSON.stringify(options)}`); | ||||
| @ -182,9 +191,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; | ||||
| @ -196,16 +205,13 @@ 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}`, | ||||
|             //`-b:v${streamSuffix} 0`, | ||||
|             `-bufsize ${targetBitrate * 2}`, | ||||
|             `-rc:v vbr`, | ||||
|             `-bf 4` | ||||
|             `-cq 22` | ||||
|             // `-g:v${streamSuffix} ${fps * 2}`, | ||||
|             // `-b:v${streamSuffix} ${targetBitrate}`, | ||||
|             // `-bufsize ${targetBitrate * 2}`, | ||||
|         ] | ||||
|     }; | ||||
|     logger.info(`EncoderOptions: ${JSON.stringify(options)}`); | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "peertube-plugin-nctv-nvenc-transcode", | ||||
|     "version": "1.1.1", | ||||
|     "version": "1.0.7", | ||||
|     "license": "MIT", | ||||
|     "description": "Plugin that adds transcode profiles which use NVIDIA NVENC for hardware acceleration", | ||||
|     "engine": { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user