A. 開源代碼是什麼意思
一句話來說,開源指的是那些源代碼或源設計可以被大眾使用、修改發行的軟體或設計體。
大眾最熟悉的開源軟體就是安卓,相信用非蘋果的智能手機用戶,現在每天用的肯定都是安卓,它也是現在影響力最大的開源軟體之一,如果沒有安卓的開源開放,相信今天沒有那麼多手機廠商和移動互聯網的興起。
如果只是從生態的角度來說,蘋果的生態也很開放,現在他們也推出了開源Swift。從這方面來說,其實兩者都是一樣的,只是開源、開放的方式方法不太一樣。
linux 無疑是開源軟體里最最成功的一個,不管是從它目前的生態建設角度,還是從業界評價來看,包括今天雲計算的基礎也都倚賴Linux的貢獻和基石。當然,像OpenStack、Hadoop 、Spark等也非常成功,這些開源項目都屬於底層技術,在支撐今天整個大數據、雲計算的發展。
開源並不意味著免費,開源只是說我們做了一個好東西,把它開放給大家使用,目的是希望大家更多地使用它,並反饋使用過程中的問題或者改進方式,使得整個開源項目進步得更快,能夠更好地共享給更多有需要的人,目前像 Linux、Hadoop、Spark等等,都是這么做的。但很多時候開源背後還是帶有很濃厚的商業背景。
做得比較大的開源項目背後都有商業公司在支撐,如果一個成功的開源項目背後沒有商業公司,這是不健康的,我們需要開源和商業之間的互補對稱來促進整個社區和技術的不斷前進答。
B. 誰有無損音頻壓縮編碼的C語言的源代碼
到底是要哪種格式的呢,開源應該也有
~~~~~~
C. java中的BASE64編碼有已經實現好的開源項目么
多的很 。。。
org.apache.hadoop.hbase.util.Base64
com.sun.jersey.core.util.Base64
org.apache.commons.codec.binary.Base64
com.sun.jersey.core.util.Base64
D. 有沒有書籍講分布式視頻編碼的,且有開源代碼的,或者有沒有代碼可以直接發給我啊,斯坦福的或者Discover的
我有斯坦福的開源代碼,不知道現在回復還有沒有用了
E. 為什麼內核不開源就不能改內核源碼究竟是什麼
不開源就是不開放源代碼,沒有源代碼很難更改(可以通過逆編譯等手段獲得源碼進行更改,只是非常困難)。源碼就是人使用軟體開發語言(例如c語言)寫的程序代碼,但這些代碼都需要進行編譯成二進制的機器編碼,這時他們就是可以運行的程序了。這時它都是用0和1寫的一大堆數字,人根本就沒法讀的懂,也就沒法改了
F. google為什麼要開源webrtc
google開源了WebRTC項目,網址是:http://code.google.com/p/webrtc/。
WebRTC實現了基於網頁的視頻會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。
通過對源碼的粗略分析,WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網路傳輸、顯示等功能,並且還支持跨平台:windows,linux,mac,android。
WebRTC的視頻處理分析(windows平台)
WebRTC的視頻部分,包含採集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網路傳輸與流控(RTP/RTCP)等功能。
視頻採集---video_capture
源代碼在webrtc\moles\video_capture\main目錄下,包含介面和各個平台的源代碼。
在windows平台上,WebRTC採用的是dshow技術,來實現枚舉視頻的設備信息和視頻數據的採集,這意味著可以支持大多數的視頻採集設備;對那些需要單獨驅動程序的視頻採集卡(比如海康高清卡)就無能為力了。
視頻採集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,並可以進行幀大小和幀率控制。
視頻編解碼---video_coding
源代碼在webrtc\moles\video_coding目錄下。
WebRTC採用I420/VP8編解碼技術。VP8是google收購ON2後的開源實現,並且也用在WebM項目中。VP8能以更少的數據提供更高質量的視頻,特別適合視頻會議這樣的需求。
視頻加密--video_engine_encryption
視頻加密是WebRTC的video_engine一部分,相當於視頻應用層面的功能,給點對點的視頻雙方提供了數據上的安全保證,可以防止在Web上視頻數據的泄漏。
視頻加密在發送端和接收端進行加解密視頻數據,密鑰由視頻雙方協商,代價是會影響視頻數據處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。
視頻加密的數據源可能是原始的數據流,也可能是編碼後的數據流。估計是編碼後的數據流,這樣加密代價會小一些,需要進一步研究。
視頻媒體文件--media_file
源代碼在webrtc\moles\media_file目錄下。
該功能是可以用本地文件作為視頻源,有點類似虛擬攝像頭的功能;支持的格式有Avi。
另外,WebRTC還可以錄制音視頻到本地文件,比較實用的功能。
視頻圖像處理--video_processing
源代碼在webrtc\moles\video_processing目錄下。
視頻圖像處理針對每一幀的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。
視頻顯示--video_render
源代碼在webrtc\moles\video_render目錄下。
在windows平台,WebRTC採用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。
網路傳輸與流控
對於網路視頻來講,數據的傳輸與控制是核心價值。WebRTC採用的是成熟的RTP/RTCP技術。
WebRTC的音頻處理分析(windows平台)
WebRTC的音頻部分,包含設備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網路傳輸與流控(RTP/RTCP)等功能。
音頻設備---audio_device
源代碼在webrtc\moles\audio_device\main目錄下,包含介面和各個平台的源代碼。
在windows平台上,WebRTC採用的是Windows Core Audio和Windows Wave技術來管理音頻設備,還提供了一個混音管理器。
利用音頻設備,可以實現聲音輸出,音量控制等功能。
音頻編解碼---audio_coding
源代碼在webrtc\moles\audio_coding目錄下。
WebRTC採用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術。
WebRTC還提供NetEQ功能---抖動緩沖器及丟包補償模塊,能夠提高音質,並把延遲減至最小。
另外一個核心功能是基於語音會議的混音處理。
聲音加密--voice_engine_encryption
和視頻一樣,WebRTC也提供聲音加密功能。
聲音文件
該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。
同樣,WebRTC也可以錄制音頻到本地文件。
聲音處理--audio_processing
源代碼在webrtc\moles\audio_processing目錄下。
聲音處理針對音頻數據進行處理,包括回聲消除(AEC)、AECM、自動增益(AGC)、降噪處理等功能,用來提升聲音質量。
網路傳輸與流控
和視頻一樣,WebRTC採用的是成熟的RTP/RTCP技術。
WebRTC的官網是http://www.webrtc.org/,其中的FAQ解答了很多大家關心的問題。有這么幾點可以關註:
1.license
採用BSD licenses,可以用於商業軟體;即使你修改了源代碼,也不必公開你修改的部分。
2.為什麼WebRTC要免費
音視頻針對目前的互聯網應用,還是至關重要的。google這樣做的目的,無非是吸引大量的開發者在chrome平台上開發音視頻相關應用,和當年微軟windows集成IE是一個道理。
3.下載和編譯
a).下載google的源碼工具depot_tools:
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
並把depot_tools添加到系統的環境變數PATH里;
b).下載git工具:並把git添加到系統的環境變數PATH里;
c).創建webrtc工作目錄,並在該目錄下運行:
gclient config https://webrtc.googlecode.com/svn/trunk
gclient sync --force
sync命令也會產生基於本地環境(Linux:make, OSX: XCode, Windows: Visual Studio)的build文件。
也可以用命令:
gclient runhooks --force
對windows平台,在trunk目錄下,已經有針對Visual Studio的工程文件:
webrtc.sln
好了,打開它,這就可以編譯了。
註:webrtc默認使用了C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses。我的機器上只有v7.0的sdk,於是構造了一個v7.1的目錄,僅包含Samples\multimedia\directshow\baseclasses。
G. 開源如何提升編程技能
開源是很多程序員都會面臨的問題,很多人會相信接觸的開源源技術越多對自己的編程技術提升越快,寫出來的代碼也更好。開源可提高編程技能之間有什麼相關性或因果關系嗎?
閱讀代碼能讓你變得更優秀
我在編程生涯的早期就明白我閱讀的代碼越多,我的代碼就能變得更好。我知道,當我不得不維護其他人的代碼時,簡單和干凈的代碼幾乎總是比花哨或復雜的代碼好—— 即使有注釋。然而另一方面,當我花足夠的時間去理解復雜代碼的時候,我常常能夠學到新的技巧。不論怎麼樣,都能讓我有所提高。
這使得我在那些沒有代碼審查的地方一再爭取。而當沒有足夠的時間來正式執行「代碼審查」的時候,我會自己瀏覽存儲庫和閱讀代碼。當然,那時我還被受限於來自於小團隊的公司資源。
超越語法
在你不得不全力對付任意編程語言的語法時,也就是學習如何充分利用該語言最瑣碎的時刻。一門語言的語法往往是非常靜態的,並且如果你出錯了,你的編譯器會向你控訴。更深層次的課程涉及到什麼語言最適合解決什麼樣的問題(「合適的工具做合適的工作」),以及如何用那種語言編寫代碼以便於使它高效和可維護。
學習新語言有許多方法:課程,教程,導師,書籍以及等等。我通常會結合這些選項來學習一門新的語言。我注意到,當涉及到非語法元素的時候,這些方法常常非常相似。
閱讀來自於其他人的實際部署代碼會讓你收獲更多。不僅僅是常規的結構化學習,你還需要學習模式和實踐方法。語言中所謂「正確」的做事方式並不總是效果最佳的方式。你會經歷邊緣情況,一次性事務以及意想不到的集成。你也會找到這些問題的解決方案,有好有壞,但如果你認真思考的話,那麼這正是出來「推薦做法」的地方。今天的模式就是明天的反面模式。
你可能對有些事情,例如「總是注釋」,「逗號放到最後」,「縮進x個空格」有著自己的想法,當然你是對的。我對提到的這些及編碼的其他方面也有著自己的感受。
有時候當我閱讀其他人的代碼時,如果看到他們做錯了,我會生氣。但是隨著我代碼閱讀量的增加,我開始懂得,總會有一些情形常見於別人的代碼,但我在我自己的代碼中卻未曾遇到過的,並且我的方法沒有必要那樣執拗。我不僅改變了我的一些觀點,而且懂得更加靈活。
開源無處不在
隨著開源運動的發展,可供閱讀和學習的代碼數量也大幅度增長。例如Gitlab,GitHub和到BitBucket這些網站就允許我們獲取全功能的應用程序,不僅可以閱讀代碼,還可以擺弄。很少有我想要學習的東西是不能在開源代碼中獲取的。
我以前學習新的編程語言,會把重點放在諸如目錄結構和命名約定這些簡單的事情上。但是,現在,我會找一些不同的開源項目,然後可以開始拼湊常用的方法。我很少強調以前那些類型的東西了。
可用的代碼是如此之多,但質量卻良莠不齊。當我們想要學習的時候,常常搞不清楚哪個好哪個不好。那就保持閱讀代碼吧,慢慢地你會學會如何區分。閱讀「壞」的代碼可以幫助你理解為什麼它是「壞」的。關鍵是不要害怕嘗試任何你覺得看上去正確的東西,並且當你走錯路的時候能夠承認錯誤,並改正問題,然後繼續前行。
壞的代碼就壞的,是這樣的嗎?
有人會說「壞的代碼比好的代碼要更多更明顯」。sub-reddit致力於壞的代碼。
在這些年裡,我寫了很多好的代碼和壞的代碼。當我看到我以前寫的代碼時,我的第一想法就是我怎麼會寫這樣的垃圾代碼。這實際上意味著我還在學習中。如果我看到我以前的代碼,覺得它看上去非常偉大,那麼說明我並沒有提高。
那麼,我們怎麼才能從壞的代碼中學到東西呢?
你閱讀的壞代碼越多,那麼你就越擅長發現壞的代碼
當你在學習和搜索例子的時候,你會發現和使用大量不能工作的代碼。請記住,僅僅因為它不適合你的情況,並不能說明它就是壞的代碼。學習如何讓它工作能夠使得你變得更優秀。
你怎麼知道它是壞的代碼?
人們喜歡批評。閱讀評論,如果你看到很多「WTF(什麼玩意)」,那麼可能你看到的正是壞的代碼,試著指出為什麼不好的原因。不要只留下「這代碼真爛」這樣的評論。不要裝得你好像懂得壞代碼的所有需求,要知道,總有一個它之所以被這樣寫的正當理由。如果你知道它為什麼是壞代碼的原因,那麼不妨留下一個有建設性的評論。或者??
讓它變成好的代碼
放一個能讓代碼變得更好的pull請求。修正語法,使用更好的方法,添加註釋或修改縮進:這些都是改進代碼的偉大方式。加一個為什麼你推薦改變代碼的解釋。
昆明北大青鳥java培訓專家認認為,當我幫助別人學習的時候能學到更多。如果我認為我理解了一個新的主題,那麼我會找個人來試著向他解釋,這能讓我更深刻地理解和記住它,並且讓我快速發現我是否寫了壞的代碼。
回報
記住開放源代碼在你參與進去的時候效果最佳。代碼更改在大多數項目中都是受歡迎的,但是有很多出力的方法。
測試開源代碼和文件錯誤報告;幫助完成文檔集;寫教程和如何做的例子;參加對話——或者僅僅只是幫助傳播。每一件事都能帶來改變,並且越多的人參與進來越好!
H. MP3,WMA 等音頻格式是什麼意思
mp3
1.便攜MP3播放器的俗稱.
用來播放MP3格式音樂(現在可以兼容wma,wav等格式)的一種攜帶型的播放器.攜帶型MP3播放器最初由韓國人文光洙和黃鼎夏(Moon & Hwang)於1997年發明,並申請了相關專利.
2.MP3作為一種音樂格式
MPEG-1 Audio Layer 3,經常稱為MP3,是當今較流行的一種數字音頻編碼和有損壓縮格式,它設計用來大幅度地降低音頻數據量,而對於大多數用戶來說重放的音質與最初的不壓縮音頻相比沒有明顯的下降。它是在1991年由位於德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發明和標准化的。
MP3是一個數據壓縮格式。它丟棄掉脈沖編碼調制(PCM)音頻數據中對人類聽覺不重要的數據(類似於JPEG是一個有損圖像壓縮),從而達到了小得多的文件大小。
在MP3中使用了許多技術其中包括心理聲學以確定音頻的哪一部分可以丟棄。MP3音頻可以按照不同的位速進行壓縮,提供了在數據大小和聲音質量之間進行權衡的一個范圍。
MP3格式使用了混合的轉換機制將時域信號轉換成頻域信號:
* 32波段多相積分濾波器(PQF)
* 36或者12 tap 改良離散餘弦濾波器(MDCT);每個子波段大小可以在0...1和2...31之間獨立選擇
* 混疊衰減後處理
根據MPEG規范的說法,MPEG-4中的AAC(Advanced audio coding)將是MP3格式的下一代,盡管有許多創造和推廣其他格式的重要努力。然而,由於MP3的空前的流行,任何其他格式的成功在目前來說都是不太可能的。MP3不僅有廣泛的用戶端軟體支持,也有很多的硬體支持比如攜帶型媒體播放器(指MP3播放器)DVD和CD播放器。
WMA
WMA的全稱是Windows Media Audio,它是微軟公司推出的與MP3格式齊名的一種新的音頻格式。由於WMA在壓縮比和音質方面都超過了MP3,更是遠勝於RA(Real Audio),即使在較低的采樣頻率下也能產生較好的音質。
在64kbps的數據速率時,在13000-20000Hz頻率段就能保留了大部分信息。
但64kbps的WMA的低頻表現實在有點令人失望,聽上去比較硬,如同加入了哇聲效果般,感覺非常不好,當然比同比特64K的mp3要好感覺聲音更集中。聽覺上64WMA的表現基本接近128kbps mp3的音質水平,但沒有達到。96K的wma略好於128K的mp3,WMA在高於128以上的各種比特率表現相差不大,高頻和泛音都很豐富,一般人聽不出WMA128Kbps以上的音質和音色的差異,
總體感覺WMA的聲音偏硬,適合流行搖滾,如果是古典或者純人聲的話,感覺有點生硬,在低於128K時,WMA對於MP3擁有絕對優勢!128以上的WMA相比MP3會有薄的感覺
在128kbps及以下碼流的試聽中WMA完全超過了MP3格式,低碼流之王不是浪得虛名的。但是當碼流上升到128kbp以後,WMA的音質卻並沒有如MP3一樣隨著碼流的提高而大大提升。
AVI
它的英文全稱為Audio Video Interleaved,即音頻視頻交錯格式。是將語音和影像同步組合在一起的文件格式。它對視頻文件採用了一種有損壓縮方式,但壓縮比較高,因此盡管面面質量不是太好,但其應用范圍仍然非常廣泛。AVI支持256色和RLE壓縮。AVI信息主要應用在多媒體光碟上,用來保存電視、電影等各種影像信息。 它於1992年被Microsoft公司推出,隨Windows3.1一起被人們所認識和熟知。所謂「音頻視頻交錯」,就是可以將視頻和音頻交織在一起進行同步播放。這種視頻格式的優點是圖像質量好,可以跨多個平台使用,其缺點是體積過於龐大,而且更加糟糕的是壓縮標准不統一,最普遍的現象就是高版本Windows媒體播放器播放不了採用早期編碼編輯的AVI格式視頻,而低版本Windows媒體播放器又播放不了採用最新編碼編輯的AVI格式視頻,所以我們在進行一些AVI格式的視頻播放時常會出現由於視頻編碼問題而造成的視頻不能播放或即使能夠播放,但存在不能調節播放進度和播放時只有聲音沒有圖像等一些莫名其妙的問題,如果用戶在進行AVI格式的視頻播放時遇到了這些問題,可以通過下載相應的解碼器來解決。是目前視頻文件的主流。 這種格式的文件隨處可見,比如一些游戲、教育軟體的片頭,多媒體光碟中,都會有不少的 AVI 。
現在,在WINDOWS 95或98里都能直接播放AVI,而且它自己的格式也有好幾種,最常見的有 Intel Indeo(R)Video R3.2、Microsoft video 等。
AVI 文件包含三部分:文件頭、數據塊和索引塊。其中數據塊包含實際數據流,即圖像和聲音序列數據。這是文件的主體,也是決定文件容量的主要部分。視頻文件的大小等於該文件的數據率乘以該視頻播放的時間長度,索引塊包括數據塊列表和它們在文件中的位置,以提供文件內數據隨機存取能力。文件頭包括文件的通用信息,定義數據格式,所用的壓縮演算法等參數。
rm
Real Networks公司所制定的音頻視頻壓縮規范稱為Real Media,用戶可以使用RealPlayer或RealOne Player對符合RealMedia技術規范的網路音頻/視頻資源進行實況轉播並且RealMedia可以根據不同的網路傳輸速率制定出不同的壓縮比率,從而實現在低速率的網路上進行影像數據實時傳送和播放。這種格式的另一個特點是用戶使用RealPlayer或RealOne Player播放器可以在不下載音頻/視頻內容的條件下實現在線播放。另外,RM作為目前主流網路視頻格式,它還可以通過其Real Server伺服器將其它格式的視頻轉換成RM視頻並由Real Server伺服器負責對外發布和播放。RM和ASF格式可以說各有千秋,通常RM視頻更柔和一些,而ASF視頻則相對清晰一些。
RM格式一開始就定位在視頻流應用方面,也可以說是視頻流技術的始創者。它可以在用56 K Modem撥號上網的條件下實現不間斷的視頻播放,當然,其圖像質量和MPEG2,DIVX等相比有一定差距,畢竟要實現在網上傳輸不間斷的視頻是需要很大帶寬的。
MIDI:
作曲家的最愛
經常玩音樂的人應該常聽到MIDI(Musical InstrumentDigitalInterface)這個詞,MIDI允許數字合成器和其他設備交換數據。MID文件格式由MIDI繼承而來。MID文件並不是一段錄制好的聲音,而是記錄聲音的信息,然後在告訴音效卡如何再現音樂的一組指令。這樣一個MIDI文件每存1分鍾的音樂只用大約5~10KB。今天,MID文件主要用於原始樂器作品,流行歌曲的業余表演,游戲音軌以及電子賀卡等。*.mid文件重放的效果完全依賴音效卡的檔次。*.mid格式的最大用處是在電腦作曲領域。*.mid文件可以用作曲軟體寫出,也可以通過音效卡的MIDI口把外接音序器演奏的樂曲輸入電腦里,製成*.mid文件。
VQF:
末日黃花
雅馬哈公司另一種格式是*.vqf,它的核心是減少數據流量但保持音質的方法來達到更高的壓縮比,可以說技術上也是很先進的,但是由於宣傳不力,這種格式難有用武之地。*.vqf可以用雅馬哈的播放器播放。同時雅馬哈也提供從*.wav文件轉換到*.vqf文件的軟體。
APE
Monkey's Audio 音頻文件,是現在網路上比較流行的音頻文件格式,其最大的特點是無損壓縮,經過APE格式壓縮過的音樂文件,當使用專用軟體解壓縮為W***時,可以達到與原W***文件同樣的音質,類似於ZIP或RAR壓縮。其最大的缺點就是文件體積龐大,一般來說,同樣一張CD或者一首歌,APE格式文件體積是W***的一半,是MP3(128K)的5倍,一張10幾首歌的CD往往需要200-300M
CD
*.cda格式,就是CD音軌。標准CD格式也就是44.1K的采樣頻率,速率88K/秒,16位量化位數,因為CD音軌可以說是近似無損的,因此它的聲音基本上是忠於原聲的,因此如果你如果是一個音響發燒友的話,CD是你的首選。CD光碟可以在CD唱機中播放,也能用電腦里的各種播放軟體來重放。一個CD音頻文件是一個*.cda文件,這只是一個索引信息,並不是真正的包含聲音信息,所以不論CD音樂的長短,在電腦上看到的「*.cda文件」都是44位元組長。不能直接的復制CD格式的*.cda文件到硬碟上播放,需要使用象EAC這樣的抓音軌軟體把CD格式的文件轉換成WAV,這個轉換過程如果光碟驅動器質量過關而且EAC的參數設置得當的話,可以說是基本上無損抓音頻。
OGG
Ogg是一種先進的有損的音頻壓縮技術,正式名稱是Ogg Vorbis,是一種免費的開源音頻格式。OGG編碼格式遠比90年代開發成功的MP3先進,它可以在相對較低的數據速率下實現比MP3更好的音質。此外,Ogg Vorbis支持VBR(可變比特率)和ABR(平均比特率)兩種編碼方式, Ogg還具有比特率縮放功能,可以不用重新編碼便可調節文件的比特率。 OGG格式可以對所有聲道進行編碼,支持多聲道模式,而不像MP3隻能編碼雙聲道。多聲道音樂會帶來更多臨場感,欣賞電影和交響樂時更有優勢,這場革命性的變化是MP3無法支持的。在而且未來人們對音質要求不斷提高, Ogg的優勢將更加明顯。
VQF:末日黃花
雅馬哈公司另一種格式是*.vqf,它的核心是減少數據流量但保持音質的方法來達到更高的壓縮比,可以說技術上也是很先進的,但是由於宣傳不力,這種格式難有用武之地。*.vqf可以用雅馬哈的播放器播放。同時雅馬哈也提供從*.wav文件轉換到*.vqf文件的軟體