API Media Write : exemple PHP - chargement d'une vidéo

ProduitÉdition
Video CloudProfessional, Enterprise

Dans l’analyse d’une application d’exemple, vous apprendrez à utiliser une page PHP pour charger une vidéo dans votre médiathèque à l’aide de PHP et de l’API médias (écriture). L’envoi de la vidéo nécessite le recours à un formulaire HTML. Un script PHP prend en charge le formulaire et charge la vidéo vers le service Video Cloud.

En suivant le code décrit dans cette rubrique, vous pourrez créer vos applications pour le chargement des vidéos ou modifier l’application d’exemple selon vos besoins.

Préliminaires

L’échantillon se compose de deux fichiers. Téléchargez ces deux fichiers avant de commencer :

  • Téléchargez le fichier uploadvideo.php. Il s’agit d’un script PHP assurant la gestion du formulaire et le chargement de la vidéo.
  • Téléchargez le fichier uploadVideoForm.html qui comporte un formulaire que l’utilisateur pourra utiliser pour définir le nom, la description, les balises et le chemin de la vidéo. Le bouton d’envoi du formulaire transmet les données au script PHP.

Remarque : cet exemple de code se base sur un prédécesseur du projet de wrapper MAPI PHP. Pour télécharger ce SDK PHP, rendez-vous à l'adresse http://opensource.brightcove.com/project/PHP-MAPI-Wrapper/. Vous trouverez également un exemple de chargement dans « Create - Video ».

Veillez également à respecter les critères suivants :

  • Vous devez pour cela connaître les protocoles PHP, JSON et cURL.
  • Veillez à ce que le fichier vidéo que vous allez charger ne dépasse pas la limite maximale fixée à 2 Go.

Dans cette rubrique, vous en apprendrez plus sur les sujets suivants :

Envoi des clés

Pour commencer à utiliser le script, vous devrez d’abord envoyer des clés valables pour votre compte. Ce code crée une instance de la classe Brightcove définie ci-dessous. Pour en savoir plus sur l’accès à vos clés, consultez la rubrique Gestion des clés de l’API médias.

// Instance de la classe Brightcove
$bc = new Brightcove(
    '[[READ_TOKEN]]',
    '[[WRITE_TOKEN]]'
);

Gestion de l’envoi du formulaire

PHP facilite l’accès aux variables et aux fichiers envoyés avec le formulaire. La première partie du script analyse l’envoi du formulaire et gère le fichier défini par l’utilisateur :

// Définir les données pour le DTO de la nouvelle vidéo sur la base des valeurs du formulaire
$metaData = array(
	'name' => $_POST['bcName'],
	'shortDescription' => $_POST['bcShortDescription']
);

// Renommer le fichier en fonction du nom d’origine (au lieu de noms temporaires comme « a445ertd3 »)
$file = $_FILES['bcVideo'];
rename($file['tmp_name'], '/tmp/' . $file['name']);
$file = '/tmp/' . $file['name'];

Introduction de la requête

Maintenant que vous disposez des métadonnées sur votre vidéo et le fichier, vous pouvez invoquer la méthode createVideo en intégrant une référence au fichier et aux métadonnées.

// Envoyer le fichier à Brightcove
echo $bc->createVideo($file, $metaData);

Présentation de la classe Brightcove

La classe Brightcove assure le gros du travail dans cette application. La classe Brightcove est responsable :

  • du rassemblement des variables requises pour la requête ;
  • de la gestion de la requête HTTP ;
  • d'un nouvel essai de la requête, le cas échéant.

Voir ces tâches dans le code pour la classe Brightcove :

class Brightcove {
        public $token_read = '';
        public $token_write = '';
        public $read_url = 'http://api.brightcove.com/services/library?';
        public $write_url = 'http://api.brightcove.com/services/post';

	public function __construct($token_read, $token_write = NULL ) {
		$this->token_read = $token_read;
		$this->token_write = $token_write;
	}

	public function createVideo($file = NULL, $meta) {
		$request = array();
		$post = array();
		$params = array();
		$video = array();

		foreach($meta as $key => $value) {
			$video[$key] = $value;
		}
		$params['token'] = $this->token_write;
		$params['video'] = $video;

		$post['method'] = 'create_video';
		$post['params'] = $params;

		$request['json'] = json_encode($post);

		if($file) {
			$request['file'] = '@' . $file;
		}

		// Utiliser la bibliothèque cURL pour gérer la requête HTTP
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $this->write_url);
		curl_setopt($curl, CURLOPT_POST, 1);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($curl, CURLOPT_VERBOSE, TRUE );
		curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300);
		curl_setopt($curl, CURLOPT_TIMEOUT, 300);
		$response = curl_exec($curl);

		curl_close($curl);

		// Les réponses sont transférées en JSON et converties en objet PHP
		$json = json_decode($response);

		// Vérifier le code d’erreur de la requête et rappeler createVideo
		// si la requête a renvoyé une erreur 213. Une erreur 213 se 
		// produit lorsque vous avez dépassé votre nombre autorisé de 
		// requêtes d'écriture simultanées.
		if(isset($json->error))	{
			if($json->error->code == 213) {
				return $this->createVideo($file, $meta);
			} else {
				return FALSE;
			}
		} else {
			return $response;
		}
	}
}

Chargement à l’aide d’un formulaire HTML

Maintenant que vous avez défini le script PHP, vous pouvez l’intégrer à un simple formulaire HTML.

Cet exemple définit une action POST pour le script. Ce formulaire contient également deux champs d’entrée permettant de définir le nom et la description de la vidéo que vous chargez ainsi qu’un troisième champ d’entrée permettant de définir le fichier vidéo de votre système de fichiers :

<form method="post" action="uploadVideo.php" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="16777000" />
	Title (Titre) : <input type="text" name="bcName" /><br />
	Description courte : <textarea name="bcShortDescription"></textarea><br />
	Fichier : <input type="file" name="bcVideo" /><br />
	<input type="submit" />
</form>

Le bouton Envoyer du formulaire transmet les données du formulaire au script PHP, lequel analyse les données avant de configurer et invoquer la méthode createVideo.

Aide supplémentaire

Si vous n'arrivez pas à charger vos vidéos, le support Brightcove est à votre disposition. Vous pouvez créer un cas à cette adresse. Voici une liste de ce dont le support aura besoin pour traiter votre demande au plus vite :

  • La taille du fichier
  • La méthode de chargement (standard, accélérée, FTP, API d'écriture)
  • Le nom du fichier et son extension
  • Le chargement s'arrête-t-il avant d'avoir atteint les 100 %
  • Le chargement atteint les 100 %, mais une erreur se produit ? Dans ce cas, joignez une capture d'écran ou recopiez le texte du message d'erreur.

Une fois votre cas envoyé, vous recevrez une confirmation par courriel du support Brightcove. Répondez à ce courriel pour fournir des informations supplémentaires sur votre problème.

Publier un nouveau commentaire

Le contenu de ce champ reste anonyme et ne sera pas affiché à autrui.
0

Remarques