囲碁で音楽/ビデオストリーミングサーバーを構築する



このチュートリアルでは、Golangを使用してストリーミングAPIを構築することによってあなたをお散歩します.心配しないで、その驚くほど簡単に堅牢なストリーミングサーバーを構築するために、特に我々は、より近代的なプロトコルのいずれかを利用する場合:HLSを.

HLSとは


HTTP Live Streaming is an HTTP-Based adaptive bitrate streaming communications protocol developed by Apple.

https://en.wikipedia.org/wiki/HTTP_Live_Streaming


HLSは、私たちが10秒の増分に分割される多くのより小さなテキストファイルとして大きなメディアファイルを出すのを許します.この方法でそれらを壊すことによって、私たちのユーザーのクライアント側のアプリは、彼らに多くの潜在的な帯域幅を節約し、曲がはるかに速く再生を開始することができます事前に10秒をバッファリングする必要があります.
使用FFmpeg , 我々は簡単に複数のファイルから構成されるHLS形式にMP 3ファイルを変換することができます.これらのファイルの一つはメタデータ(. m 3 u 8 )を含み、最初に提供されます.このメタデータファイルは、それぞれのデータファイルを取得するクライアントと、それぞれのデータファイルに含まれるものを指示します.データファイルには.TS拡張.データファイルは通常オーディオの~ 10秒を含んで、クライアントの要求で一度に提供されます.

メディアのフォーマット


サンプルをダウンロードします.MP 3 :
http://www.hubharp.com/web_sound/BachGavotteShort.mp3
インストールFFmpeg . Macの場合は:
brew install ffmpeg
MP 3ファイルのディレクトリに移動し、実行する
ffmpeg -i BachGavotteShort.mp3 -c:a libmp3lame -b:a 128k -map 0:0 -f segment -segment_time 10 -segment_list outputlist.m3u8 -segment_format mpegts output%03d.ts
これにより3つの新しいファイルが得られます.
output000.ts output001.ts outputlist.m3u8
おめでとう!あなたはハード部分で行われている、あなたは今HTTP上で提供することができます簡単なファイルがあります.最新のクライアントサイドメディアライブラリはHLSファイルの読み方を知っています.

サーバーのビルド


私が上に溶け込んだので、HLSはサーバー側で非常に単純です.我々がする必要があるすべては、経路を提供します.M 3 U 8ファイル、および確認します.tsファイルは同じパスから提供されます.伝統的なファイルサーバアーキテクチャでは、これは単に同じディレクトリにある必要があることを意味します.
プロジェクトを次のフォルダ構造で設定しましょう.

次のコードをメインにコピーします.ゴー
package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    // configure the songs directory name and port
    const songsDir = "songs"
    const port = 8080

    // add a handler for the song files
    http.Handle("/", addHeaders(http.FileServer(http.Dir(songsDir))))
    fmt.Printf("Starting server on %v\n", port)
    log.Printf("Serving %s on HTTP port: %v\n", songsDir, port)

    // serve and log errors
    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%v", port), nil))
}

// addHeaders will act as middleware to give us CORS support
func addHeaders(h http.Handler) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Access-Control-Allow-Origin", "*")
        h.ServeHTTP(w, r)
    }
}
サーバを起動します
go run main.go
あなたのサーバーはライブです!テストは、メディアクライアントを使用して音楽を再生します.無料のオンラインクライアントがここにあります.https://hls-js-latest.netlify.com/demo/
単にあなたの歌のURIをペーストして、聞いてください:
http://localhost:8080/bachgavotteshort/outputlist.m3u8

読書ありがとう!あなたのメディアプロジェクトと幸運!


さえずりのレーンワグナー
進行中のレーン
レーンオンメディア@wagslane
ダウンロードhttps://qvault.io
スターギタリストhttps://github.com/q-vault/qvault
郵便Building a Music/Video Streaming Server in Go – Using HLS 最初に現れたQvault .