Cara Mengunggah Video ke Vimeo dengan API

oleh Vincy. Terakhir diubah pada 2 Maret 2021.

Vimeo adalah platform populer yang menyediakan layanan hosting video. Ini mendukung streaming langsung, hosting video, berbagi, dan layanan terkait.

Musim Covid telah melihat peningkatan permintaan untuk layanan hosting video yang belum pernah terjadi sebelumnya. Vimeo tidak diragukan lagi salah satu penyedia layanan video teratas.

Vimeo menyediakan API dan mendukung berbagai platform untuk mengakses layanannya secara terprogram.

Vimeo memiliki paket berlangganan yang berbeda dan masing-masing memiliki serangkaian fitur yang berbeda. Periksa situs webnya untuk mengetahui apa yang cocok untuk Anda. Paket gratis memiliki dukungan untuk API, sehingga cukup untuk menguji apakah itu sesuai dengan kebutuhan Anda.

Saya telah membuat akun Vimeo dasar yang memungkinkan pengunggahan video. Saya telah membuat contoh aplikasi Vimeo saya dan mengonfigurasi token dan kunci yang dihasilkan untuk contoh ini.

Artikel ini menjelaskan cara mengintegrasikan Vimeo API dan mengunggah file video. Juga, ada baiknya mempelajari cara membaca URL Vimeo untuk video yang diunggah.

Galeri Video Vimeo

Apa yang ada di dalam?

  1. Alasan memilih Vimeo seperti layanan hosting video
  2. Tentang contoh ini
  3. Integrasikan Vimeo API ke dalam aplikasi PHP
  4. Buat UI untuk memilih dan mengunggah video
  5. skrip jQuery AJAX untuk menyiapkan permintaan layanan unggah
  6. Buat layanan untuk menghubungkan Vimeo API dan unggah file video
  7. Unggah video ke contoh keluaran Vimeo

Alasan memilih layanan hosting video Vimeo

Tidak dapat disangkal supremasi YouTube. Tapi, Vimeo punya kebaikannya sendiri.

Vimeo adalah layanan hosting video yang andal. Ada banyak alasan untuk menjadikan Vimeo sebagai pilihan kami untuk memenuhi layanan video kami.

  1. Mereka mengatakan “Kekuatan video di ujung jari Anda”. Dikatakan kesederhanaan menggunakan platform video ini dan itu benar dalam pengalaman saya.
  2. Ini memberikan hasil yang menjanjikan dalam streaming video dan kinerja pemutaran.
  3. Ini memungkinkan pelacakan kinerja video dengan data analitis yang disediakan di video Anda.
  4. Ini memungkinkan pembuatan video berkualitas tinggi, streaming langsung, perekaman, dan lebih banyak layanan.
  5. Hosting video pribadi.

Tentang contoh ini

Contoh ini menangani unggahan file video dalam PHP untuk meng-host file yang diunggah ke Vimeo.

Ini menggunakan API yang disediakan oleh platform Vimeo untuk memanfaatkan layanan hosting video.

Kode ini memiliki PHP Vimeo SDK yang digunakan oleh penangan layanan unggahan untuk meneruskan permintaan. SDK ini menyertakan kode untuk menyiapkan permintaan API dan menangani data respons.

Contoh ini menggunakan jQuery AJAX untuk meminta unggahan file video yang dipicu melalui formulir HTML. Di sisi server, itu mengenai API untuk meng-hosting video. Kemudian membangun respons sukses/kesalahan yang sesuai untuk mengakui pengguna.

Diagram di bawah ini menunjukkan struktur file dari kode contoh ini.

Unggah ke Struktur File Vimeo

Integrasikan Vimeo API ke dalam aplikasi PHP

Mengintegrasikan Vimeo API ke dalam aplikasi memerlukan langkah-langkah berikut.

  1. Buat akun pengembang Vimeo.
  2. Masuk ke Vimeo dan buat aplikasi baru
  3. Minta akses Unggah
  4. Pilih Privat, Publik, Unggah hak istimewa dan buat token akses.
  5. Salin id Klien, rahasia Klien dan token akses dan konfigurasikan ke dalam aplikasi PHP
  6. Unduh perpustakaan Vimeo PHP dari Github https://github.com/vimeo/vimeo.php. Saya menjalankan komposer composer require vimeo/vimeo-api untuk mengatur Vimeo SDK.
  7. Buat instance klien Vimeo untuk mengakses metode API.

Angka tersebut menunjukkan membuat aplikasi tangkapan layar jendela di bawah ini.

Formulir Aplikasi Buat Vimeo

Buat UI untuk memilih dan mengunggah video

Kode ini menunjukkan form HTML untuk menampilkan opsi upload file video kepada pengguna. Formulir ini ada di halaman arahan contoh ini.

Saat mengirimkan formulir ini, ia memanggil skrip AJAX untuk mengirim data yang diunggah ke server.

Desain UI memiliki placeholder untuk menampilkan respons server kepada pengguna.

index.php

<?php
namespace Phppot;

?>
<html>
<title>Uploading Videos to Vimeo</title>
<head>
<link href="https://phppot.com/php/how-to-upload-video-to-vimeo-with-api/./assets/css/phppot-style.css" type="text/css"
	rel="stylesheet" />
<script src="./vendor/jquery/jquery-3.2.1.min.js"></script>
<script src="./assets/js/video.js"></script>
<style>
.loader-icon {
	display: none;
}
</style>
</head>
<body>
	<div class="phppot-container">
		<h1>Uploading Videos to Vimeo</h1>
		<form id="frm-video-upload" class="phppot-form" method="post">
			<div class="phppot-row">
				<input type="file" name="video_file" />
			</div>
			<div class="phppot-row">
				<button id="btnUpload" type="submit">Upload</button>
				<img src="./img/loader.gif" class="loader-icon" id="loader-icon">
			</div>
		</form>
		<div id="phppot-message"></div>
	</div>
</body>
</html>

Skrip JQuery AJAX untuk menyiapkan permintaan layanan unggah

Skrip AJAX ini ada di file aset video.js. Definisi kode AJAX ada di dalam form submit event callback.

Ini melewati bidang formulir dengan membuat instance FormData.

Ia menerima respons JSON yang dikembalikan oleh server. Dalam JSON ini, sebuah properti tipe untuk mengklasifikasikan apakah itu respon sukses atau gagal.

video.js

$(document).ready(function() {
	$("#frm-video-upload").on("submit", function() {
		event.preventDefault();
		$("#phppot-message").removeClass("error");
		$("#phppot-message").removeClass("success");
		$("#phppot-message").text("");
		$("#btnUpload").hide();
		$("#loader-icon").show();
		$.ajax({
			url : "ajax-endpoint/video-upload.php",
			type : "POST",
			dataType : 'json',
			data : new FormData(this),
			contentType : false,
			processData : false,
			success : function(data) {
				if (data.type == "error") {
					$("#btnUpload").show();
					$("#loader-icon").hide();
					$("#phppot-message").addClass("error");
					$("#phppot-message").text(data.error_message);
				} else if (data.type == "success") {
					$("#loader-icon").hide();
					$("#phppot-message").addClass("success");
					$("#phppot-message").text("Video uploaded. " + data.link);
				}
			}
		});
	});
});

Buat layanan untuk menghubungkan Vimeo API dan unggah file video

Kode PHP ini memanggil metode kelas layanan untuk memvalidasi dan mengunggah file video.

Jalur file video ada di array PHP $_FILES tmp_name indeks.

Validasi sisi server jenis file memeriksa apakah file yang diunggah adalah video atau bukan.

Setelah melewati proses validasi, pengunggahan akan dimulai berikutnya.

ajax-endpoint/video-upload.php

<?php
namespace Phppot;

require_once __DIR__ . '/../lib/VideoService.php';

if (! empty($_FILES["video_file"]["tmp_name"])) {
    $videoService = new VideoService($_FILES["video_file"]["tmp_name"]);
    $isValid = $videoService->validateVideo();
    if ($isValid) {
        $response = $videoService->uploadVideo();
    } else {
        $output = array(
            "type" => "error",
            "error_message" => "Invalid file type"
        );
        $response = json_encode($output);
    }
    print $response;
    exit();
}

Ini adalah file konfigurasi aplikasi. Ini mendefinisikan konstanta PHP untuk menyimpan token dan kunci API.

Seperti yang telah kita bahas dalam langkah-langkah integrasi, file ini mengonfigurasi id klien Vimeo, kunci rahasia, dan token akses.

Ini juga menentukan jenis file video yang diizinkan. Skrip validasi file menggunakan definisi ini untuk memeriksa jenis file.

lib/Config.php

<?php
namespace Phppot;

class Config
{

    const CLIENT_ID = '';

    const CLIENT_SECRET = '';

    const ACCESS_TOKEN = '';
    
    const ATTACHMENT_TYPE = array(
        'MP4',
        'MOV',
        'MKV'
    );
}

Kode di bawah ini menunjukkan kelas layanan yang dibuat untuk contoh ini.

Ini mengimpor Vimeo PHP SDK dengan menyertakan file autoload.php yang sesuai.

Ini membuat instance klien Vimeo API di konstruktornya. Referensi objek klien ini untuk mengakses metode API.

Dalam contoh ini, saya menggunakan langganan Basic Vimeo yang memungkinkan opsi unggah.

Setelah mengunggah file video, kami dapat meminta tautan vimeo untuk file yang diunggah.

Catatan: Berlangganan paket Vimeo Pro dan Premium untuk mengakses tautan langsung ke video Anda.

Jika API mengembalikan respons dengan status=200, maka ia akan merespons pesan sukses. Pesan ini akan berisi tautan Vimeo ke video yang diunggah.

lib/VideoService.php

<?php
namespace Phppot;

use PhppotConfig;
require_once __DIR__ . '/../vendor/vimeo-sdk/autoload.php';
use VimeoVimeo;
use VimeoExceptionsVimeoUploadException;

class VideoService
{

    private $videoURL = "";

    private $vimeoClient;

    function __construct($url)
    {
        $this->videoURL = $url;
        require_once __DIR__ . '/Config.php';
        $this->vimeoClient = new Vimeo(Config::CLIENT_ID, Config::CLIENT_SECRET, Config::ACCESS_TOKEN);
    }

    function validateVideo()
    {
        $valid = false;
        if (! empty($this->videoURL)) {
            $file_extension = pathinfo($_FILES["video_file"]["name"], PATHINFO_EXTENSION);
            if ((in_array(strtoupper($file_extension), Config::ATTACHMENT_TYPE))) {
                $valid = true;
            }
        }

        return $valid;
    }

    function uploadVideo()
    {
        $file_name = $this->videoURL;
        try {
            $uri = $this->vimeoClient->upload($file_name, array(
                'name' => 'Video' . time()
            ));

            $video_data = $this->vimeoClient->request($uri);

            if ($video_data['status'] == 200) {
                $output = array(
                    "type" => "success",
                    "link" => $video_data['body']['link']
                );
            }
        } catch (VimeoUploadException $e) {
            $error="Error uploading " . $file_name . "n";
            $error .= 'Server reported: ' . $e->getMessage() . "n";
            $output = array(
                "type" => "error",
                "error_message" => $error
            );
        } catch (VimeoRequestException $e) {
            $error="There was an error making the request." . "n";
            $error .= 'Server reported: ' . $e->getMessage() . "n";
            $output = array(
                "type" => "error",
                "error_message" => $error
            );
        }

        $response = json_encode($output);
        return $response;
    }
}

Unggah video ke contoh keluaran Vimeo

Tangkapan layar berikut menunjukkan tangkapan layar keluaran dari contoh ini.

Ini menampilkan dua jenis tanggapan. Salah satunya adalah respons kesalahan saat mengunggah file .jpg alih-alih video. Yang lainnya adalah pesan sukses dengan tautan Vimeo video yang diunggah.

Kesalahan Unggah Video

Pengunggahan Video Berhasil

Kesimpulan

Kami telah belajar kode dalam PHP untuk mengunggah video ke platform Vimeo dengan sukses.

Contoh kode ini akan memudahkan pekerjaan untuk menambahkan modul unggah video ke dalam aplikasi PHP Anda.

Langkah-langkah integrasi yang dibahas di atas akan menyederhanakan pengaturan Vimeo API untuk suatu aplikasi.

Kami telah membuat layanan PHP untuk menyiapkan permintaan API dan menangani respons di sisi server.

Unduh

Kembali ke Atas


Source link