【问题标题】:How to serve an MPEG-DASH manifest to Shaka player properly?如何正确向 Shaka 播放器提供 MPEG-DASH 清单?
【发布时间】:2019-08-17 18:31:40
【问题描述】:

我尝试在我的 Go 项目中实现 Shaka Player。这是项目结构:

.
├── client
│   ├── index.html
│   ├── shaka.js
│   └── shaka-player.compiled.js
└── server
    ├── assets
    │   ├── test_dashinit.mp4
    │   └── test_dash.mpd
    ├── Gopkg.lock
    ├── Gopkg.toml
    ├── main.go
    └── vendor

index.html:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Video</title>

    <script src="shaka-player.compiled.js" defer></script>
    <script src="shaka.js" defer></script>
</head>

<body>
    <video id="video-clip" controls></video>
</body>

</html>

我的main.go 文件,我在其中指定index.htmltest_dash.mpd 的路由:

func sendManifest(w http.ResponseWriter, r *http.Request) {
    // Open the file.
    manifest, err := os.Open("server/assets/test_dash.mpd")

    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)

        return
    }

    defer manifest.Close()

    // Get file size.
    stat, err := manifest.Stat()

    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)

        return
    }

    size := strconv.FormatInt(stat.Size(), 10)

    // Set the headers.
    w.Header().Set("Content-Disposition", "attachment; filename=manifest.mpd")
    w.Header().Set("Content-Type", "application/dash+xml")
    w.Header().Set("Content-Length", size)
    // Send the file.
    io.Copy(w, manifest)
}

func main() {
    cwd, _ := os.Getwd()
    fmt.Println(cwd)

    fs := http.FileServer(http.Dir("client"))

    http.Handle("/", fs)
    http.HandleFunc("/manifest", sendManifest)

    http.ListenAndServe(":5000", nil)
}

当我尝试使用player.load() 访问清单时,它只返回404 Not found。但是当我尝试通过相同的链接(127.0.0.1:5000/manifest)在浏览器中访问它时,没关系,我可以下载文件。指南中的链接效果很好。我应该如何从我的 Go 服务器提供视频清单,以便 Shaka 播放器可以正确使用它?

【问题讨论】:

    标签: javascript go mpeg-dash shaka


    【解决方案1】:

    好的,指定方案就足够了: http://127.0.0.1:5000/manifest 而不仅仅是 127.0.0.1:5000/manifest.

    【讨论】:

    • 就我而言,我遇到了 CORS 问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多