閱讀276 返回首頁    go 群英


RTMP推流上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲

OSS支持使用RTMP協議推送H264編碼的視頻流+AAC編碼的音頻流到OSS。推送到OSS的音視頻數據可以點播播放;在對延遲不敏感的應用場景,也可以做直播用途。

通過RTMP協議上傳音視頻數據目前有以下限製:

  • 隻能使用RTMP推流的方式,不支持拉流。
  • 必須包含視頻流,且視頻流格式為H264。
  • 音頻流是可選的,並且隻支持AAC格式,其他格式的音頻流會被丟棄。
  • 轉儲隻支持HLS協議。
  • 一個LiveChannel同時隻能有一個客戶端向其推流。

下麵會分別介紹如何推送音視頻流到OSS,以及如何點播,直播播放。

向OSS推送音視頻數據

獲得推流地址

使用SDK調用PutLiveChannel接口,創建一個LiveChannel,並獲取對應的推流地址。如果Bucket的權限控製(ACL)為 公共讀寫(public-read-write),那麼可以直接使用得到的推流地址進行推流;否則需要進行簽名操作。

以使用python SDK為例,獲取未簽名以及簽名推流地址的代碼如下:

  1. # 以使用python sdk為例
  2. from oss2 import *
  3. from oss2.models import *
  4. host = "oss-cn-hangzhou.aliyuncs.com" #just for example
  5. accessid = "your-access-id"
  6. accesskey = "your-access-key"
  7. bucket_name = "your-bucket"
  8. channel_name = "test-channel"
  9. auth = Auth(accessid, accesskey)
  10. bucket = Bucket(auth, host, bucket_name)
  11. channel_cfg = LiveChannelInfo(target = LiveChannelInfoTarget())
  12. channel = bucket.create_live_channel(channel_name, channel_cfg)
  13. publish_url = channel.publish_url
  14. signed_publish_url = bucket.sign_rtmp_url("test-channel", "playlist.m3u8", 3600)

獲得的推流地址示例如下:

  1. publish_url = rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/test-channel
  2. signed_publish_url = rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/your-channel?OSSAccessKeyId=LGarWrijh8HjKWg6&playlistName=t.m3u8&Expires=1472201595&Signature=bjKraZTTyzz9%2FpYoomDx4Wgh%2FlM%3D"

使用ffmpeg進行推流

可以使用ffmpeg推送本地的視頻文件到OSS,命令如下:

  1. ffmpeg -i 1.flv -c copy -f flv "rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/test-channel?OSSAccessKeyId=LGarWrijh8HjKWg6&Expires=1472199095&Signature=%2FAvRo7FTss1InBKgwn7Gz%2FUlp9w%3D"

使用OBS進行推流

首先點擊 Settings,在 URL 框中輸入前麵步驟獲取的推流地址,然後點擊 OK 開始推流即可。

如下圖所示,請注意推流地址的拆分方式:
gop

播放推送到OSS的音視頻數據

直播場景

在推流的過程中,可以通過HLS協議播放正在推送的內容,各個平台的播放方法如下:

  • 在Android、iOS等移動平台,直接在瀏覽器輸入LiveChannel對應的播放地址即可。
  • Mac OS可以使用safari瀏覽器進行播放。
  • PC端可以安裝vlc播放器進行播放。

為了直播流暢,可以設置比較小的FragDuration,例如2s;另外,GOP的大小最好固定且與LiveChannel的FragDuration配置一致。OBS的GOP (即 keyframe Interval)設置方法如下:
OBS-publish.png

點播場景

推流的過程中,OSS總是以直播的方式更新m3u8文件。所以對於點播的場景,需要在推流結束後,調用PostVodPlaylist接口來組裝一個點播用的m3u8文件,然後使用該文件地址來播放。

對於點播的場景,可以設置較大的GOP來減少ts文件數,降低碼率。

最後更新:2016-11-23 16:04:18

  上一篇:go 上傳回調__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲
  下一篇:go 簡單下載__下載文件_開發人員指南_對象存儲 OSS-阿裏雲