修改编码器命名规则
This commit is contained in:
@@ -54,11 +54,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="codec-panel">
|
||||
<label for="decoder-select">视频解码器:</label>
|
||||
<select id="decoder-select"></select>
|
||||
</div>
|
||||
<div class="codec-panel">
|
||||
<label for="encoder-select">硬件编码器:</label>
|
||||
<label for="encoder-select">编码加速:</label>
|
||||
<select id="encoder-select"></select>
|
||||
</div>
|
||||
<div id="loading-spinner" class="spinner-container">
|
||||
|
||||
@@ -10,10 +10,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
const loginPasswordInput = document.getElementById('login-password');
|
||||
const loginBtn = document.getElementById('login-btn');
|
||||
const loginError = document.getElementById('login-error');
|
||||
const decoderSelect = document.getElementById('decoder-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 transcodingOverlay = document.getElementById('transcoding-overlay');
|
||||
const videoPlayer = document.getElementById('video-player');
|
||||
@@ -92,12 +89,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
if (playbackSpeed) {
|
||||
videoPlayer.playbackRate = parseFloat(playbackSpeed.value) || 1;
|
||||
}
|
||||
if (decoderLabel) {
|
||||
decoderLabel.textContent = '视频解码器:';
|
||||
}
|
||||
if (encoderLabel) {
|
||||
encoderLabel.textContent = '视频编码器:';
|
||||
}
|
||||
|
||||
|
||||
const formatBytes = (bytes) => {
|
||||
if (!bytes || bytes === 0) return '0 B';
|
||||
@@ -143,7 +135,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
};
|
||||
|
||||
const buildHlsPlaylistUrl = () => {
|
||||
const decoder = decoderSelect?.value || 'auto';
|
||||
const decoder = 'auto';
|
||||
const encoder = encoderSelect?.value || 'h264_rkmpp';
|
||||
let streamUrl = `/api/hls/playlist.m3u8?bucket=${encodeURIComponent(selectedBucket)}&key=${encodeURIComponent(selectedKey)}&decoder=${encodeURIComponent(decoder)}&encoder=${encodeURIComponent(encoder)}`;
|
||||
if (s3Username) streamUrl += `&username=${encodeURIComponent(s3Username)}`;
|
||||
@@ -542,7 +534,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
topBanner.textContent = title;
|
||||
topBanner.classList.remove('hidden');
|
||||
document.title = title;
|
||||
populateSelect(decoderSelect, data.videoDecoders || [], data.defaultVideoDecoder || 'auto');
|
||||
populateSelect(encoderSelect, data.videoEncoders || [], data.defaultVideoEncoder || 'h264_rkmpp');
|
||||
} catch (err) {
|
||||
console.error('Config load failed:', err);
|
||||
|
||||
27
server.js
27
server.js
@@ -76,31 +76,14 @@ const transcodeProcesses = new Map();
|
||||
const wsSubscriptions = new Map();
|
||||
|
||||
const AVAILABLE_VIDEO_ENCODERS = [
|
||||
{ value: 'libx264', label: 'libx264 (Software H.264)' },
|
||||
{ value: 'libx265', label: 'libx265 (Software H.265)' },
|
||||
{ value: 'h264_nvenc', label: 'h264_nvenc (NVIDIA H.264)' },
|
||||
{ value: 'hevc_nvenc', label: 'hevc_nvenc (NVIDIA HEVC)' },
|
||||
{ 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)' }
|
||||
{ value: 'h264_rkmpp', label: 'H.264(RKMPP HighSpeed)' },
|
||||
{ value: 'hevc_rkmpp', label: 'H.265(RKMPP HighSpeed)' },
|
||||
{ value: 'libx264', label: 'H.264(Software Slow)' },
|
||||
{ value: 'libx265', label: 'H.265(Software Slow)' }
|
||||
];
|
||||
|
||||
const AVAILABLE_VIDEO_DECODERS = [
|
||||
{ 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)' }
|
||||
{ value: 'auto', label: 'Auto Select Decoder' }
|
||||
];
|
||||
|
||||
const getProgressKey = (key) => key.split('/').map(segment => segment.replace(/[^a-zA-Z0-9_\-]/g, '_')).join('/');
|
||||
|
||||
Reference in New Issue
Block a user