Creo que el problema está en tu llamada al procedimiento.
Con versiones del conector MySQL que no admiten OUT
parámetros, la solución normal es usar variables de usuario de MySQL para contener los valores devueltos y luego ejecutar una consulta para obtener los valores de esas variables.
Primero, ejecute el procedimiento almacenado y haga que MySQL coloque los valores de los argumentos OUT en variables:
CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);
Tenga en cuenta que esas variables no son parámetros de comando; son variables que se mantienen en la sesión de MySQL. Para obtener los valores de esas variables, inmediatamente después de la llamada al procedimiento, usando la misma conexión MySQL:
SELECT @IDVideo, @YoutubeIDVideo ;
Y procese el conjunto de resultados de esa consulta como lo haría con cualquier otra instrucción SELECT que espera devolver una fila.
Actualizar:
Con versiones más recientes de MySQL Connector que admiten parámetros OUT, creo que debe especificar que esos parámetros son parámetros OUT estableciendo un atributo de miembro:
cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;
Como indiqué anteriormente...
En versiones anteriores de MySQL Connector que no admitían parámetros OUT, la solución era llamar al procedimiento utilizando variables de MySQL como argumentos. Los valores devueltos por la llamada al procedimiento se conservan en la sesión de MySQL. Inmediatamente después de llamar al procedimiento, ejecutaríamos un SELECT para recuperar el contenido de las variables de usuario.