本片根据同名小说改编,讲述一个男孩的性觉醒过程。17岁黑人男孩兰迪是学校唱诗班的领唱,生长在虔诚信教的南方家庭。因为妹妹失踪,整个家已经四分五裂,兰迪还要应付时常不期而至的同性幻想。他跟学校的戏剧社死党决定上演男男版的“罗密欧与朱丽叶”,同时白人男孩马歇尔也碰巧闯入兰迪的生活,对他展开强势追求。兰迪发现自己越来越难适应从青春期到成人的转变,更重要的是,他开始分不清幻想和现实的边界...。2002年,音乐学院大四的学生孟凡(关智斌 饰)在一次比赛上凭借原创歌曲《对不起,我爱你》一举夺得冠军,自此声名鹊起,还抱得美人归,与出色的女生何盈(何美钿 饰)在一起。
几年后,他仍然无法创作出一首全新的代表作,爱情又迟滞不前。一天在网上看见一个叫“荒村”的地方,里面有一个“荒村客栈”,流传着关于明代一个叫胭脂的女子的故事。据说睡在明代那张床上,半夜会听见胭脂的歌声。孟凡决定前去寻找灵感,同时与何盈分手。
荒村客栈的店主欧阳(薛山 饰)热情欢迎孟凡,在孟凡的要求下住进了胭脂的房间。孟凡开始见到明朝的鬼影,又噩梦连连。何盈来到荒村找孟凡,却被孟凡伤透心。欧阳跟孟凡讲起自己和妻子小枝(张檬 饰)的故事。不过渐渐地,孟凡发现,小枝这个人根本不存在。
故事的最后,我们发现,一切都是因为那一首歌——《对不起,我爱你》。。