Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video yang ringkas

Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video yang ringkas

王林
王林asal
2023-08-01 14:29:121457semak imbas

Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video yang ringkas

Pengenalan:
Perkhidmatan penstriman video memainkan peranan penting dalam aplikasi moden. Artikel ini akan memperkenalkan cara menggunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video ringkas. Kami akan menggunakan pakej net/http bahasa Go untuk mengendalikan permintaan HTTP, dan menggabungkannya dengan perpustakaan FFmpeg untuk mengendalikan pengekodan dan penyahkodan strim video.

Langkah 1: Pasang FFmpeg
Sebelum kita mula menulis kod, kita perlu memasang perpustakaan FFmpeg. Fail boleh laku boleh dimuat turun dan dipasang melalui laman web rasmi FFmpeg. Selepas pemasangan selesai, kita perlu menambah FFmpeg pada pembolehubah persekitaran sistem supaya ia boleh dipanggil dalam kod bahasa Go.

Langkah 2: Cipta fungsi bahasa Go
Dalam bahasa Go, kami boleh mencipta pelayan HTTP melalui pakej net/http. Sila rujuk contoh kod di bawah:

package main

import (
    "net/http"
    "os/exec"
)

func videoHandler(w http.ResponseWriter, r *http.Request) {
    cmd := exec.Command("ffmpeg", "-i", "./video.mp4", "-f", "mpegts", "-")
    cmd.Stdout = w
    err := cmd.Run()
    if err != nil {
        http.Error(w, "Internal Server Error", http.StatusInternalServerError)
        return
    }
}

func main() {
    http.HandleFunc("/video", videoHandler)
    http.ListenAndServe(":8080", nil)
}

Dalam kod di atas, kami mula-mula mengimport pakej net/http dan os/exec. Pakej net/http menyediakan kaedah untuk mencipta pelayan HTTP dalam bahasa Go, dan pakej os/exec membenarkan kami menggunakan perpustakaan FFmpeg dalam bahasa Go dengan memanggil arahan luaran.

Kemudian kami mentakrifkan fungsi videoHandler untuk mengendalikan permintaan HTTP untuk laluan /video. Dalam fungsi ini, kami menggunakan pakej exec untuk mencipta arahan bernama cmd Perintah ini akan menukar fail video kepada format mpegts dengan memanggil FFmpeg dan mengeluarkan hasilnya kepada output standard. Akhir sekali, kami mengikat output standard kepada penulis untuk respons HTTP dan menyemak sebarang ralat semasa pemprosesan.

Dalam fungsi utama, kami menggunakan fungsi http.HandleFunc untuk memetakan laluan /video ke fungsi videoHandler, dan memanggil fungsi http.ListenAndServe untuk memulakan pelayan HTTP dan mendengar port 8080.

Langkah 3: Jalankan kod dan uji
Masukkan direktori di mana kod bahasa Go terletak di terminal dan jalankan arahan go run main.go untuk memulakan pelayan HTTP. Jika semuanya berjalan lancar, anda akan melihat output yang serupa dengan yang berikut:

Listening on :8080...

Sekarang, kami boleh mengujinya dengan mengakses laluan http://localhost:8080/video dalam penyemak imbas. Jika fail video wujud dan pustaka FFmpeg dipasang dengan betul pada sistem anda, anda akan dapat menonton strim video.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video yang ringkas. Kami menggunakan pakej net/http untuk mengendalikan permintaan HTTP, dan memanggil perpustakaan FFmpeg melalui pakej os/exec untuk mengendalikan pengekodan dan penyahkodan strim video. Dengan mengkaji artikel ini, anda boleh meneroka lebih lanjut cara untuk melanjutkan dan mengoptimumkan perkhidmatan penstriman video mudah ini untuk memenuhi keperluan aplikasi yang lebih kompleks.

Atas ialah kandungan terperinci Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan perkhidmatan penstriman video yang ringkas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn