
Recherche avancée
Médias (1)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
Autres articles (57)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)
Sur d’autres sites (8840)
-
avfilter/vf_overlay : Remove superfluous ;
21 août 2020, par Andreas Rheinhardtavfilter/vf_overlay : Remove superfluous ;
In a function body, a redundant ; is just a null statement that does
nothing. Yet outside a function body, a superfluous ' ;' like one that
exists if one adds a ' ;' immediately after a function body's closing
brace is actually invalid C that compilers happen to accept. Yet when
compiled in -pedantic mode, both GCC as well as Clang emit warnings for
this like "ISO C does not allow extra ‘ ;’ outside of a function
[-Wpedantic]".The scenario described above existed in vf_overlay.c as a result of
macro expansion. This commit fixes it.Reviewed-by : Paul B Mahol <onemda@gmail.com>
Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@gmail.com> -
How to stream and play video automatically using PHP FFmpeg Video Streaming libray
21 août 2020, par kikabi francisAm currently new to ffmpeg video streaming and working on a project to stream mp4 videos using ffmpeg libray https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming and Video player https://videojs.com/ using DASH.
Am currently starting the streaming to mpd using commandline, with streaming.php.
I want to start streaming automatically when dash.html with video playing.
and i want to switch between different video qualities on the player, currently it play the same quality set in streaming.php
Here is my code



 
 
 
 
 
 
 
 
 <video height="480" data-setup="'{"liveui":" class="video-js vjs-default-skin" controls="controls"></video>
 <code class="echappe-js"><script src='http://stackoverflow.com/feeds/tag/app/js/plugins/node/video.js/dist/video.js'></script>

<script src='http://stackoverflow.com/feeds/tag/app/js/plugins/switcher/videojs-resolution-switcher.js'></script>

 
<script src='http://stackoverflow.com/feeds/tag/app/js/plugins/node/dashjs/dist/dash.all.min.js'></script>

 
 
<script src='http://stackoverflow.com/feeds/tag/app/js/plugins/node/videojs-contrib-dash/dist /videojs-dash.js'></script>

 
<script>&#xA;&#xA; var player = videojs(&#x27;example-video&#x27;);&#xA;&#xA; player.ready(function() {&#xA; player.updateSrc([&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;144p&#x27;,&#xA; res: 144&#xA; },&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;240p&#x27;,&#xA; res: 240&#xA; },&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;360p&#x27;,&#xA; res: 360&#xA; },&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;480p&#x27;,&#xA; res: 480&#xA; },&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;720p&#x27;,&#xA; res: 720&#xA; },&#xA; {&#xA; src: &#x27;http://localhost/MovieWeb/media/stream/dash-stream.mpd&#x27;,&#xA; type: &#x27;application/dash&#x2B;xml&#x27;,&#xA; label: &#x27;1080p&#x27;,&#xA; res: 1080&#xA; }&#xA; ])&#xA; &#xA; player.play();&#xA; });&#xA; player.videoJsResolutionSwitcher();&#xA; </script>

 
 


//video.php
< ?php
require ('api/libs/ffmpeg_video_stream/vendor/autoload.php') ;
use Streaming\Representation ;
$r_144p = (new Representation)->setKiloBitrate(95)->setResize(256, 144) ;
$r_240p = (new Representation)->setKiloBitrate(150)->setResize(426, 240) ;
$r_360p = (new Representation)->setKiloBitrate(276)->setResize(640, 360) ;
$r_480p = (new Representation)->setKiloBitrate(750)->setResize(854, 480) ;
$r_720p = (new Representation)->setKiloBitrate(2048)->setResize(1280, 720) ;
$r_1080p = (new Representation)->setKiloBitrate(4096)->setResize(1920, 1080) ;
$config = [
 'ffmpeg.binaries' => 'C :/ffmpeg/bin/ffmpeg.exe',
 'ffprobe.binaries' => 'C :/ffmpeg/bin/ffprobe.exe',
 'timeout' => 3600, // The timeout for the underlying process
 'ffmpeg.threads' => 12, // The number of threads that FFmpeg should use
 ] ;
$ffmpeg = Streaming\FFMpeg::create($config) ;
$video = $ffmpeg->open('media/videos/dir686840/1080p_video.mp4') ;
$video->dash()
 ->setAdaption('id=0,streams=v id=1,streams=a')
 ->x264()
 ->addRepresentations([$r_360p])
 ->save('media/stream/dash-stream.mpd') ;
 ?>


Thank you very much !!


-
Upload screenshots to google cloud storage bucket with Fluent-ffmpeg
2 janvier 2021, par aarpodsI am currently using multer to upload videos to my google storage bucket, and fluent-ffmpeg to capture thumbnails of the videos. Videos are being uploaded into the buckets correctly, but not the thumbnails from ffmpeg. How can I change the location of the thumbnails to my google storage bucket ?


Back-End Video upload


require ('dotenv').config()
const express = require('express');
const router = express.Router();
const multer = require("multer");
var ffmpeg = require('fluent-ffmpeg');
const multerGoogleStorage = require('multer-google-storage');
const { Video } = require("../models/Video");
const {User} = require("../models/User")
const { auth } = require("../middleware/auth");


var storage = multer({
 destination: function (req, file, cb) {
 cb(null, 'videos/')
 },
 filename: function (req, file, cb) {
 cb(null, `${Date.now()}_${file.originalname}`)
 },
 fileFilter: (req, file, cb) => {
 const ext = path.extname(file.originalname)
 if (ext !== '.mp4' || ext !== '.mov' || ext !== '.m3u' || ext !== '.flv' || ext !== '.avi' || ext !== '.mkv') {
 return cb(res.status(400).end('Error only videos can be uploaded'), false);
 }
 cb(null,true)
 }
})
// Set location to google storage bucket
var upload = multer({ storage: multerGoogleStorage.storageEngine() }).single("file")

router.post("/uploadfiles", (req, res) => {

 upload(req, res, err => {
 if (err) {
 return res.json({sucess: false, err})
 }
 return res.json({ success: true, filePath: res.req.file.path, fileName: res.req.file.filename})
 })
});



Back-end thumbnail upload


router.post("/thumbnail", (req, res) => {

 let thumbsFilePath = "";
 let fileDuration = "";

 ffmpeg.ffprobe(req.body.filePath, function (err, metadata) {
 console.dir(metadata);
 console.log(metadata.format.duration);

 fileDuration = metadata.format.duration;
 })


 ffmpeg(req.body.filePath)
 .on('filenames', function (filenames) {
 console.log('Will generate ' + filenames.join(', '))
 thumbsFilePath = "thumbnails/" + filenames[0];
 })
 .on('end', function () {
 console.log('Screenshots taken');
 return res.json({ success: true, thumbsFilePath: thumbsFilePath, fileDuration: fileDuration })
 })
 //Can this be uploaded to google storage?
 .screenshots({
 // Will take 3 screenshots
 count: 3,
 folder: '/thumbnails/',
 size: '320x240',
 //Names file w/o extension
 filename:'thumbnail-%b.png'
 });
});



Front-end video upload


const onDrop = (files) => {
 let formData = new FormData();
 const config = {
 header: {'content-type': 'multipart/form-data'}
 }
 console.log(files)
 formData.append("file", files[0])

 axios.post('/api/video/uploadfiles', formData, config)
 .then(response => {
 if (response.data.success) {
 let variable = {
 filePath: response.data.filePath,
 fileName: response.data.fileName
 }
 setFilePath(response.data.filePath)

 //Thumbnail
 axios.post('/api/video/thumbnail', variable)
 .then(response => {
 if (response.data.success) {
 setDuration(response.data.fileDuration)
 setThumbnail(response.data.thumbsFilePath)
 } else {
 alert("Failed to generate a thumbnail");
 }
 })

 } else {
 alert('Failed to save video to the server')
 }
 })
 }