欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutterlive的簡(jiǎn)單介紹

告訴我假如給我三天光明的英文版全文吧...拜托

第一天,我要看人,他們的善良、溫厚與友誼使我的生活值得一過(guò)。首先,我希望長(zhǎng)久地凝視我親愛(ài)的老師,安妮·莎莉文·梅西太太的面龐,當(dāng)我還是個(gè)孩子的時(shí)候,她就來(lái)到了我面前,為我打開(kāi)了外面的世界。我將不僅要看到她面龐的輪廓,以便我能夠?qū)⑺洳卦?/p>

創(chuàng)新互聯(lián)公司專(zhuān)注于清豐網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供清豐營(yíng)銷(xiāo)型網(wǎng)站建設(shè),清豐網(wǎng)站制作、清豐網(wǎng)頁(yè)設(shè)計(jì)、清豐網(wǎng)站官網(wǎng)定制、成都小程序開(kāi)發(fā)服務(wù),打造清豐網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供清豐網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

我的記憶中,而且還要研究她的容貌,發(fā)現(xiàn)她出自同情心的溫柔和耐心的生動(dòng)跡象,她正是以此來(lái)完成教育我的艱巨任務(wù)的。我希望從她的眼睛里看到能使她在困難面前站得穩(wěn)的堅(jiān)強(qiáng)性格,并且看到她那經(jīng)常向我流露的、對(duì)于全人類(lèi)的同情。

我不知道什么是透過(guò)“靈魂之窗”,即從眼睛看到朋友的內(nèi)心。我只能用手指尖來(lái)“看”一個(gè)臉的輪廓。我能夠發(fā)覺(jué)歡笑、悲哀和其他許多明顯的情感。我是從感覺(jué)朋友的臉來(lái)認(rèn)識(shí)他們的。但是,我不能靠觸摸來(lái)真正描繪他們的個(gè)性。當(dāng)然,通過(guò)其他方法,通過(guò)他們向我表達(dá)的思想,通過(guò)他們向我顯示出的任何動(dòng)作,我對(duì)他們的個(gè)性也有所了解。但是我卻不能對(duì)他們有較深的理解,而那種理解,我相信,通過(guò)看見(jiàn)他們,通過(guò)觀看他們對(duì)種種被表達(dá)的思想和境況的反應(yīng),通過(guò)注意他們的眼神和臉色的反應(yīng),是可以獲得的。

我身旁的朋友,我了解得很清楚,因?yàn)榻?jīng)過(guò)長(zhǎng)年累月,他們已經(jīng)將自己的各個(gè)方面揭示給了我;然而,對(duì)于偶然的朋友,我只有一個(gè)不完全的印象。這個(gè)印象還是從一次握手中,從我通過(guò)手指尖理解他們的嘴唇發(fā)出的字句中,或從他們?cè)谖沂终频妮p輕劃寫(xiě)中獲得來(lái)的。

你們有視覺(jué)的人,可以通過(guò)觀察對(duì)方微妙的面部表情,肌肉的顫動(dòng),手勢(shì)的搖擺,迅速領(lǐng)悟?qū)Ψ剿磉_(dá)的意思的實(shí)質(zhì),這該是多么容易,多么令人心滿意足啊!但是,你們可曾想到用你們的視覺(jué),抓住一個(gè)人面部的外表特征,來(lái)透視一個(gè)朋友或者熟人的內(nèi)心嗎?

我還想問(wèn)你們:能準(zhǔn)確地描繪出五位好朋友的面容嗎?你們有些人能夠,但是很多人不能夠。有過(guò)一次實(shí)驗(yàn),我詢(xún)問(wèn)那些丈夫們,關(guān)于他們妻子眼睛的顏色,他們常常顯得困窘,供認(rèn)他們不知道。順便說(shuō)一下,妻子們還總是經(jīng)常抱怨丈夫不注意自己的新服裝、新帽子的顏色.以及家內(nèi)擺設(shè)的變化。

有視覺(jué)的人,他們的眼睛不久便習(xí)慣了周?chē)挛锏某R?guī),他們實(shí)際上僅僅注意令人驚奇的和壯觀的事物。然而,即使他們觀看最壯麗的奇觀,眼睛都是懶洋洋的。法庭的記錄每天都透露出“目擊者”看得多么不準(zhǔn)確。某一事件會(huì)被幾個(gè)見(jiàn)證人以幾種不同的方式“看見(jiàn)”。有的人比別人看得更多,但沒(méi)有幾個(gè)人看見(jiàn)他們視線以?xún)?nèi)一切事物。

啊,如果給我三天光明,我會(huì)看見(jiàn)多少東西啊!

第一天,將會(huì)是忙碌的一天。我將把我所有親愛(ài)的朋友都叫來(lái),長(zhǎng)久地望著他們的臉,把他們內(nèi)在美的外部跡像銘刻在我的心中。我也將會(huì)把目光停留在一個(gè)嬰兒的臉上,以便能夠捕捉到在生活沖突所致的個(gè)人意識(shí)尚未建立之前的那種渴望的、天真無(wú)邪的美。

我還將看看我的小狗們忠實(shí)信賴(lài)的眼睛——莊重、寧?kù)o的小司格梯、達(dá)吉,還有健壯而又懂事的大德恩,以及黑爾格,它們的熱情、幼稚而頑皮的友誼,使我獲得了很大的安慰。

在忙碌的第一天,我還將觀察一下我的房間里簡(jiǎn)單的小東西,我要看看我腳下的小地毯的溫暖顏色,墻壁上的畫(huà),將房子變成一個(gè)家的那些親切的小玩意。我的目光將會(huì)崇敬地落在我讀過(guò)的盲文書(shū)籍上,然而那些能看的人們所讀的印刷字體的書(shū)籍,會(huì)使我更加感興趣。在我一生漫長(zhǎng)的黑夜里,我讀過(guò)的和人們讀給我聽(tīng)的那些書(shū),已經(jīng)成為了一座輝煌的巨大燈塔,為我指示出了人生及心靈的最深的航道。

在能看見(jiàn)的第一天下午,我將到森林里進(jìn)行一次遠(yuǎn)足,讓我的眼睛陶醉在自然界的美麗之中,在幾小時(shí)內(nèi),拼命吸取那經(jīng)常展現(xiàn)在正常視力人面前的光輝燦爛的廣闊奇觀。自森林郊游返回的途中,我要走在農(nóng)莊附近的小路上,以便看看在田野耕作的馬(也許我只能看到一臺(tái)拖拉機(jī)),看看緊靠著土地過(guò)活的悠然自得的人們,我將為光艷動(dòng)人的落日奇景而祈禱。

當(dāng)黃昏降臨,我將由于憑借人為的光明看見(jiàn)外物而感到喜悅,當(dāng)大自然宣告黑暗到來(lái)時(shí),人類(lèi)天才地創(chuàng)造了燈光,來(lái)延伸他的視力。在第一個(gè)有視覺(jué)的夜晚,我將睡不著,心中充滿對(duì)于這一天的回憶。

這一天,我將向世界,向過(guò)去和現(xiàn)在的世界匆忙瞥一眼。我想看看人類(lèi)進(jìn)步的奇觀,那變化無(wú)窮的萬(wàn)古千年。這么多的年代,怎么能被壓縮成一天呢?當(dāng)然是通過(guò)博物館。

有視覺(jué)的第二天,我要在黎明起身,去看黑夜變?yōu)榘讜兊膭?dòng)人奇跡。我將懷著敬畏之心,仰望壯麗的曙光全景,與此同時(shí),太陽(yáng)喚醒了沉睡的大地。

這一天,我將向世界,向過(guò)去和現(xiàn)在的世界匆忙瞥一眼。我想看看人類(lèi)進(jìn)步的奇觀,那變化無(wú)窮的萬(wàn)古千年。這么多的年代,怎么能被壓縮成一天呢?當(dāng)然是通過(guò)博物館。我常常參觀紐約自然史博物館,用手摸一摸那里展出的許多展品,但我曾經(jīng)渴望親眼看看地球的簡(jiǎn)史和陳列在那里的地球上的居民——按照自然環(huán)境描畫(huà)的動(dòng)物和人類(lèi),巨大的恐龍和劍齒象的化石,早在人類(lèi)出現(xiàn)并以他短小的身材和有力的頭腦征服動(dòng)物王國(guó)以前,它們就漫游在地球上了;博物館還逼真地介紹了動(dòng)物、人類(lèi),以及勞動(dòng)工具的發(fā)展經(jīng)過(guò),人類(lèi)使用這些工具,在這個(gè)行星上為自己創(chuàng)造了安全牢固的家;博物館還介紹了自然史的其它無(wú)數(shù)方面。

我不知道,有多少本文的讀者看到過(guò)那個(gè)吸引人的博物館里所描繪的活著的動(dòng)物的形形色色的樣子。當(dāng)然,許多人沒(méi)有這個(gè)機(jī)會(huì),但是,我相信許多有機(jī)會(huì)的人卻沒(méi)有利用它。在那里確實(shí)是使用你眼睛的好地方。有視覺(jué)的你可以在那里度過(guò)許多收益不淺的日子,然而我,借助于想像中的能看見(jiàn)的三天,僅能匆匆一瞥而過(guò)。

我的下一站將是首都藝術(shù)博物館,因?yàn)樗褡匀皇凡┪镳^顯示了世界的物質(zhì)外觀那樣,首都藝術(shù)博物館顯示了人類(lèi)精神的無(wú)數(shù)個(gè)小側(cè)面。在整個(gè)人類(lèi)歷史階段,人類(lèi)對(duì)于藝術(shù)表現(xiàn)的強(qiáng)烈欲望幾乎像對(duì)待食物、藏身處,以及生育繁殖一樣迫切。在這里,在首都藝術(shù)博物館巨大的展覽廳里,埃及、希臘、羅馬的精神在它們的藝術(shù)中表現(xiàn)出來(lái),展現(xiàn)在我面前。

我通過(guò)手清楚地知道了古代尼羅河國(guó)度的諸神和女神。我撫摸了巴臺(tái)農(nóng)神廟中的復(fù)制品,感到了雅典沖鋒戰(zhàn)士有韻律的美。阿波羅、維納斯、以及雙翼勝利之神莎莫瑞絲都使我愛(ài)不釋手。荷馬的那副多瘤有須的面容對(duì)我來(lái)說(shuō)是極其珍貴的,因?yàn)樗捕檬裁唇惺鳌N业氖忠酪啦簧岬亓魬倭_馬及后期的逼真的大理石雕刻,我的手撫摸遍了米開(kāi)朗基羅的感人的英勇的摩西石雕像,我感知到羅丹的力量,我敬畏哥特人對(duì)于木刻的虔誠(chéng)。這些能夠觸摸的藝術(shù)品對(duì)我來(lái)講,是極有意義的,然而,與其說(shuō)它們是供人觸摸的,毋寧說(shuō)它們是供人觀賞的,而我只能猜測(cè)那種我看不見(jiàn)的美。我能欣賞希臘花瓶的簡(jiǎn)樸的線條,但它的那些圖案裝飾我卻看不到。

因此,這一天,給我光明的第二天,我將通過(guò)藝術(shù)來(lái)搜尋人類(lèi)的靈魂。我會(huì)看見(jiàn)那些我憑借觸摸所知道的東西。更妙的是,整個(gè)壯麗的繪畫(huà)世界將向我打開(kāi),從富有寧?kù)o的宗教色彩的意大利早期藝術(shù)及至帶有狂想風(fēng)格的現(xiàn)代派藝術(shù)。我將細(xì)心地觀察拉斐爾、達(dá)芬奇、提香、倫勃朗的油畫(huà)。我要飽覽維洛內(nèi)薩的溫暖色彩,研究艾爾·格列科的奧秘,從科羅的繪畫(huà)中重新觀察大自然。啊,你們有眼睛的人們竟能欣賞到歷代藝術(shù)中這么豐富的意味和美!在我對(duì)這個(gè)藝術(shù)神殿的短暫的游覽中,我一點(diǎn)兒也不能評(píng)論展開(kāi)在我面前的那個(gè)偉大的藝術(shù)世界,我將只能得到一個(gè)膚淺的印象。藝術(shù)家們告訴我,為了達(dá)到深刻而真正的藝術(shù)鑒賞,一個(gè)人必須訓(xùn)練眼睛。一個(gè)人必須通過(guò)經(jīng)驗(yàn)學(xué)習(xí)判斷線條、構(gòu)圖、形式和顏色的品質(zhì)優(yōu)劣。假如我有視覺(jué)從事這么使人著迷的研究,該是多么幸福啊!但是,我聽(tīng)說(shuō),對(duì)于你們有眼睛的許多人,藝術(shù)世界仍是個(gè)有待進(jìn)一步探索的世界。

我十分勉強(qiáng)地離開(kāi)了首都藝術(shù)博物館,它裝納著美的鑰匙。但是,看得見(jiàn)的人們往往并不需要到首都藝術(shù)博物館去尋找這把美的鑰匙。同樣的鑰匙還在較小的博物館中甚或在小圖書(shū)館書(shū)架上等待著。但是,在我假想的有視覺(jué)的有限時(shí)間里,我應(yīng)當(dāng)挑選一把鑰匙,能在最短的時(shí)間內(nèi)去開(kāi)啟藏有最大寶藏的地方。

我重見(jiàn)光明的第二晚,我要在劇院或電影院里度過(guò)。即使現(xiàn)在我也常常出席劇場(chǎng)的各種各樣的演出,但是,劇情必須由一位同伴拼寫(xiě)在我手上。然而,我多么想親眼看看哈姆雷特的迷人的風(fēng)采,或者穿著伊麗莎白時(shí)代鮮艷服飾的生氣勃勃的弗爾斯塔夫!我多么想注視哈姆雷特的每一個(gè)優(yōu)雅的動(dòng)作,注視精神飽滿的弗爾斯塔夫的大搖大擺!因?yàn)槲抑荒芸匆粓?chǎng)戲,這就使我感到非常為難,因?yàn)檫€有數(shù)十幕我想要看的戲劇。

你們有視覺(jué),能看到你們喜愛(ài)的任何一幕戲。當(dāng)你們觀看一幕戲劇、一部電影或者任何一個(gè)場(chǎng)面時(shí),我不知道,究竟有多少人對(duì)于使你們享受它的色彩、優(yōu)美和動(dòng)作的視覺(jué)的奇跡有所認(rèn)識(shí),并懷有感激之情呢?由于我生活在一個(gè)限于手觸的范圍里,我不能享受到有節(jié)奏的動(dòng)作美。但我只能模糊地想像一下巴莢洛娃的優(yōu)美,雖然我知道一點(diǎn)律動(dòng)的快感,因?yàn)槲页3D茉谝魳?lè)震動(dòng)地板時(shí)感覺(jué)到它的節(jié)拍。我能充分想像那有韻律的動(dòng)作,一定是世界上最令人悅目的一種景象。我用手指撫摸大理石雕像的線條,就能夠推斷出幾分。如果這種靜態(tài)美都能那么可愛(ài),看到的動(dòng)態(tài)美一定更加令人激動(dòng)。我最珍貴的回憶之一就是,約瑟·杰佛遜讓我在他又說(shuō)又做地表演他所愛(ài)的里卜·萬(wàn)·溫克時(shí)去摸他的臉龐和雙手。

今天,我將在當(dāng)前的日常世界中度過(guò),到為生活奔忙的人們經(jīng)常去的地方去,而哪兒能像紐約一樣找得到人們那么多的活動(dòng)和那么多的狀況呢?所以城市成了我的目的地。

下一天清晨,我將再一次迎接黎明,急于尋找新的喜悅,因?yàn)槲蚁嘈牛瑢?duì)于那些真正看得見(jiàn)的人,每天的黎明一定是一個(gè)永遠(yuǎn)重復(fù)的新的美景。依據(jù)我虛構(gòu)的奇跡的期限,這將是我有視覺(jué)的第三天,也是最后一天。我將沒(méi)有時(shí)間花費(fèi)在遺憾和熱望中,因?yàn)橛刑嗟臇|西

要去看。第一天,我奉獻(xiàn)給了我有生命和無(wú)生命的朋友。第二天,向我顯示了人與自然的歷史。今天,我將在當(dāng)前的日常世界中度過(guò),到為生活奔忙的人們經(jīng)常去的地方去,而哪兒能像紐約一樣找得到人們那么多的活動(dòng)和那么多的狀況呢?所以城市成了我的目的地。

我從我的家,長(zhǎng)島的佛拉斯特小而安靜的郊區(qū)出發(fā)。這里,環(huán)繞著綠色草地、樹(shù)木和鮮花,有著整潔的小房子,到處是婦女兒童快樂(lè)的聲音和活動(dòng),非常幸福,是城里勞動(dòng)人民安謐的憩息地。我驅(qū)車(chē)駛過(guò)跨越伊斯特河上的鋼制帶狀橋梁,對(duì)人腦的力量和獨(dú)創(chuàng)性有了一個(gè)嶄新的印象。忙碌的船只在河中嘎嘎急駛——高速飛駛的小艇,慢悠悠、噴著鼻息的拖船。如果我今后還有看得見(jiàn)的日子,我要用許多時(shí)光來(lái)眺望這河中令人歡快的景像。我向前眺望,我的前面聳立著紐約——一個(gè)仿佛從神話的書(shū)頁(yè)中搬下來(lái)的城市的奇異高樓。多么令人敬畏的建筑啊!這些燦爛的教堂塔尖,這些遼闊的石砌鋼筑的河堤坡岸——真像諸神為他們自己修建的一般。這幅生動(dòng)的畫(huà)面是幾百萬(wàn)人民每天生活的一部分。我不知道,有多少人會(huì)對(duì)它回頭投去一瞥?只怕寥寥無(wú)幾。對(duì)這個(gè)壯麗的景色,他們視而不見(jiàn),因?yàn)檫@一切對(duì)他們是太熟悉了。

我匆匆趕到那些龐大建筑物之一——帝國(guó)大廈的頂端,因?yàn)椴痪靡郧埃以谀抢飸{借我秘書(shū)的眼睛“俯視”過(guò)這座城市,我渴望把我的想像同現(xiàn)實(shí)作一比較。我相信,展現(xiàn)在我面前的全部景色一定不會(huì)令我失望,因?yàn)樗鼘?duì)我將是另一個(gè)世界的景色。此時(shí),我開(kāi)始周游這座城市。首先,我站在繁華的街角,只看看人,試圖憑借對(duì)他們的觀察去了解一下他們的生活。看到他們的笑顏,我感到快樂(lè);看到他們的嚴(yán)肅的決定,我感到驕傲;看到他們的痛苦,我不禁充滿同情。

我沿著第五大街散步。我漫然四顧,眼光并不投向某一特殊目標(biāo),而只看看萬(wàn)花筒般五光十色的景像。我確信,那些活動(dòng)在人群中的婦女的服裝色彩一定是一幅絕不會(huì)令我厭煩的華麗景色。然而如果我有視覺(jué)的話,我也許會(huì)像其他大多數(shù)婦女一樣——對(duì)個(gè)別服裝的時(shí)髦式樣感到興趣,而對(duì)大量的燦爛色彩不怎么注意。而且,我還確信,我將成為一位習(xí)慣難改的櫥窗顧客,因?yàn)椋^賞這些無(wú)數(shù)精美的陳列品一定是一種眼福。

從第五大街起,我作一番環(huán)城游覽——到公園大道去,到貧民窟去,到工廠去,到孩子們玩耍的公園去,我還將參觀外國(guó)人居住區(qū),進(jìn)行一次不出門(mén)的海外旅行。我始終睜大眼睛注視幸福和悲慘的全部景像,以便能夠深入調(diào)查,進(jìn)一步了解人們是怎樣工作和生活的。

我的心充滿了人和物的形象。我的眼睛決不輕易放過(guò)一件小事,它爭(zhēng)取密切關(guān)注它所看到的每一件事物。有些景像令人愉快,使人陶醉;但有些則是極其凄慘,令人傷感。對(duì)于后者,我絕不閉上我的雙眼,因?yàn)樗鼈円彩巧畹囊徊糠帧T谒鼈兠媲伴]上眼睛,就等于關(guān)閉了心房,關(guān)閉了思想。

我有視覺(jué)的第三天即將結(jié)束了。也許有很多重要而嚴(yán)肅的事情,需要我利用這剩下的幾個(gè)小時(shí)去看,去做。但是,我擔(dān)心在最后一個(gè)夜晚,我還會(huì)再次跑到劇院去,看一場(chǎng)熱鬧而有趣的戲劇,好領(lǐng)略一下人類(lèi)心靈中的諧音。

到了午夜,我擺脫盲人苦境的短暫時(shí)刻就要結(jié)束了,永久的黑夜將再次向我迫近。在那短短的三天,我自然不能看到我想要看到的一切。只有在黑暗再次向我襲來(lái)之時(shí),我才感到我丟下了多少東西沒(méi)有見(jiàn)到。然而,我的內(nèi)心充滿了甜蜜的回憶,使我很少有時(shí)間來(lái)懊悔。此后,我摸到每一件物品,我的記憶都將鮮明地反映出那件物品是個(gè)什么樣子。

我的這一番如何度過(guò)重見(jiàn)光明的三天的簡(jiǎn)述,也許與你假設(shè)知道自己即將失明而為自己所做的安排不相一致。可是,我相信,假如你真的面臨那種厄運(yùn),你的目光將會(huì)盡量投向以前從未曾見(jiàn)過(guò)的事物,并將它們儲(chǔ)存在記憶中,為今后漫長(zhǎng)的黑夜所用。你將比以往更好地利用自己的眼睛。你所看到的每一件東西,對(duì)你都是那么珍貴,你的目光將飽覽那出現(xiàn)在你視線之內(nèi)的每一件物品。然后,你將真正看到,一個(gè)美的世界在你面前展開(kāi)。

失明的我可以給那些看得見(jiàn)的人們一個(gè)提示——對(duì)那些能夠充分利用天賦視覺(jué)的人們一個(gè)忠告:善用你的眼睛吧,猶如明天你將遭到失明的災(zāi)難。同樣的方法也可以應(yīng)用于其它感官。聆聽(tīng)樂(lè)曲的妙音,鳥(niǎo)兒的歌唱,管弦樂(lè)隊(duì)的雄渾而鏗鏘有力的曲調(diào)吧,猶如明天你將遭到耳聾的厄運(yùn)。撫摸每一件你想要撫摸的物品吧,猶如明天你的觸覺(jué)將會(huì)衰退。嗅聞所有鮮花的芳香,品嘗每一口佳肴吧,猶如明天你再不能嗅聞品嘗。充分利用每一個(gè)感官,通過(guò)自然給予你的幾種接觸手段,為世界向你顯示的所有愉快而美好的細(xì)節(jié)而自豪吧!不過(guò),在所有感官中,我相信,視覺(jué)一定是最令人賞心悅目的。

20世紀(jì),一個(gè)獨(dú)特的生命個(gè)體以其勇敢的方式震撼了世界,她就是海倫·凱勒——一個(gè)生活在黑暗中卻又給人類(lèi)帶來(lái)光明的女性,一個(gè)度過(guò)了生命的88個(gè)春秋,卻熬過(guò)了87年無(wú)光、無(wú)聲、無(wú)語(yǔ)的孤獨(dú)歲月的弱女子。

然而,正是這么一個(gè)幽閉在盲聾啞世界里的人,竟然畢業(yè)于哈佛大學(xué)德吉利夫?qū)W院,并用生命的全部力量處處奔走,創(chuàng)建了一家家慈善機(jī)構(gòu),為殘疾人造福。她不僅用行動(dòng)證明了

人類(lèi)戰(zhàn)勝生命的勇氣,而且還將自己所經(jīng)歷的痛苦和幸福記錄下來(lái),給后世以勉勵(lì)。

海倫·凱勒一生一共寫(xiě)了14部著作。《我的生活》是她的處女作,作者以真實(shí)、自然的筆觸再現(xiàn)了自己生命之初21年的生活,為世人留下了一首永難遺忘的生命之歌。該書(shū)出版于1902年。美國(guó)著名作家海爾博士評(píng)論說(shuō):“1902年文學(xué)上最重要的兩大貢獻(xiàn)是吉卜林的《吉姆》和海倫·凱勒的《我的生活》。”

整整100年,今天當(dāng)我們重讀這部著作時(shí),依然能發(fā)現(xiàn)其所閃耀的光芒——人類(lèi)的精神遠(yuǎn)遠(yuǎn)超越了時(shí)空的限制。書(shū)中人物所展現(xiàn)出的品質(zhì)、意志、耐力等強(qiáng)烈地震撼著我們,給蒙塵的心靈以洗滌。

四肢健全的人,可能難以體驗(yàn)殘疾的痛苦;正如和平年代的某些人,居然希望有戰(zhàn)爭(zhēng)刺激一樣。殊不知,生命是脆弱的,當(dāng)所有的假設(shè)變成現(xiàn)實(shí)時(shí),一切已為時(shí)太晚,因此,無(wú)論是在什么樣的年代,愛(ài)和勇氣都是我們生存的基礎(chǔ),這也正是我們出版此書(shū)的目的。

《我的生活》在中國(guó)曾經(jīng)出版過(guò)多個(gè)優(yōu)秀的版本,但大多數(shù)都已經(jīng)沒(méi)有再版了,讀者已經(jīng)很難在書(shū)店看到這本書(shū)了。此外,海倫·凱勒許多著作也沒(méi)有翻譯成中文出版,人們對(duì)她的了解僅僅局限于一些簡(jiǎn)單的介紹。在綜合這些問(wèn)題的基礎(chǔ)上,我們重新編譯了這本書(shū),把《我的生活》、《走出黑暗》、《老師》三本書(shū)以及發(fā)表在美國(guó)《大西洋月刊》上的著名散文《假如給我三天光明》進(jìn)行匯編,完整系統(tǒng)地介紹了海倫·凱勒豐富、生動(dòng)、真實(shí)而偉大的一生。許多文字還是第一次與中國(guó)讀者見(jiàn)面。

在編譯過(guò)程中,我們廣泛參考了國(guó)內(nèi)已經(jīng)出版的許多譯本,尤其是從著名翻譯家朱原先生翻譯的《我生活的故事》(中國(guó)盲文出版社,1998年第2版)中獲益匪淺。

《假如給我三天光明》一文也有許多中文譯本,我們選用了劉冬妮翻譯的《假如我有三天看得見(jiàn)》(轉(zhuǎn)自《外國(guó)散文經(jīng)典》),原因在于該譯文優(yōu)美流暢,無(wú)法超越亦無(wú)法割舍。

編譯者水平有限,譯文錯(cuò)誤不當(dāng)之處,請(qǐng)讀者指正。轉(zhuǎn)引譯文,無(wú)法與譯者取得聯(lián)系,尚望諒解,相關(guān)事宜,請(qǐng)與編譯者聯(lián)系。(echolh@sohu.com)

“讀一本好書(shū)就是與一顆偉大的心靈對(duì)話。”我們希望那些激動(dòng)人心,鼓舞人們上進(jìn)的作品能夠永遠(yuǎn)流傳下去。

Three Days to See

[導(dǎo)讀]馬克`吐溫曾說(shuō):“19世紀(jì)有兩個(gè)奇人,一個(gè)是拿破倫,一個(gè)是海倫?凱勒。” 下面幾段摘選自海倫?凱勒(Helen Keller)的自傳《假如給我三天光明》,海倫雖然從小失明,但一個(gè)生活在黑暗中卻是給人類(lèi)帶來(lái)光明的女性。 試想一個(gè)幽閉的盲聾啞世界里的人,竟然畢業(yè)于哈佛大學(xué)德克利夫?qū)W院,撰寫(xiě)了14部著作,并用生命的全部力量處處奔走,籌建慈善機(jī)構(gòu),為殘疾人造福,被美國(guó)《時(shí)代周刊》評(píng)選為20世紀(jì)美國(guó)十大英雄偶像。在經(jīng)歷了種種的艱辛與磨難之后,她開(kāi)始跨越了自己,掙脫出小我的圈子,她的心情逐漸開(kāi)朗,“我要把別人眼睛所看見(jiàn)的光明當(dāng)作我的太陽(yáng),別人的耳朵聽(tīng)見(jiàn)的音樂(lè)當(dāng)作我的樂(lè)曲,別人嘴角的微笑當(dāng)作我的快樂(lè)。”她接受了生命的挑戰(zhàn),她覺(jué)得自己獲得了自由,內(nèi)心深處的自由,她不僅僅是為了自己而活,她希望自己能奉獻(xiàn)的不僅是幾片綠葉,她要給世界整個(gè)春天。我們?yōu)橹袆?dòng)的不僅是文字本身的優(yōu)美與真情,你的眼睛漸漸濕潤(rùn)了,因?yàn)槟愀惺艿降氖莻ゴ蟮男撵`。

Most of us, however, take life for granted. We know that one day we must die, but usually we picture that day as far in the future. When we are in buoyant health, death is all but unimaginable. We seldom think of it. The days stretch out in an endless vista. So we go about our petty tasks, hardly aware of our listless attitude toward life.

I have often thought it would be a blessing if each human being were stricken blind and deaf for a few days at some time during his early adult life. Darkness would make him more appreciative of sight; silence would teach him the joys of sound.

Now and then I have tested my seeing friends to discover what they see. Recently I was visited by a very good friend who had just returned from a long walk in the woods, and I asked her what she had observed.. "Nothing in particular,” she replied. I might have been incredulous had I not been accustomed to such reposes, for long ago I became convinced that the seeing see little.

How was it possible, I asked myself, to walk for an hour through the woods and see nothing worthy of note? I who cannot see find hundreds of things to interest me through mere touch. I feel the delicate symmetry of a leaf. I pass my hands lovingly about the smooth skin of a silver birch, or the rough, shaggy bark of a pine. In the spring I touch the branches of trees hopefully in search of a bud the first sign of awakening Nature after her winter's sleep. I feel the delightful, velvety texture of a flower, and discover its remarkable convolutions; and something of the miracle of Nature is revealed to me. Occasionally, if I am very fortunate, I place my hand gently on a small tree and feel the happy quiver of a bird in full song. I am delighted to have the cool waters of a brook rush through my open finger. To me a lush carpet of pine needles or spongy grass is more welcome than the most luxurious Persian rug. To me the pageant of seasons is a thrilling and unending drama, the action of which streams through my finger tips.

Helen Keller: Three Days to See

[注釋]

take life for granted: 把生命想當(dāng)然

buoyant: 有浮力的, 輕快的

unimaginable: 想不到的, 不可思議的

vista: 展望, 回想

listless:倦怠的, 冷漠的,情緒低落的

incredulous:懷疑的, 不輕信的

accustom:使習(xí)慣于

symmetry:[????????] n. 對(duì)稱(chēng), 勻稱(chēng)

silver birch:白樺樹(shù)

shaggy:表面粗糙的

delightful:令人愉快的, 可喜的

velvety:象天鵝絨的, 柔軟的

remarkable:adj.不平常的, 非凡的, 值得注意的, 顯著的

convolutions:[?????????????] n. 回旋, 盤(pán)旋, 卷繞

brook:小溪

lush: 青蔥的, 豪華的

luxurious: [????????????] adj. 奢侈的, 豪華的

pageant: 壯觀

thrilling: adj.毛骨悚然的, 顫動(dòng)的, 發(fā)抖的,令人振奮的

[參考譯文]

但是,我們大多數(shù)人把生活認(rèn)為是理所當(dāng)然的。我們知道,某一天我們一定會(huì)死,但通常我們把那天想象在遙遠(yuǎn)的將來(lái)。當(dāng)我們心寬體健時(shí),死亡幾乎是不可想象的,我們很少想到它。時(shí)日在無(wú)窮的展望中延展著,于是我們干著瑣碎的事情,幾乎意識(shí)不到我們對(duì)生活的倦怠態(tài)度。

……

我常常想,如果每個(gè)人在他成年的早期有一段時(shí)間致瞎致聾,那會(huì)是一種幸事,黑暗會(huì)使他更珍惜視力,寂靜會(huì)教導(dǎo)他享受聲音。

我不時(shí)地詢(xún)問(wèn)過(guò)我的能看見(jiàn)東西的朋友們,以了解他們看到什么。最近,我的一個(gè)很好的朋友來(lái)看我,她剛從一片森林里散步許久回來(lái),我問(wèn)她看到了什么,她答道:“沒(méi)什么特別的。”如果我不是習(xí)慣了聽(tīng)到這種回答,我都可能不相信,因?yàn)楹芫靡詠?lái)我已確信這個(gè)情況:能看得見(jiàn)的人卻看不到什么。

我獨(dú)自一人,在林子里散步一小時(shí)之久而沒(méi)有看到任何值得注意的東西,那怎么可能呢?我自己,一個(gè)不能看見(jiàn)東西的人,僅僅通過(guò)觸覺(jué),都發(fā)現(xiàn)許許多多令我有興趣的東西。我感觸到一片樹(shù)葉的完美的對(duì)稱(chēng)性。我用手喜愛(ài)地?fù)崦^(guò)一株白樺那光潮的樹(shù)皮,或一棵松樹(shù)的粗糙樹(shù)皮。春天,我摸著樹(shù)干的枝條滿懷希望地搜索著嫩芽,那是嚴(yán)冬的沉睡后,大自然蘇醒的第一個(gè)跡象。我撫摸過(guò)花朵那令人愉快的天鵝絨般的質(zhì)地,感覺(jué)到它那奇妙的卷繞,一些大自然奇跡向我展現(xiàn)了。有時(shí),如果我很幸運(yùn),我把手輕輕地放在一棵小樹(shù)上,還能感受到一只高聲歌唱的小鳥(niǎo)的愉快顫抖,我十分快樂(lè)地讓小溪澗的涼水穿過(guò)我張開(kāi)的手指流淌過(guò)去。對(duì)我來(lái)說(shuō),一片茂密的地毯式的松針葉或松軟而富彈性的草地比最豪華的波斯地毯更受歡迎。對(duì)我來(lái)說(shuō)四季的壯觀而華麗的展示是一部令人激動(dòng)的、無(wú)窮盡的戲劇。這部戲劇的表演,通過(guò)我的手指尖端涌淌出來(lái)。

煙花爆竹的產(chǎn)品種類(lèi)

煙花爆竹產(chǎn)品種類(lèi)有:

根據(jù)結(jié)構(gòu)與組成、燃放運(yùn)動(dòng)軌跡及燃放效果,煙花爆竹產(chǎn)品分為以下9大類(lèi)。

(1)爆竹類(lèi):燃放時(shí)主體爆炸(主體筒體破碎或者爆裂)但不升空,產(chǎn)生爆炸聲音、閃光等效果,以聽(tīng)覺(jué)效果為主的產(chǎn)品。

(2)噴花類(lèi):燃放時(shí)以直向噴射火苗、火花、響聲(響珠)為主的產(chǎn)品。

(3)旋轉(zhuǎn)類(lèi):燃放時(shí)主體自身旋轉(zhuǎn)但不升空的產(chǎn)品。

(4)升空類(lèi):燃放時(shí)主體定向或旋轉(zhuǎn)升空的產(chǎn)品。

(5)吐珠類(lèi):燃放時(shí)從同一筒體內(nèi)有規(guī)律地發(fā)射出(藥粒或藥柱)彩珠、彩花、聲響等效果的產(chǎn)品。

(6)玩具類(lèi):形式多樣、運(yùn)動(dòng)范圍相對(duì)較小的低空產(chǎn)品,燃放時(shí)產(chǎn)生火花、煙霧、爆響等效果,有玩具造型、線香型、摩擦型、煙霧型產(chǎn)品等。

(7)禮花類(lèi):燃放時(shí)彈體、效果件從發(fā)射筒(單筒,含專(zhuān)用發(fā)射筒)發(fā)射到高空或水域后能爆發(fā)出各種光色、花型圖案或其他效果的產(chǎn)品。

(8)架子煙花類(lèi):以懸掛形式固在架子裝置上燃放的產(chǎn)品,燃放時(shí)、以噴射火苗、火花,形成字幕、圖案、瀑布、人物、山水等畫(huà)面。分為瀑布、字幕、圖案等。

(9)組合煙花類(lèi):由兩個(gè)或兩個(gè)以上小禮花、噴花、吐珠同類(lèi)或不同類(lèi)煙花組合而成的產(chǎn)品。

按照藥量及所能構(gòu)成的危險(xiǎn)性大小,煙花爆竹產(chǎn)品分為A、B、C、D四級(jí)。

A級(jí):由專(zhuān)業(yè)燃放人員在特定的室外空曠地點(diǎn)燃放、危險(xiǎn)性很大的產(chǎn)品。

B級(jí):由專(zhuān)業(yè)燃放人員在特定的室外空曠地點(diǎn)燃放、危險(xiǎn)性較大的產(chǎn)品。

C級(jí):適于室外開(kāi)放空間燃放、危險(xiǎn)性較小的產(chǎn)品。

D級(jí):適于近距離燃放、危險(xiǎn)性很小的產(chǎn)品。

按照對(duì)燃放人員要求的不同,煙花爆竹產(chǎn)品分為個(gè)人燃放類(lèi)和專(zhuān)業(yè)燃放類(lèi)。

個(gè)人燃放類(lèi):不需加工安裝,普通消費(fèi)者可以燃放的C級(jí)、D級(jí)產(chǎn)品。

專(zhuān)業(yè)燃放類(lèi):應(yīng)由取得燃放專(zhuān)業(yè)資質(zhì)人員燃放的A級(jí)、B級(jí)產(chǎn)品和需加工安裝的C級(jí)、D級(jí)產(chǎn)品。

求fleshflutter的SPN和J2的同人文 (她的LIVEJOURNAL沒(méi)了T_T)英文的就可以~謝謝~請(qǐng)發(fā)michaelccm@qq.com

同求 不好意思 樓主有其他文嗎 中英文都可以 最好F大和L大的 不好找啊

757290457@qq.com

PS 希望樓主不要生氣

Flutter浪潮下的音視頻研發(fā)探索

文/陳爐軍

整理/LiveVideoStack

大家好,我是阿里巴巴閑魚(yú)事業(yè)部的陳爐軍,本次分享的主題是Flutter浪潮下的音視頻研發(fā)探索,主要內(nèi)容是針對(duì)閑魚(yú)APP在當(dāng)下流行的跨平臺(tái)框架Flutter的大規(guī)模實(shí)踐,介紹其在音視頻領(lǐng)域碰到的一些困難以及解決方案。

分享內(nèi)容主要分為四個(gè)方面,首先會(huì)對(duì)Flutter有一個(gè)簡(jiǎn)單介紹以及選擇Flutter作為跨平臺(tái)框架的原因,其次會(huì)介紹Flutter中與音視頻關(guān)系非常大的外接紋理概念,以及對(duì)它做出的一些優(yōu)化。之后會(huì)對(duì)閑魚(yú)在音視頻實(shí)踐過(guò)程中碰到的一些Flutter問(wèn)題提出了一些解決方案——TPM音視頻框架。最后是閑魚(yú)Flutter多媒體開(kāi)源組件的介紹。

Flutter

Flutter是一個(gè)跨平臺(tái)框架,以往的做法是將音頻、視頻和網(wǎng)絡(luò)這些模塊都下沉到C++層或者ARM層,在其上封裝成一個(gè)音視頻的SDK,供UI層的PC、iOS和Android調(diào)用。

而Flutter做為一個(gè)UI層的跨平臺(tái)框架,顧名思義就是在UI層也實(shí)現(xiàn)了一個(gè)跨平臺(tái)開(kāi)發(fā)。可以預(yù)想的是未Flutter發(fā)展的好的話,會(huì)逐漸變?yōu)橐粋€(gè)從底層到UI層的一個(gè)全鏈路的跨平臺(tái)開(kāi)發(fā),技術(shù)人員分別負(fù)責(zé)SDK和UI層的開(kāi)發(fā)。

在Flutter之前已經(jīng)有很多跨平臺(tái)UI解決方案,那為什么選擇Flutter呢?

我們主要考慮性能和跨平臺(tái)的能力。

以往的跨平臺(tái)方案比如Weex,ReactNative,Cordova等等因?yàn)榧軜?gòu)的原因無(wú)法滿足性能要求,尤其是在音視頻這種性能要求幾乎苛刻的場(chǎng)景。

而諸如Xamarin等,雖然性能可以和原生App一致,但是大部分邏輯還是需要分平臺(tái)實(shí)現(xiàn)。

我們可以看一下,為什么Flutter可以實(shí)現(xiàn)高性能:

原生的native組件渲染以IOS為例,蘋(píng)果的UIKit通過(guò)調(diào)用平臺(tái)自己的繪制框架QuaztCore來(lái)實(shí)現(xiàn)UI的繪制,圖形繪制也是調(diào)用底層的API,比如OpenGL、Metal等。

而Flutter也是和原生API邏輯一致,也是通過(guò)調(diào)用底層的繪制框架層SKIA實(shí)現(xiàn)UI層。這樣相當(dāng)于Flutter他自己實(shí)現(xiàn)了一套UI框架,提供了一種性能超越原生API的跨平臺(tái)可能性。

但是我們說(shuō)一個(gè)框架最終性能怎樣,其實(shí)取決于設(shè)計(jì)者和開(kāi)發(fā)者。至于現(xiàn)在到底是一個(gè)什么狀況:

在閑魚(yú)的實(shí)踐中,我們發(fā)現(xiàn)在正常的開(kāi)發(fā)沒(méi)有特意的去優(yōu)化UI代碼的情況下,在一些低端機(jī)上,F(xiàn)lutter界面的流暢性是比Native界面要好的。

雖然現(xiàn)在閑魚(yú)某些場(chǎng)景下會(huì)有卡頓閃退等情況,但是這是一個(gè)新事物發(fā)展過(guò)程中的必然問(wèn)題,我們相信未來(lái)性能肯定不會(huì)成為限制Flutter發(fā)展的瓶頸的。

在閑魚(yú)實(shí)踐Flutter的過(guò)程中,混合棧和音視頻是其中比較難解決的兩個(gè)問(wèn)題,混合棧是指一個(gè)APP在Flutter過(guò)程中不可能一口氣將所有業(yè)務(wù)全部重寫(xiě)為Flutter,所以這是一個(gè)逐步迭代的過(guò)程,這期間原生native界面與Flutter界面共存的狀態(tài)就稱(chēng)之為混合棧。閑魚(yú)在混合棧上也有一些比較好的輸出,例如FlutterBoost。

外接紋理

在講音視頻之前需要簡(jiǎn)要介紹一下外接紋理的概念,我們將它稱(chēng)之為是Flutter和Frame之間的橋梁。

Flutter渲染一幀屏幕數(shù)據(jù)首先要做的是,GPU發(fā)出的VC信號(hào)在Flutter的UI線程,通過(guò)AOT編譯的機(jī)器碼結(jié)合當(dāng)前Dart Runtime,生成Layer Tree UI樹(shù),Layer Tree上每一個(gè)葉子節(jié)點(diǎn)都代表了當(dāng)前屏幕上所需要渲染的每一個(gè)元素,包含了這些元素渲染所需要的內(nèi)容。將Layer Tree拋給GPU線程,在GPU線程內(nèi)調(diào)用Skia去完成整個(gè)UI的渲染過(guò)程。Layer Tree中有PictureLayer和TextureLayer兩個(gè)比較重要的節(jié)點(diǎn)。PictureLayer主要負(fù)責(zé)屏幕圖片的渲染,F(xiàn)lutter內(nèi)部實(shí)現(xiàn)了一套圖片解碼邏輯,在IO線程將圖片讀取或者從網(wǎng)絡(luò)上拉取之后,通過(guò)解碼能夠在IO線程上加載出紋理,交給GPU線程將圖片渲染到屏幕上。但是由于音視頻場(chǎng)景下系統(tǒng)API太過(guò)繁多,業(yè)務(wù)場(chǎng)景過(guò)于復(fù)雜。Flutter沒(méi)有一套邏輯去實(shí)現(xiàn)跨平臺(tái)的音視頻組件,所以說(shuō)Flutter提出了一種讓第三方開(kāi)發(fā)者來(lái)實(shí)現(xiàn)音視頻組件的方式,而這些音視頻組件的視頻渲染出口,就是TextureLayer。

在整個(gè)Layer Tree渲染的過(guò)程中,TextureLayer的數(shù)據(jù)紋理需要由外部第三方開(kāi)發(fā)者來(lái)指定,可以把視頻數(shù)據(jù)和播放器數(shù)據(jù)送到TextureLayer里,由Flutter將這些數(shù)據(jù)渲染出來(lái)。

TextureLayer渲染過(guò)程:首先判斷Layer是否已經(jīng)初始化,如果沒(méi)有就創(chuàng)建一個(gè)Texture,然后將Texture Attach到一個(gè)SufaceTexture上。

這個(gè)SufaceTexture是音視頻的native代碼可以獲取到的對(duì)象,通過(guò)這個(gè)對(duì)象創(chuàng)建的Suface,我們可以將視頻數(shù)據(jù)、攝像頭數(shù)據(jù)解碼放到Suface中,然后Flutter端通過(guò)監(jiān)聽(tīng)SufaceTexture的數(shù)據(jù)更新就可以順利把剛才創(chuàng)建的數(shù)據(jù)更新到它的紋理中,然后再將紋理交給SKIA渲染到屏幕上。

然而我們?nèi)绻枰肍lutter實(shí)現(xiàn)美顏,濾鏡,人臉貼圖等等功能,就需要將視頻數(shù)據(jù)讀取出來(lái),更新到紋理中,再將GPU紋理經(jīng)過(guò)美顏濾鏡處理后生成一個(gè)處理后的紋理。按Flutter提供的現(xiàn)有能力,必須先將紋理中的數(shù)據(jù)從GPU讀出到CPU中,生成Bitmap后再寫(xiě)入Surface中,這樣在Flutter中才能順利的更新到視頻數(shù)據(jù),這樣做對(duì)系統(tǒng)性能的消耗很大。

通過(guò)對(duì)Flutter渲染過(guò)程分析,我們知道Flutter底層需要渲染的數(shù)據(jù)就是GPU紋理,而我們經(jīng)過(guò)美顏濾鏡處理完成以后的結(jié)果也是GPU紋理,如果可以將它直接交給Flutter渲染,那就可以避免GPU-CPU-GPU這樣的無(wú)用循環(huán)。這樣的方法是可行的,但是需要一個(gè)條件,就是OpenGL上下文共享。

OpenGL

在說(shuō)上下文之前,得提到一個(gè)和上線文息息相關(guān)的概念:線程。

Flutter引擎啟動(dòng)后會(huì)啟動(dòng)四個(gè)線程:

第一個(gè)線程是UI線程,這是Flutter自己定義的UI線程,主要負(fù)責(zé)GPU發(fā)出的VSync信號(hào)時(shí)候用當(dāng)前Dart編譯的機(jī)器碼和當(dāng)前運(yùn)行環(huán)境創(chuàng)建出Layer Tree。

還有就是IO線程和GPU線程。和大部分OpenGL處理解決方案中一樣,F(xiàn)lutter也采取一個(gè)線程責(zé)資源加載,一部分負(fù)責(zé)資源渲染這種思路。

兩個(gè)線程之間紋理共享有兩種方式。一種是EGLImage(IOS是 CVOpenGLESTextureCache)。一種是OpenGL Share Context。Flutter通過(guò)Share Context來(lái)實(shí)現(xiàn)紋理共享,將IO線程的Context和GPU線程的Context進(jìn)行Share,放到同一個(gè)Share Group下面,這樣兩個(gè)線程下資源是互相可見(jiàn)可以共享的。

Platform線程是主線程,F(xiàn)lutter中有一個(gè)很奇怪的設(shè)定,GPU線程和主線程共用一個(gè)Context。并且在主線程也有很多OpenGL 操作。

這樣的設(shè)計(jì)會(huì)給音視頻開(kāi)發(fā)帶來(lái)很多問(wèn)題,后面會(huì)詳細(xì)說(shuō)。

音視頻端美顏處理完成的OpenGL紋理能夠讓Flutter直接使用的條件就是Flutter的上下文需要和平臺(tái)音視頻相關(guān)的OpenGL上下文處在一個(gè)Share Group下面。

由于Flutter主線程的Context就是GPU的Context,所以在音視頻端主線程中有一些OpenGL操作的話,很有可能使Flutter整個(gè)OpenGL被破壞掉。所以需要將所有的OpenGL操作都限制在子線程中。

通過(guò)上述這兩個(gè)條件的處理,我們就可以在沒(méi)有增加GPU消耗的前提下實(shí)現(xiàn)美顏和濾鏡等等功能。

TPM

在經(jīng)過(guò)demo驗(yàn)證之后,我們將這個(gè)方案應(yīng)用到閑魚(yú)音視頻組件中,但改造過(guò)程中發(fā)現(xiàn)了一些問(wèn)題。

上圖是攝像頭采集數(shù)據(jù)轉(zhuǎn)換為紋理的一段代碼,其中有兩個(gè)操作:首先是切進(jìn)程,將后面的OpenGL操作都切到cameraQueue中。然后是設(shè)置一次上下文。然后這種限制條件或者說(shuō)是潛規(guī)則往往在開(kāi)發(fā)過(guò)程中容易被忽略的。而這個(gè)條件一旦忽略后果就是出現(xiàn)一些莫名其妙的詭異問(wèn)題極難排查。因此我們就希望能抽象出一套框架,由框架本身實(shí)現(xiàn)線程的切換、上下文和模塊生命周期等的管理,開(kāi)發(fā)者接入框架以后只需要安心實(shí)現(xiàn)自己的算法,而不需要關(guān)心這些潛規(guī)則還有其他一些重復(fù)的邏輯操作。

在引入Flutter之前閑魚(yú)的音視頻架構(gòu)與大部分音視頻邏輯一樣采用分層架構(gòu):

1:底層是一些獨(dú)立模塊

2:SDK層是對(duì)底層模塊的封裝

3:最上層是UI層。

引入Flutter之后,通過(guò)分析各個(gè)模塊的使用場(chǎng)景,我們可以得出一個(gè)假設(shè)或者說(shuō)是抽象:音視頻應(yīng)用在終端上可以歸納為視頻幀解碼之后視頻數(shù)據(jù)幀在各個(gè)模塊之間流動(dòng)的過(guò)程,基于這種假設(shè)去做Flutter音視頻框架的抽象。

咸魚(yú)Flutter多媒體開(kāi)源組件

整個(gè)Flutter音視頻框架抽象分為管線和數(shù)據(jù)的抽象、模塊的抽象、線程統(tǒng)一管理和上下文同一管理四部分。

管線,其實(shí)就是視頻幀流動(dòng)的管道。數(shù)據(jù),音視頻中涉及到的數(shù)據(jù)包括紋理、Bit Map以及時(shí)間戳等。結(jié)合現(xiàn)有的應(yīng)用場(chǎng)景我們定義了管線流通數(shù)據(jù)以Texture為主數(shù)據(jù),同時(shí)可以選擇性的添加Bit Map等作為輔助數(shù)據(jù)。這樣的數(shù)據(jù)定義方式,避免重復(fù)的創(chuàng)建和銷(xiāo)毀紋理帶來(lái)的性能開(kāi)銷(xiāo)以及多線程訪問(wèn)紋理帶來(lái)的一些問(wèn)題。也滿足一些特殊模塊對(duì)特殊數(shù)據(jù)的需求。同時(shí)也設(shè)計(jì)了紋理池來(lái)管理管線中的紋理數(shù)據(jù)。

模塊:如果把管線和數(shù)據(jù)比喻成血管和血液,那框架音視頻的場(chǎng)景就可以比喻成器官,我們根據(jù)模塊所在管線的位置抽象出采集、處理和輸出三個(gè)基類(lèi)。這三個(gè)基類(lèi)里實(shí)現(xiàn)了剛才說(shuō)的線程切換,上下文切換,格式轉(zhuǎn)換等等共同邏輯,各個(gè)功能模塊通過(guò)集成自這些基類(lèi),可以避免很多重復(fù)勞動(dòng)。

線程:每一個(gè)模塊初始化的時(shí)候,初始化函數(shù)就會(huì)去線程管理的模塊去獲取自己的線程,線程管理模塊可以決定給初始化函數(shù)分配新的線程或者已經(jīng)分配過(guò)其他模塊的線程。

這樣有三個(gè)好處:

一是可以根據(jù)需要去決定一個(gè)線程可以掛載多少模塊,做到線程間的負(fù)載均衡。第二,多線程并發(fā)式能夠保證模塊內(nèi)的OpenGL操作是在當(dāng)前線程內(nèi)而不會(huì)跑到主線程去,徹底避免Flutter的OpenGL 環(huán)境被破壞。第三,多線程并行可以充分利用CPU多核架構(gòu),提升處理速度。

從Flutter端修改Flutter引擎將Context取出后,根據(jù)Context創(chuàng)建上下文的統(tǒng)一管理模塊,每一個(gè)模塊在初始化的時(shí)候會(huì)獲取它的線程,獲取之后會(huì)調(diào)用上下文管理模塊獲取自己的上下文。這樣可以保證每一個(gè)模塊的上下文都是與Flutter的上下文進(jìn)行Share的,每個(gè)模塊之間資源都是共享可見(jiàn)的,F(xiàn)lutter和音視頻native之間也是互相共享可見(jiàn)的。

基于上述框架如果要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的場(chǎng)景,比如畫(huà)面實(shí)時(shí)預(yù)覽和濾鏡處理功能,

1:需要選擇功能模塊,功能模塊包括攝像頭模塊、濾鏡處理模塊和Flutter畫(huà)面渲染模塊,

2:需要配置模塊參數(shù),比如采集分辨率、濾鏡參數(shù)和前后攝像頭設(shè)置等,

3:在創(chuàng)建視頻管線后使用已配置的參數(shù)創(chuàng)建模塊

4:最后管線搭載模塊,開(kāi)啟管線就可以實(shí)現(xiàn)這樣簡(jiǎn)單的功能。

上圖為整個(gè)功能實(shí)現(xiàn)的代碼和結(jié)構(gòu)圖。

結(jié)合上述音視頻框架,閑魚(yú)實(shí)現(xiàn)了Flutter多媒體開(kāi)源組件。

組要包含四個(gè)基本組件分別是:

1:視頻圖像拍攝組件

2:播放器組件

3:視頻圖像編輯組件

4:相冊(cè)選擇組件

現(xiàn)在這些組件正在走內(nèi)部開(kāi)源流程。預(yù)計(jì)9月份,相冊(cè)和播放器會(huì)實(shí)現(xiàn)開(kāi)源。

后續(xù)展望和規(guī)劃

1:實(shí)現(xiàn)開(kāi)頭所說(shuō)的從底層SDK到UI的全鏈路的跨端開(kāi)發(fā)。目前底層框架層和模塊層都是各個(gè)平臺(tái)各自實(shí)現(xiàn),反而是Flutter的UI端進(jìn)行了跨平臺(tái)的統(tǒng)一,所以后續(xù)會(huì)將底層也按照音視頻常用做法把邏輯下沉到C++層,盡可能的實(shí)現(xiàn)全鏈路跨平臺(tái)。

2:第二部分內(nèi)容為開(kāi)源共建,閑魚(yú)開(kāi)源的內(nèi)容不僅包括拍攝、編輯組件,還包括了很多底層模塊,希望有開(kāi)發(fā)者在基于Flutter開(kāi)發(fā)音視頻應(yīng)用時(shí)可以充分利用閑魚(yú)開(kāi)源出的音視頻模塊能力,搭建APP框架,開(kāi)發(fā)者只要去負(fù)責(zé)實(shí)現(xiàn)特殊需求模塊就可以,盡可能的減少重復(fù)勞動(dòng)。

網(wǎng)頁(yè)名稱(chēng):flutterlive的簡(jiǎn)單介紹
鏈接分享:http://chinadenli.net/article41/dsigchd.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司網(wǎng)站收錄定制開(kāi)發(fā)軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站