修改编码器命名规则

This commit is contained in:
CN-JS-HuiBai
2026-04-04 11:34:06 +08:00
parent aa49d2d8d8
commit 65e71c5329
3 changed files with 8 additions and 38 deletions

View File

@@ -54,11 +54,7 @@
</select> </select>
</div> </div>
<div class="codec-panel"> <div class="codec-panel">
<label for="decoder-select">视频解码器</label> <label for="encoder-select">编码加速</label>
<select id="decoder-select"></select>
</div>
<div class="codec-panel">
<label for="encoder-select">硬件编码器:</label>
<select id="encoder-select"></select> <select id="encoder-select"></select>
</div> </div>
<div id="loading-spinner" class="spinner-container"> <div id="loading-spinner" class="spinner-container">

View File

@@ -10,10 +10,7 @@ document.addEventListener('DOMContentLoaded', () => {
const loginPasswordInput = document.getElementById('login-password'); const loginPasswordInput = document.getElementById('login-password');
const loginBtn = document.getElementById('login-btn'); const loginBtn = document.getElementById('login-btn');
const loginError = document.getElementById('login-error'); const loginError = document.getElementById('login-error');
const decoderSelect = document.getElementById('decoder-select');
const encoderSelect = document.getElementById('encoder-select'); const encoderSelect = document.getElementById('encoder-select');
const decoderLabel = document.querySelector('label[for="decoder-select"]');
const encoderLabel = document.querySelector('label[for="encoder-select"]');
const playerOverlay = document.getElementById('player-overlay'); const playerOverlay = document.getElementById('player-overlay');
const transcodingOverlay = document.getElementById('transcoding-overlay'); const transcodingOverlay = document.getElementById('transcoding-overlay');
const videoPlayer = document.getElementById('video-player'); const videoPlayer = document.getElementById('video-player');
@@ -92,12 +89,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (playbackSpeed) { if (playbackSpeed) {
videoPlayer.playbackRate = parseFloat(playbackSpeed.value) || 1; videoPlayer.playbackRate = parseFloat(playbackSpeed.value) || 1;
} }
if (decoderLabel) {
decoderLabel.textContent = '视频解码器:';
}
if (encoderLabel) {
encoderLabel.textContent = '视频编码器:';
}
const formatBytes = (bytes) => { const formatBytes = (bytes) => {
if (!bytes || bytes === 0) return '0 B'; if (!bytes || bytes === 0) return '0 B';
@@ -143,7 +135,7 @@ document.addEventListener('DOMContentLoaded', () => {
}; };
const buildHlsPlaylistUrl = () => { const buildHlsPlaylistUrl = () => {
const decoder = decoderSelect?.value || 'auto'; const decoder = 'auto';
const encoder = encoderSelect?.value || 'h264_rkmpp'; const encoder = encoderSelect?.value || 'h264_rkmpp';
let streamUrl = `/api/hls/playlist.m3u8?bucket=${encodeURIComponent(selectedBucket)}&key=${encodeURIComponent(selectedKey)}&decoder=${encodeURIComponent(decoder)}&encoder=${encodeURIComponent(encoder)}`; let streamUrl = `/api/hls/playlist.m3u8?bucket=${encodeURIComponent(selectedBucket)}&key=${encodeURIComponent(selectedKey)}&decoder=${encodeURIComponent(decoder)}&encoder=${encodeURIComponent(encoder)}`;
if (s3Username) streamUrl += `&username=${encodeURIComponent(s3Username)}`; if (s3Username) streamUrl += `&username=${encodeURIComponent(s3Username)}`;
@@ -542,7 +534,6 @@ document.addEventListener('DOMContentLoaded', () => {
topBanner.textContent = title; topBanner.textContent = title;
topBanner.classList.remove('hidden'); topBanner.classList.remove('hidden');
document.title = title; document.title = title;
populateSelect(decoderSelect, data.videoDecoders || [], data.defaultVideoDecoder || 'auto');
populateSelect(encoderSelect, data.videoEncoders || [], data.defaultVideoEncoder || 'h264_rkmpp'); populateSelect(encoderSelect, data.videoEncoders || [], data.defaultVideoEncoder || 'h264_rkmpp');
} catch (err) { } catch (err) {
console.error('Config load failed:', err); console.error('Config load failed:', err);

View File

@@ -76,31 +76,14 @@ const transcodeProcesses = new Map();
const wsSubscriptions = new Map(); const wsSubscriptions = new Map();
const AVAILABLE_VIDEO_ENCODERS = [ const AVAILABLE_VIDEO_ENCODERS = [
{ value: 'libx264', label: 'libx264 (Software H.264)' }, { value: 'h264_rkmpp', label: 'H.264(RKMPP HighSpeed)' },
{ value: 'libx265', label: 'libx265 (Software H.265)' }, { value: 'hevc_rkmpp', label: 'H.265(RKMPP HighSpeed)' },
{ value: 'h264_nvenc', label: 'h264_nvenc (NVIDIA H.264)' }, { value: 'libx264', label: 'H.264(Software Slow)' },
{ value: 'hevc_nvenc', label: 'hevc_nvenc (NVIDIA HEVC)' }, { value: 'libx265', label: 'H.265(Software Slow)' }
{ value: 'h264_qsv', label: 'h264_qsv (Intel QSV H.264)' },
{ value: 'hevc_qsv', label: 'hevc_qsv (Intel QSV HEVC)' },
{ value: 'h264_vaapi', label: 'h264_vaapi (VAAPI H.264)' },
{ value: 'hevc_vaapi', label: 'hevc_vaapi (VAAPI HEVC)' },
{ value: 'h264_rkmpp', label: 'h264_rkmpp (RKMPP H.264)' },
{ value: 'hevc_rkmpp', label: 'hevc_rkmpp (RKMPP HEVC)' },
{ value: 'mjpeg_rkmpp', label: 'mjpeg_rkmpp (RKMPP MJPEG)' }
]; ];
const AVAILABLE_VIDEO_DECODERS = [ const AVAILABLE_VIDEO_DECODERS = [
{ value: 'auto', label: 'Auto Select Decoder' }, { value: 'auto', label: 'Auto Select Decoder' }
{ value: 'av1_rkmpp', label: 'av1_rkmpp (RKMPP AV1)' },
{ value: 'h263_rkmpp', label: 'h263_rkmpp (RKMPP H.263)' },
{ value: 'h264_rkmpp', label: 'h264_rkmpp (RKMPP H.264)' },
{ value: 'hevc_rkmpp', label: 'hevc_rkmpp (RKMPP HEVC)' },
{ value: 'mjpeg_rkmpp', label: 'mjpeg_rkmpp (RKMPP MJPEG)' },
{ value: 'mpeg1_rkmpp', label: 'mpeg1_rkmpp (RKMPP MPEG-1)' },
{ value: 'mpeg2_rkmpp', label: 'mpeg2_rkmpp (RKMPP MPEG-2)' },
{ value: 'mpeg4_rkmpp', label: 'mpeg4_rkmpp (RKMPP MPEG-4)' },
{ value: 'vp8_rkmpp', label: 'vp8_rkmpp (RKMPP VP8)' },
{ value: 'vp9_rkmpp', label: 'vp9_rkmpp (RKMPP VP9)' }
]; ];
const getProgressKey = (key) => key.split('/').map(segment => segment.replace(/[^a-zA-Z0-9_\-]/g, '_')).join('/'); const getProgressKey = (key) => key.split('/').map(segment => segment.replace(/[^a-zA-Z0-9_\-]/g, '_')).join('/');