He said passengers jumped into the cold water after strong waves broke the ferry's bamboo outrigger, causing it to bob wildly.
"They panicked and grabbed anything like water containers that will keep them afloat then jumped off the boat," de los Santos told The Associated Press by telephone.
He said most of the 46 survivors swam to shore in Aparri, about half a mile (kilometer) away, where police and villagers found them shivering close to midnight.
The dead - including a 1-year-old boy and a town councilor - were taken to funeral parlors, where relatives gathered to identify them.
He said no one recognized the dead boy. "There were no relatives. Most probably his parents perished with him."
De los Santos said coast guard and navy vessels joined the search for 34 people still missing, but bad weather was hampering the effort.
Last month, a cargo ship sank in rough seas north of Cagayan, and passing vessels plucked 16 of 20 people from shark-infested waters. Weeks earlier, separate storms capsized two passenger boats in the central Philippines, drowning more than 50 people.
Sea accidents are common in the Philippine archipelago because of tropical storms, badly maintained boats and weak enforcement of safety regulations.
In December 1987, the ferry Dona Paz sank after colliding with a fuel tanker, killing more than 4,341 people in the world's worst peacetime maritime disaster.
The state weather bureau over the weekend warned of an approaching storm from the Pacific with winds of up to 60 miles (95 kilometers) per hour.
Tropical Storm Dolphin could become a typhoon before getting closer to the eastern Philippines in the next few days, according to forecasts.