La conversión falla cuando el usuario no ha iniciado sesión

Tengo un problema cuando me conecto remotamente a mi servidor y luego cierro la conexión, lo que me desconecta. Esto hace que mis conversiones generen un error, algo que antes no ocurría. ¿Puedes ayudarme? Adjunto el registro con un ejemplo.

married.at.first.sight.s09e02.720p.web.h264-tbs.mkv-Move-TV-2019-06-20T22-20-14.5933286-05-00.log (354.9 KB)

Estás usando codificación por hardware y tu controlador gráfico es el problema, está generando un error:

2019-06-20T22:21:59 MCEBuddy.AppWrapper.FFmpeg → [AVHWDeviceContext @ 000001d98ef0a6c0] Failed to create Direct3D device
2019-06-20T22:21:59 MCEBuddy.AppWrapper.FFmpeg → Device creation failed: -1313558101.

Si funcionaba hasta hace poco, parece que tu controlador gráfico se actualizó y ahora necesita que estés conectado al sistema para que funcione.

2019-06-20T22:21:58 MCEBuddy.AppWrapper.FFmpeg → Starting process as a UISession process with Admin privileges. This requires atleast 1 user to be logged into the system (remote desktop or locally)
ERROR> 2019-06-20T22:21:58 → StartAppWithAdminPrivilegesFromNonUISession WTSQueryUserToken failed (No logged on users) with error 1008. An attempt was made to reference a token that does not exist.
WARNING> 2019-06-20T22:21:58 MCEBuddy.AppWrapper.FFmpeg → Unable to create UI Session process with Admin Privileges from NonUI Session. Is any user logged on?
WARNING> 2019-06-20T22:21:58 MCEBuddy.AppWrapper.FFmpeg → Retrying process creation as a NonUI Session process with Admin privileges
WARNING> 2019-06-20T22:21:58 MCEBuddy.AppWrapper.FFmpeg → Some functions like hardware encoding may not work in this mode

No está relacionado con MCEBuddy, sino con un error de Windows relacionado con tu controlador gráfico.

Como estás usando un perfil personalizado y has desactivado explícitamente la alternativa al codificador de software en tu perfil, no intentará usar el codificador de software cuando falle el codificador por hardware:

ffmpeg-UsingHardwareEncoding=True

¿Se actualizó la versión embebida de FFMpeg? Recuerdo haber recibido errores como este cuando experimentaba reemplazando la versión incluida con las compilaciones más recientes. Por cierto, estoy recibiendo el mismo error después de actualizar a 2.4.11. Mis controladores de video no han sido actualizados desde hace algún tiempo…

Registro: Microsoft OneDrive

Veo exactamente el mismo error en tus registros. ¿Hay algún usuario conectado en el equipo?
Sospecho que la API de hardware de ffmpeg es diferente a la de HandBrake y necesita que haya un usuario conectado al sistema para funcionar.
La API de hardware de HandBrake parece funcionar sin usuarios conectados desde Windows 8.1, pero sospecho que esto no es cierto con ffmpeg.

¿Puedes probar con un usuario conectado y ver si funciona?

Funciona correctamente con el usuario conectado

Hay un usuario conectado, pero me conecto de forma remota a esa máquina y, cuando me desconecto, creo que hace que parezca que he cerrado sesión.

Funciona muy bien cuando estoy conectado.

Creo que ya he hecho el trabajo para configurar Handbrake, sin embargo:

[MKV HVEC Beta Profile Constant Quality]
Description=ADVERTENCIA: Codificación de calidad constante (26) con Handbrake usando Nvidia HVEC.
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 9 -c:v hevc_nvenc -cq 26 -rc vbr -map 0:v
ffmpeg-audio=-acodec ac3 -ab 192k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 384k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-general=--decomb --denoise="weak" --loose-anamorphic --verbose=2 -T -O
handbrake-video=--start-at duration:0 --encoder nvenc_h265 --encoder-preset slow --quality 26 --vfr
handbrake-audio=-E ffac3 -R auto -B 192 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 384 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip

¿No está Handbrake ya configurado para NVENC HEVC?

¡Gracias! Will.

¿Qué sistema operativo estás usando? Para Handbrake, sabemos que Windows XP-7 requiere una terminal activa, mientras que en Windows 8-10 funciona incluso sin una terminal activa.

FFMPEG es otra historia, utiliza un conjunto diferente de API’s que desafortunadamente requieren que un usuario esté conectado a Windows con una terminal activa.

No entraré en detalles técnicos, pero es esencialmente un problema de diseño de Windows, ya que el kernel no fue originalmente diseñado para acceder a API’s de hardware. Microsoft ha hecho mejoras para que Handbrake pueda funcionar en modo kernel (MCEBuddy por defecto se ejecuta como un servicio en modo kernel), pero las API’s de FFMPEG aún requieren un usuario conectado con una terminal activa. Así que si estás usando MCEBuddy y ffmpeg, asegúrate de que una terminal esté activa y no se cierre la sesión. Creo que RDP tiene una opción para desconectarse sin cerrar sesión - creo que eso funcionará.

Sí, pero no es tan estable como ffmpeg, así que MCEBuddy no lo usa, pero puedes usarlo. Tus resultados pueden variar. Cuéntanos cómo te funciona.

Estoy ejecutando la versión actual de Windows 10 (1903). Actualmente estoy conectado a la máquina a través de Escritorio remoto y parece estar funcionando bien. Estoy usando un archivo por lotes de post-procesamiento para invocar MCEBuddy desde Plex.

¡Gracias! Will.

[HEVC MP4]
Description=ADVERTENCIA: Codificación de calidad constante (26) con Nvidia HVEC en Handbrake.
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 9 -c:v hevc_nvenc -cq 26 -rc vbr -map 0:v
ffmpeg-audio=-acodec ac3 -ab 192k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 384k -map 0:a
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-general=–decomb --denoise=“weak” --loose-anamorphic --verbose=2 -T -O
handbrake-video=–start-at duration:0 --encoder nvenc_h265 --encoder-preset slow --quality 26 --vfr
handbrake-audio=-E ffac3 -R auto -B 192 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 384 -D 0 -a 1,2,3,4,5
handbrake-ext=.mp4
handbrake-audiodelay=skip

Todavía no funciona cuando no estoy conectado. ¿Alguna sugerencia sobre el perfil que estoy usando arriba para que funcione?

Sigo teniendo fallos a pesar de haber iniciado sesión. Voy a intentar reemplazar FFMpeg por la última versión del sitio.

Aquí están los registros del último fallo: Microsoft OneDrive

Según Windows, no hay ningún usuario conectado; no puede encontrar una referencia al usuario conectado:

StartAppWithAdminPrivilegesFromNonUISession WTSQueryUserToken falló (No hay usuarios conectados) con error 1008. Se intentó hacer referencia a un token que no existe.

Puedes intentar esto para asegurarte de que haya un usuario conectado. Inicia MCEBuddy como motor de línea de comandos desde el Menú Inicio. Esto apagará el motor que se ejecuta como servicio y, en su lugar, lo iniciará como servicio de línea de comandos dentro del usuario. Si el usuario cierra sesión, el servicio se detendrá.
Ahora, como usuario conectado, ffmpeg debería tener acceso a todas las API de hardware. Esto confirmará lo que está ocurriendo.

Ten en cuenta que hay informes de que si te conectas mediante RDP a Windows, no se proporciona acceso a todas las API de hardware. Es mejor conectarse localmente y luego conectarse de forma remota al mismo usuario conectado.

Realmente agradezco la ayuda; lo probaré. ¿Sabes si hay una manera de ejecutar el inicio desde la línea de comandos en shell:startup sin desactivar UAC?

¡Gracias de nuevo! Will.

Podrías configurar el Programador de tareas para que inicie el motor de línea de comandos al iniciar sesión con los privilegios más altos.

¡Claro! Siempre me olvido de eso. ¡Gracias!