多媒體開發(1):播放

從技能的差別而區分出來的領域,都有自己的數據結構與流程。想要精通一個專業領域,意味着需要理解透它的結構與流程(但有很多理解是可以平移的),但是,這不意味着從概念入手就是最好的辦法。

小程覺得,找一個切入點,在某個專業領域完成某個功能,然後在恰當的時候再做系統的概念的理解,這種辦法,纔是一個好的學習辦法。最重要的一點,這是一個有趣的過程。也就是要以問題來驅動學習,如果能做到寓學於教,那就最好了。

多媒體的知識與技能繁多,入門容易而深入較難。小程在這個版塊做一個對應自己水平的分享,希望可以幫到一些剛起步的人。

“媒體”,就是聲音、圖像、文字這些元素,多個元素合在一起就叫“多媒體”,當這些元素以流協議傳輸時就叫“流媒體”。

在數字世界,聽到的,看到的東西,都是多媒體,而提到多媒體,最容易想到的功能就是播放,小程就從“播放”功能入手,先把這個功能實現,儘量少管概念上的事情。

FFmpeg,這個程序集,在多媒體的技能中經常使用到,這裏就使用這個程序集來實現播放功能。

本文介紹如何用FFmpeg來實現播放。

FFmpeg程序集裏面,有一個程序叫ffplay(播放器),它提供了播放的功能。

(1)ffplay的安裝

小程使用的是mac電腦。

安裝ffplay的辦法很簡單:

brew install ffmpeg --with-sdl2 --with-rtmpdump

安裝成功之後,就可以把ffplay運行一下,以命令行的方式來運行:
ffplay的版本信息1
ffplay的版本信息2
因爲小程在系統上安裝了一個ffplay,然後用FFmpeg的源碼又編譯了一個ffplay,所以有兩個不同的版本。

(2)播放

在安裝了ffplay播放器的情況下,播放就是舉手之勞的事。

比如:

ffplay "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8"
ffplay ~/Desktop/1.mp4

ffplay可以播放網絡上的音視頻文件,也可以播放本地的文件。只要有路徑(或url),就可以用ffplay來播放。

那除了本地的資源,還能找到一些有趣的url來播放嗎?感興趣的讀者,可以閱讀下面這部分內容,它介紹了怎麼獲取播放的url。


一般可以在網上搜索,或者把地址抓出來。

比如在pc網頁上進到“酷狗直播”,打開一個直播間,然後用Charles抓包(或其它工具),可以看到這樣的地址:
直播地址

換一個直播間(這個是點播的):
直播地址

再比如,虎牙的一個直播的地址是這樣的:
直播地址

或者,在網上搜索一些可用的地址,比如(會過期的,發稿時可用):

CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8


再看一下用ffplay播放時的效果:

電視臺:
直播體驗1

直播間:
直播體驗2

在用ffplay播放時,有一些快捷鍵可以使用,比如:

q --退出
p/空格 --暫停
w --切換封面、波形與能量圖
f --全屏
s --逐幀顯示
左右方向、上下方向 --向後或向前快進


總結一下,文章介紹FFmpeg中的ffplay的使用,愉快地完成了播放的功能,基本沒有涉及到複雜的概念。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章