經常使用的流媒體協議主要有 HTTP 漸進下載和基於 RTSP/RTP 的實時流媒體協議,這兩種基本是徹底不一樣的東西,目前比較方便又好用的是用 HTTP 漸進下載方法。在這個中 apple 公司的 HTTP Live Streaming 是這個方面的表明。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設備而開發的流.如今見到在桌面也有不少應用了,HTML5 是直接支持這個。 html
這裏介紹hls協議的點播和直播。環境爲windows7系統,使用nginx搭建http服務器,使用ffmpeg處理視頻和流,使用VLC軟件發出流,使用iphone5手機觀看直播視頻。 nginx
點播:準備好視頻文件MP4,使用ffmpeg將其轉成TS格式文件,而後繼續使用ffmpeg將其切片並生成播放列表M3U8文件,將所得TS分片與M3U8文件放到nginx服務器目錄下,開啓http服務器後,同一局域網內用手機輸入網絡地址可查看點播視頻。
直播:使用VLC軟件將視頻以UDP流的形式發出,使用ffmpeg接收這個UDP流並實時切割到http服務器下,開啓服務器後,同一局域網內用手機輸入網絡地址可查看直播視頻。 windows
官網下載windows版Nginx
打開配置文件nginx\conf\mime.types,爲了支持hls協議,須要修改內容: 瀏覽器
在 application/zip zip; 這一行後面增長2行:
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8; 服務器
在 video/x-msvideo avi;行後,增長1行:
video/MP2T ts; 網絡
(1)開啓http服務器:雙擊nginx.exe
(2)使用ffmpeg將mp4格式文件轉成TS格式文件: app
ffmpeg -y -i input.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts iphone
(3)使用ffmpeg將TS文件切成ts分片併產生m3u8文件: ide
ffmpeg -i file.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 output%03d.ts 加密
(4)將所得的ts分片和m3u8文件放到nginx\html 目錄下
(5)手機瀏覽器輸入[ http://192.168.1.110:80/playlist.m3u8 ]便可看到點播視頻
注:192.168.1.110是本機的局域網ip,也即http服務器的ip
(1)開啓http服務器:雙擊nginx.exe
(2)將視頻以udp流的形式從vlc上發出來(具體方法請自查)
(3)使用ffmpeg接收udp流並自動實時切片到http服務器下:
ffmpeg -i udp://127.0.0.1:1234 -c copy -f hls -hls_time 2.0 -hls_list_size 5 -hls_wrap 5 G:\nginx\html\test.m3u8
(4)手機瀏覽器輸入[ http://192.168.1.110:80/playlist.m3u8 ]便可看到直播視頻