At Cannae, Hannibal destroyed Rome’s last army. Taking Rome would have certainly been a long siege, up to ten years. Most of the people in Italy then were Greeks in the South and East and Celts in the North, and they didn’t like Rome at all.
It’s a great debate.
The Celts in the Po Valley had only been conquered a few years before so many of them sided with Hannibal. There were some allies in southern Italy who defected after Cannae (and Syracuse in Sicily did—Archimedes was killed by a Roman soldier during the Roman recapture of the city) but it seems like the great majority of allies remained loyal, particularly the Latin allies who shared the same language with the Romans. If most of the allies had deserted Rome, the Romans might not have been able to raise enough troops. But even after Cannae they did not recall their armies from Spain and they were able to fight a war against Philip V of Macedon.