在十九世紀的1900年,一艘豪華的弗吉尼亞號游輪上有個男嬰被遺棄在頭等艙內,好在船上的一個水手丹尼撿到了他,嬰兒的搖籃上寫著TD,丹尼覺得TD一定是意味著“thanksdanny”,于是他收養了這名男嬰,并為其取名1900。
就這樣,小1900在這艘游輪上晃晃悠悠長大,由于丹尼擔心1900沒有出生證明會被別人帶走,于是小1900只能整日躲在底層的船艙里。盡管這樣,他還是很開心,因為有大海作伴,而且船上的人也都很喜歡他。
但好景不長,在1900八歲的時候,丹尼在工作時意外身亡,可憐的小1900又一次成了孤兒。在丹尼的葬禮上,1900第一次聽到了音樂,似乎冥冥中,跳動的音符釋放出神秘力量,吸引著1900從底下船艙不由自主地來到了頭等艙,卻對頭等艙的奢華和熱鬧視而不見,所有的思緒都被音樂給占據。
沒多久,一天夜里音樂廳里傳出一陣悠揚的鋼琴聲,客人們都被這極其美妙的音樂吸引過去,驚訝地發現是一個衣衫破舊臟兮兮的小男孩在彈奏著鋼琴。從未接觸過音樂的1900無師自通,鋼琴就像他多年的舊友,輕而易舉地能彈奏出動人的曲子。
就這樣,1900成了弗吉尼亞號上的鋼琴師。他在這艘游輪上慢慢長大,從未下過船看看外面的世界,其實他對外面的世界并不好奇,音樂才是他全部的熱愛。1900在船上見過不少形形色色的人,而他們恰好成為了他創作的靈感來源,他會看著不同的人,開始想象他們的故事,隨后演奏出各種不同的音樂。
小號手找到了一份在游輪上吹號的工作,由于不適應暴風雨導致輪船的巨大顛簸,他暈船了,。就在這時,小號手結識了1900,1900告訴他如何才能不暈船,于是他把鋼琴下面的鎖扣打開,帶著小號手一邊彈琴,一邊隨著輪船的顛簸在大廳中自在滑行。
他們就這樣在音樂的海洋中和大海一起翩翩起舞,但一不小心浪過了頭,鋼琴撞碎了大廳的玻璃以及船長的房門,他們兩個被船長罰去做苦力,卻是兩個人的友誼開始。
他們一起在頭等艙演奏,1900有時候會在常規的演奏時調皮一下,開始隨性發揮,但伙伴們似乎早已習慣,并默契的配合著他。其實1900最喜歡的舞臺是三等艙,只有在三等艙才會無所顧忌演奏出真正屬于自己的音樂,不需要鮮花和掌聲,全部身心都沉醉在一個個跳動的音符中。
小號手有時候勸1900該去下船看看外面的花花世界,1900表示很多人也這么勸過自己,但依然堅持著不下船,因為外面沒他喜歡的大海聲音。盡管1900一直生活在游輪上,但1900的音樂天才名聲還是通過船上來來往往的人傳到了外面的世界,于是一名聲稱爵士樂發明者的挑戰者小皮來到游輪上要和1900進行一場鋼琴決斗,一決高下。
小皮自信滿滿點燃了一支煙放在鋼琴上,等到彈完了一整首曲子,煙灰也沒有斷。而1900只是漫不經心地彈了一首平安夜作為回應,仿佛對這場斗琴不以為然。小皮開始彈奏了第二首曲子,把1900感動哭了,現場的觀眾也為小皮瘋狂鼓掌,1900則彈了和小皮一樣的曲子以示喜愛,大家都覺得1900是怕了小皮,肯定要輸掉。
到了第三首曲子,小皮演奏得慷慨激昂,觀眾們都覺得贏家非他莫屬。輪到1900演奏時,他先從小號手要來一根沒有點燃的香煙放在鋼琴上,隨后開始瘋狂的彈奏,他的手速驚人,甚至能看到幻影,仿佛他有四只手在彈奏一樣。
狂野的音樂帶來的魔力,令眾人聽呆也看呆了。演奏完畢,1900拿起那根香煙放在琴弦上,琴弦的熱度把香煙給點燃了,1900把煙放在了小皮的嘴里,顯然不需要任何人的裁判,勝負不言而喻。
自此那次比賽后,1900名氣大漲,有唱片公司慕名而來,想為1900錄制唱片。就在他錄制的時候,他透過窗戶看見一個年輕的女孩,一見鐘情,由此衍生出的陌生情緒而創造出一首動人的曲子,但1900不顧唱片公司的阻攔堅決取下母盤,原來他想把這首曲子送給那個女孩。
但在愛情面前的1900是怯懦而驚慌的,他在大雨中追上了姑娘,卻因猶豫不決錯失了上前告白的機會。到了晚上,1900潛入三等艙的床鋪,找到了那個女孩,偷偷的吻了一下就跑掉了。
到了第二天,游輪到達了目的地,女孩要下船了,這次1900追上了她,他提起曾經見過她的小提琴手父親,姑娘似乎對1900也有好感,臨別時,她親吻了他的臉頰,但最終他們還是被擁擠的人群沖散,女孩告訴了1900她的住址,希望他能去找她,但1900傻傻的站在原地,內心的堅持讓他還是沒有下船,只能無奈又不知所措的看著女孩離去,唱片最終也沒有送出去,于是把唱片給掰斷了,隨后又恢復了正常的生活,從他云淡風輕的臉上看不出和往常有何不同。
過了一段時間,1900還是決定要下船,但當他走下那長長的樓梯,看著眼前的高樓大廈,偌大的城市讓他有種茫然的驚慌感,最終還是轉過身返回到船上,從那以后,他再也沒有過下船的念頭。
幾年后,1900的好朋友小號手離開了游輪,也失去了1900的消息。多年輾轉,小號手的生活拮據,不得不賣掉心愛的小號,卻意外在樂器店發現當年那盤被掰斷的母帶唱片,原來母帶已被老板修好。
小號手給同樣熱愛音樂的老板講了1900的故事,而他也在老板這里得知到弗吉尼亞號即將被炸毀的消息,他立刻意識到1900肯定還在船里,于是動身上船尋找1900的下落,但找了很多遍都無果。他非常清楚1900是絕對不會離開那艘船的,最后為了引1900出來,在船上放了那首曲子,果然1900還是出來了。
這些年來1900一直在彈琴,哪怕是戰爭的時候也不曾停止。小號手勸他下船,但1900還是堅決拒絕下船,他知道這艘船馬上就要被炸毀,但寧肯和這艘船一起消失掉,因為對他來說,陸地上的那些未知對他而言是更可怕的。小號手理解了1900,他們擁抱告別。最后,1900和佛吉尼亞號消失在茫茫的大海中。