我夢見
你從記憶深處 打點行李
就剩 行囊背影 面容不清
這蒼老的泥磚瓦房
便開始無休無止地寧靜
蛛絲微塵 細細密密
菜園荒蕪
苦楝樹花開一夏
終,枝葉凋零
鋒利的思想,綿長地切割
There's an end awaits, let's do something memorable before that.
Sunday, November 20, 2011
黃瓜切片: HTTP Live Streaming 原理簡介
一直覺得網絡上的流媒體播放技術是個神秘有趣的東西, 很早就聽過接觸過 mms/rtsp 這類流媒體 protocols, 印象中需要專門的服務器, 專門的客戶端 (包括瀏覽器中的 flash 插件形式).最近因項目機會, 仔細研究了一番 Apple 推出的 HTTP Live Streaming, 總算對這方面的知識有了清晰的認知.
HTTP Live Streaming 是個很有趣的實現, 它本質上就是把一段視頻 "切片" (經蘋果提供的 mediafilesegmenter), 然後提供給瀏覽器一個包含這些視頻 "切片" 信息的 "索引" - 一份 .m3u8 的 playlist, 瀏覽器據此 "一片一片" 地下載這些片段並播放, 於是便有了 "流" 的效果.
打個比方, 把一段視頻想象成一根黃瓜, 它被切成了黃瓜片放在服務器端, 同時有份清單寫著這黃瓜總長度幾許, 被切成幾片, 每片的 "名字" 是什麼. 拿到這清單的瀏覽器, 便可按圖索驥, 一片一片地拿回來喂給人 "吃".
如果這黃瓜是不斷成長的 - 即, 服務器那端給的不是靜態的一段視頻, 而是從攝像機/衛星電視信號之類過來的 "活" 的 (live) 視頻流 - 這時, 同樣的, 只要送進 "切片機" (mediastreamsegmenter) 上的部分, 都會被切片, 更新到播放列表. 瀏覽器根據更新了的播放列表, 繼續取 "黃瓜片", 直到播放列表裡收到 "黃瓜已分發完畢".
HTTP Live Streaming 的創新之處在於:
#2: 視頻播放時, 瀏覽器完全通過 HTTP 從服務器下載視頻片段. 這讓通常只開放 80 端口的企業網內部分發視頻內容不再需要面對防火牆/NAT 穿越之類的痛苦.
HTTP Live Streaming 雖已提交 IETF, 但目前尚未成為業界標准, 各家也自懷鬼胎. Apple 自家的 iOS 以及 OSX 是完美支持的, 由於 iOS 設備的火爆, 像 Adobe/微軟, 都在服務器上加入了 HTTP Live Streaming 的支持 (不過 flash 插件本身不支持, 反正 iOS 上也跑不了 flash, 哈).
經測試, html5 <video> 嵌 .m3u8 HTTP Live Streaming, 只有在 Apple 的平台上能工作, 即 iPhone/iPad/iPod Touch/Mac 上的 Safari 能播放. 換到 Chrome/Firefox/IE, 則徹底瞎火.
因此, 如果你的視頻項目是針對蘋果用戶, HTTP Live Streaming 就是你需要的. 但要支持其他平台/瀏覽器, 你還需要尋找別的方案.
現正研究 YouTube 的 html5 是如何支持所有瀏覽器以 <video> 進行流播放的, 若有進展再更新.
____
相關閱讀:
HTTP Live Streaming 是個很有趣的實現, 它本質上就是把一段視頻 "切片" (經蘋果提供的 mediafilesegmenter), 然後提供給瀏覽器一個包含這些視頻 "切片" 信息的 "索引" - 一份 .m3u8 的 playlist, 瀏覽器據此 "一片一片" 地下載這些片段並播放, 於是便有了 "流" 的效果.
打個比方, 把一段視頻想象成一根黃瓜, 它被切成了黃瓜片放在服務器端, 同時有份清單寫著這黃瓜總長度幾許, 被切成幾片, 每片的 "名字" 是什麼. 拿到這清單的瀏覽器, 便可按圖索驥, 一片一片地拿回來喂給人 "吃".
如果這黃瓜是不斷成長的 - 即, 服務器那端給的不是靜態的一段視頻, 而是從攝像機/衛星電視信號之類過來的 "活" 的 (live) 視頻流 - 這時, 同樣的, 只要送進 "切片機" (mediastreamsegmenter) 上的部分, 都會被切片, 更新到播放列表. 瀏覽器根據更新了的播放列表, 繼續取 "黃瓜片", 直到播放列表裡收到 "黃瓜已分發完畢".
HTTP Live Streaming 的創新之處在於:
- 無需專門的 "流媒體服務器", 可與現有的 CDN 無縫結合
- 走 HTTP 協議, 無需特殊端口, 無需為穿越 NAT 煩惱
#2: 視頻播放時, 瀏覽器完全通過 HTTP 從服務器下載視頻片段. 這讓通常只開放 80 端口的企業網內部分發視頻內容不再需要面對防火牆/NAT 穿越之類的痛苦.
HTTP Live Streaming 雖已提交 IETF, 但目前尚未成為業界標准, 各家也自懷鬼胎. Apple 自家的 iOS 以及 OSX 是完美支持的, 由於 iOS 設備的火爆, 像 Adobe/微軟, 都在服務器上加入了 HTTP Live Streaming 的支持 (不過 flash 插件本身不支持, 反正 iOS 上也跑不了 flash, 哈).
經測試, html5 <video> 嵌 .m3u8 HTTP Live Streaming, 只有在 Apple 的平台上能工作, 即 iPhone/iPad/iPod Touch/Mac 上的 Safari 能播放. 換到 Chrome/Firefox/IE, 則徹底瞎火.
因此, 如果你的視頻項目是針對蘋果用戶, HTTP Live Streaming 就是你需要的. 但要支持其他平台/瀏覽器, 你還需要尋找別的方案.
現正研究 YouTube 的 html5 是如何支持所有瀏覽器以 <video> 進行流播放的, 若有進展再更新.
____
相關閱讀:
- 維基百科: http://en.wikipedia.org/wiki/HTTP_Live_Streaming
- 歷史背景: http://www.appleinsider.com/articles/09/07/08/apple_launches_http_live_streaming_standard_in_iphone_3_0.html
- 官方文檔: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html
- 工具下載 (需開發者賬號): https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20993
Thursday, November 17, 2011
Decimal fun in Python 2.6 & 2.7
In Python 2.6:
Upgraded to Python 2.7:
$ python2.6
Python 2.6.7 (r267:88850, Jul 10 2011, 09:55:27)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = float(1.0)
>>> import decimal
>>> decimal.Decimal(f)
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.6/decimal.py", line 649, in __new__
"First convert the float to a string")
TypeError: Cannot convert float to Decimal. First convert the float to a string
>>>
Upgraded to Python 2.7:
$ python2.7
Python 2.7.2+ (default, Aug 16 2011, 07:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = float(1.0)
>>> import decimal
>>> decimal.Decimal(f)
Decimal('1')
>>>
Saturday, November 05, 2011
推特集 (2011/10)
- P 民的小命在兲朝本就不值幾錢,全世界文明國家流氓友邦都知道;你在國外死幾個,人都明瞭,你的叫囂無非外強中乾、秀外諱中,私底下一番遞好處、買面子,便又朝內朝外,一片和諧了。
- CEO: 首席恶人官; CTO: 首席喝茶官; CFO: 首席发钱官.
- Engineers - day to day life is boring, let's go creating!
- Regex: you need, you learn, you use, you forget (repeat). #Developer
- 囧: "服務器一年才宕三兩次, 所以我不該付你們運維 7x24 的錢."
- Steve Jobs: Think Different; P.R.China: Think Copy. So PRC is copying different #shanzhai Jobs.
- 此生此夜不曾好, 明月明年米國看...
- 一搞民主就會亂? 既得利益者們當然害怕自己會像疙瘩菲/穆巴拉克那樣民主化後被 "亂民" 審判, 所以才努力地讓你和他們同仇敵愾地這般想. 話說, 你是他們的一份子不?
- 工作經驗應是: 原來要寫三千字工作報告, 現在要人寫三千字工作報告 - 多一字兒. “@Fatal1tyV: 转:什么叫做工作经验,就是原来只会写三百字的工作报告现在能写出个三千字来。。。”
- I think "democracy" is bad for shaping up products, it gives u a false sense of safety & excuses like "see, it's group decision" when fail. So u don't let others draw on ur paintings, edit ur articles, do u? Only thru ur OWN crappy failures, u might craft a masterpiece, right? Then why we are usually so eager to get the first product "a big success" via "democracy"/"group decision"?
- 美國人民為啥不上訪? 因為人家沒有 "上" 好不好! 拿著選票的都是大爺姑奶奶, 不好好干活一票子砸過去投你丫下台.
- Design needs dictatorship, it's about expressing individual's idea before the general people can grow the awareness & taste to catch up.
- 微博的 fo 和 unfo 讓你體會到了一人一票/全民公投的快樂了不是?
- 愛國主義是怎麼來的? 你愛廣東嗎? 你愛湖南嗎? 你愛江蘇浙江上海北京嗎? 他們 (此處刪去五百字) 的時候, 你還愛嗎? 連你呆著的村縣市省都不愛, 你愛毛個國?
- 看 Kissenger: On China 小感: 現代化世界在與我朝交流過程中, 基本就是雞同鴨講, 講不通了就打, 打完了再講, 鼻青臉腫的還充胖子掛城牆上威武.
- 我們時常因讀到名人有某些和自己一樣的缺點而暗自竊喜,仿佛自己離他們的偉大又“免費”近了一步;殊不知,他們絕非因這些缺點而成就的,不過是成就後缺點成了他人行書的調料,讓豬頭們咀嚼過、美好完、學習後,離失敗的杯具又近了一步。
- 一幫子謊話張嘴就來的,一如既往地講:守信光荣、失信可耻。
- $ svn ci …; sleep(); - A ticket a night, fall asleep tight. #code
- 老喬已乘黃鶴去, 此地空餘饑和蠢! “@jasonwang178: Stay Hungry, Stay Foolish”
- 看 The Social Network 心得: 宅男得到辣妹的唯一出路就是 - 創業, 寫出改變世界的軟件!
- 這牆頭草, 有種換三個字. “@mranti: RT @NvShao: CCTV今早痛批卡扎菲:一,独断专制。二,垄断国家经济命脉,石油资源分配不均。三,经济改革失败,贫富差距大。四,非法打压民主人士。”
- Don't blame ppl for not working hard, playing games… it's you - not being able to get them excited/motivated by your dream. #attitude
- Why love coding? Coz it puts you in "God Mode".
- 國外人民可以訪問人人網、新浪微博,兲朝人民不能訪問臉書、推特,這直接導致了國外反華勢力可以上偶們家搗亂、偶們愛鍋粉青卻無法去他們家報復的局面。
- 人說:評價某偉人,需"三七分"-- 試問:那年代慘死的人們可否七分活著?那年代破壞的文化今有三成存餘?
- 良心,都在國界外流亡著、精神病院裡鎖著、衙門邊上驅趕著、小村莊裡挨打著、媒體上引導著、崴腳部發言著、連接重置著、史書上焚燒著、黃土堆裡埋葬著……你還期待這社會殘余些什麼道德的底線?
- 九九年,國慶,天津站,見路人圍觀,一人嘴角溢血倒地,眼緊閉,似無意識;問眾可有報警,皆避而不語;遂撥 120,有人誇,問:哪個學校的?答:南開。待警車近,一長者側臉低語:速離!問:何故?長者曰:"他們要知道是你報的,就抓你付醫療費,不讓你跑啦!"自此識冷暖,擇路遁逃。
- 強烈要求海淀區人大代表幫我奪回自行車道權!滿街亂佔亂停的汽車,我納稅,我要自行車道,我要安全騎車權!
- First, you must be able to sense even the most subtle beauties in your surroundings, then reuse/recreate them neatly in your work. #art
- Don't be stubborn to be "dignified/unique", you can only embrace/enjoy world's diversity for being open-minded. #attitude
- If you keep collecting dust from the past, you will look old very fast.
- 看盡帝都長空,心中自然無碼。
- MI6 对付恐怖份子网站:黑进去,把炸弹教程换成蛋糕秘笈;兲朝对付推特/非死不可:连接已重置。威武涅~
- Things around grow complex as we grow, that's why we need to grow the capability of KISS.
- 經驗帶來的能力之一: 概括, 刪繁就簡.
- 微博已把本是一盘散沙的许多耳朵和嘴巴, 神奇地集结到各个富有影响力的名人影星/意见领袖周遭, 它们时刻准备着连听带说, 闪传声音. 现在等的, 是一个时机, 他们能把积压多年的汹涌民意, 那简单的一两句话, 随良知而出 - 百渠千壑已成, 只待开闸泄洪, 摧枯拉朽.
- Fight thru all the ugly bits so to achieve the ultimate elegance. #programming
- 難得今日臨窗遠眺, 平時堪比 rm 薄碼片的帝都天空下, 有 1080p 的景觀, 哪怕此刻烏雲壓頂.
- 老大哥用了七十年啊,還得再熬熬。
- #Siri makes all other "smart phones" look dumb. #iphone4s
- 活在帝都的一大滿足: 至少呼吸的空氣和皇親國戚是差不太多的, 心裡特平衡.
- You don't have to be able to invent everything, but just be able to fit things together like never before.
- Steve Jobs died, you are still who you are.
- 你們, 害怕一首歌, 一句話, 一種聲音, 一點思考, 一篇文章, 一個人. 你們, 締造了怎樣一個, 盛世強國?
- 時間到了,縱有再多的不捨,也得斷然放下,不是嗎?
- Are dreams brain's quantum entanglement state with other "me"s in parallel universes?? #idea #scifi
Subscribe to:
Posts (Atom)