Hannibal Huh? Hannibal the idiot? This was a man who could not stop Rome generating armies and, like Napoleon, lost because he did not understand the political nature of his endeavour.
Idiot's a bit strong.

Hannibal had to conduct an economy of force mission inside Italy. He never had enough forces to secure his local Latin allies against Rome's superior manpower. The Latin cities, chiefly Tarentum and Capua, that he did split off could not survive without Hannibal to protect them.

If Carthage had managed to reinforce Hannibal with enough forces (say, if Hasdrubal had won at Metaurus) to either besiege Rome and force a battle or secure enough Latin allies to create a bulwark in Italy against Rome, he very likely could have forced Rome to a peace.