41

手把手設定 MediaConvert 轉檔 HLS 搭配 S3 + CloudFront

 5 years ago
source link: https://www.tuicool.com/articles/NjQzAnZ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

AWS Elemental MediaConvert 可以編譯您輸入的影音檔案並轉換產出其他格式的影音檔案。MediaConvert 可以從 S3 取得來源檔或者通過 HTTP 或 HTTPS。整體步驟如下:

  • 建立 S3 Bucket
  • 建立 SSL 憑證,後續 CloudFront 欲使用自訂網址
  • 設定 CloudFront
  • 設定 IAM 權限
  • 上傳 Video 使用 MediaConvert 轉譯

建立 S3 Bucket

S3 Bucket 僅允許 CDN 存取。

3iyuy2v.png!web

建立儲存體

JFvYfay.png!web

輸入名稱

vEBJJfy.png!web

預設值即可。

QRJjYfE.png!web

預設值即可。

zAJfMbI.png!webjABjayi.png!web

上傳圖片測試。

N73ii2f.png!web

選擇圖檔

MjuUfem.png!webJfEzueJ.png!webY7F3emY.png!web

確認上傳

zqYviuJ.png!web

建立 SSL 憑證

由於 CloudFront 我們想使用自己的網址,因此需要建立 SSL 憑證。登入 AWS Console 選擇 Certificate Manager。

YRvUze2.png!web

使用佈建憑證

bENJviU.png!web

為了示範流程,選擇【申請公有憑證】

私有憑證的流程也類似如果您使用的是私有憑證請選擇

B77BBzZ.png!web

輸入網域,我們使用 Wildcard *
nQfUbea.png!web

依照您較方便的方式進行驗證

ziAfeyJ.png!web

檢視設定結果

m2q2UrZ.png!web

取得驗證流程所需的資訊,至您的 DNS 管理介面設定

AveEZzU.png!web

本文網址為 Gandi 託管

n2eeYjy.png!web

稍後片刻,驗證成功

3eiIziA.png!web

設定 CloudFront

由 CloudFront 取得 S3 資源,S3 本身不提供直接存取。

RJBNzmj.png!webFZfMZjY.png!web2AzQN3Y.png!web

選擇您的 Bucket

VVjIvun.png!webuQFf2au.png!web

提供我們要使用的自訂網址

FR3Yfuu.png!webYj2mUf3.png!webzy6ZBzv.png!web

下圖為自動設定 S3 的設定檔

VzYB7ry.png!web

至您的 DNS 設定 CNAME

JJ3Yvqy.png!web

設定 IAM 權限

為了使用 MediaConvert 我們需要先建立角色。

AjaUJjE.png!webqeMJ7ji.png!webANrMFnY.png!webeMNR7za.png!webUjyU3aN.png!webz2eAbur.png!web

使用 MediaConvert

這裡我們練習使用 MediaConvert 將一個 .mp4 轉換成 HLS 串流,您的應用程式可以搭配 AWS SDK 來整合,這裡我們只是要紀錄學習一個使用流程與概念。

第一步我們先回到 S3 上傳一部 mp4

MniaeaU.png!web

流程跟之前上傳圖片一樣。

RB7Rnm3.png!webR3QrAzI.png!webIRJvam7.png!web

完成上傳,接著我們可以切換至 MediaConvert 服務頁面。

ENJRbuA.png!web

選擇【開始使用】

IRreu2U.png!web

選擇檔案來源

f6vIbu6.png!web

選擇 Bucket 和檔案

i2iqaam.png!web

輸入設定,這裡您可以依據您的需求設定 Input Selectors,總共有三種類型。不過 這裡的示範我們維持預設值即可

  1. Video Selector 的部分,指定您需要的欄位值。您不需要自行建立 Video Selector 因為 AWS Elemental MediaConvert 會在建立 Job 的時候自動建立一組。然而服務不會自動偵測影片來源的資訊。您可以在 Video Selector 提供。如果您在這些欄位使用預設值,您還是可以建立一組合法的 Job。

    注意:AWS Elemental MediaConvert 不支援多影音串流格式的影片例如 Quad 4K。每一個輸入只能有一個 Video Selector;因此沒有 Add Video Selector 的按鈕可以點。

  2. Audio Selectors 的部分,在 Audio selector 1 ,設定關於主要音源資源的資訊。您不需要建立 Audio selector 1 因為建立 Job 的時候一樣會自動建立一組。

    注意:

    音頻資源通常包含對話、背景音,配樂等在一個 Track。Tracks 通常由多個聲道 Channels 組成。例如杜比 5.1 每個 Track 有 6 個聲道

    a. 針對 Selector type 選擇識別音頻的方式,通常使用 Track

    b. 替主要的音源設定識別(Track number,PID 或 Language code),主要的音源可能是 Track 1

    對於大部分的情況,每一個 Input Selector 都有一組 Input Track。如果您需要合併多個音軌可以使用 , 分隔列表項目或使用 *

B3A3Ery.png!webVbmuqai.png!webbQJR3mQ.png!web2UBJZfi.png!web

注意:輸出如果要在目錄底下需要以 / 結尾。

z6jUveQ.png!web

Output 如果輸出設定的 Preset 沒有設定的話,那麼至少 Bitrate 一定要設定。

# 使用 ffmpeg 查詢 Bitrate
ffprobe -show_format demo.mp4
AvYZfaq.png!webrEvmyyv.png!web

任務設定必須要設定角色,我們選擇剛剛建立的角色。

YnIr22b.png!web

建立 Job 完成執行轉檔。

QJ7z2eN.png!web6nqI3mI.png!web

至 S3 檢查產出的結果。

qUvQJvr.png!web3m6fyyv.png!web

完成 .m3u8 的轉換之後,我們需要調整 S3 和 CloudFront 的設定,因為我們希望可以直接從 CDN 取得 .m3u8

S3 先設定 CORS。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
    <AllowedHeader>Origin</AllowedHeader>
</CORSRule>
</CORSConfiguration>
n2YBvqI.png!web

注意:CloudFront 一定要允許 Origin
ENf6FjB.png!webBVRFvyb.png!web

資源


Recommend

  • 8
    • feixiaoxing.blog.csdn.net 4 years ago
    • Cache

    随想录(hls加速技术)

    随想录(hls加速技术)

  • 13
    • zhangferry.com 4 years ago
    • Cache

    HLS及M3U8介绍

    HLS及M3U8介绍

  • 14
    • zouchanglin.cn 4 years ago
    • Cache

    流媒体协议之HLS

    流媒体(Streaming media)是指将一连串的多媒体资料压缩后,经过互联网分段发送资料,在互联网上即时传输影音以供观赏的一种技术与过程,此技术使得资料数据包得以像流水一样发送,如果不使用此技术,就必须在使用前下载整个媒体文件。实...

  • 15
    • zouchanglin.cn 4 years ago
    • Cache

    HLS流媒体服务与加解密

    在前面一篇文章中《流媒体协议之HLS》介绍了什么是流媒体,什么是HLS以及分析了m3u8文件格式内容的含义。在本篇文章中更多的是实际操作,搭建一个流媒体服务,使用ffmpeg切割大的视频文件,使用ffmpeg切割大的视频文件并加密,使用ffmpeg...

  • 32
    • dcordero.me 4 years ago
    • Cache

    HLS Timed Metadata with AVPlayer

    David Cordero HLS Timed Metadata with AVPlayer Published on 01 Feb 2021 As

  • 10

    转换方式一 1.直接把媒体文件转为ts ffmpeg -i cat.mp4 -c copy -bsf h264_mp4toannexb cat.ts 2.使用segment参数进行切片 ffmpeg -i cat.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -...

  • 8
    • blog.p2hp.com 3 years ago
    • Cache

    使用FFMPEG生成HLS

    使用FFMPEG生成HLS | Lenix Blog使用FFmpeg生成HLS HLS也就是HTTP Live...

  • 3

    32 | HLS:实现一对多直播系统的必备协议 | Lenix Blog 在上一篇文章中 ,我们对 RTMP 协议和 HLS 协议的优势与劣势进行了比较。从比较的结果我们可以看出,RTMP 作为传统的直播传输技术在实时性...

  • 6
    • aws.amazon.com 3 years ago
    • Cache

    AWS Elemental MediaConvert

    AWS Elemental MediaConvert

  • 7

    手把手配置Amazon CloudFront 实现全站加速 VPS小白 >

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK