Actually, both are natural and acceptable. The two sentences are almost identical in meaning, but not quite. According to some grammarians, (1) shows a slightly greater degree of improbability.
Here's what Betty Azar* says:
"PAST TIME: NEGATIVE
- Why didn't Sam eat?
(d) 100%: Sam wasn't hungry.
(e) 99%: Sam couldn't have been hungry. Sam can't have been hungry.
(f) 95%: Sam must not have been hungry.
In (d): The speaker is sure.
In (e): The speaker believes that it is impossible for Sam to have been hungry.
In (f): The speaker is making a logical conclusion...."
"Could not have," "couldn't have," "cannot have," and "can't have" all have the same meaning here.
*Understanding and Using English Grammar, Third Edition, by Betty Azar. Longman, 2002.