feat: 支持 MJPEG 解码与 MSD 目录配置

- FFmpeg/hwcodec 增加 RKMPP MJPEG 解码与 RAM FFI,ARM 构建启用对应解码器
  - 共享视频管线新增 MJPEG 解码路径(RKMPP/TurboJPEG),优化 WebRTC 发送与 MJPEG 去重
  - MSD 配置改为 msd_dir 并自动创建子目录,接口与前端设置同步更新
  - 更新包依赖与版本号
This commit is contained in:
mofeng-git
2026-01-11 16:32:37 +08:00
parent 0f52168e75
commit 01e01430da
30 changed files with 1185 additions and 260 deletions

View File

@@ -49,8 +49,10 @@ const systemStore = useSystemStore()
const overflowMenuOpen = ref(false)
// MSD is only available when HID backend is not CH9329 (CH9329 is serial-only, no USB gadget)
const hidBackend = computed(() => (systemStore.hid?.backend ?? '').toLowerCase())
const isCh9329Backend = computed(() => hidBackend.value.includes('ch9329'))
const showMsd = computed(() => {
return props.isAdmin && systemStore.hid?.backend !== 'ch9329'
return props.isAdmin && !isCh9329Backend.value
})
const props = defineProps<{
@@ -310,5 +312,5 @@ const extensionOpen = ref(false)
</div>
<!-- MSD Dialog -->
<MsdDialog v-model:open="msdDialogOpen" />
<MsdDialog v-if="showMsd" v-model:open="msdDialogOpen" />
</template>

View File

@@ -114,6 +114,7 @@ function detectBrowserCodecSupport() {
// Check if a codec is supported by browser
const isBrowserSupported = (codecId: string): boolean => {
if (codecId === 'mjpeg') return true
return browserSupportedCodecs.value.has(codecId)
}
@@ -704,7 +705,7 @@ watch(currentConfig, () => {
v-for="format in availableFormats"
:key="format.format"
:value="format.format"
:class="['text-xs', { 'opacity-50': isFormatNotRecommended(format.format) }]"
class="text-xs"
>
<div class="flex items-center gap-2">
<span>{{ format.description }}</span>