
Recherche avancée
Autres articles (93)
-
Mediabox : ouvrir les images dans l’espace maximal pour l’utilisateur
8 février 2011, parLa visualisation des images est restreinte par la largeur accordée par le design du site (dépendant du thème utilisé). Elles sont donc visibles sous un format réduit. Afin de profiter de l’ensemble de la place disponible sur l’écran de l’utilisateur, il est possible d’ajouter une fonctionnalité d’affichage de l’image dans une boite multimedia apparaissant au dessus du reste du contenu.
Pour ce faire il est nécessaire d’installer le plugin "Mediabox".
Configuration de la boite multimédia
Dès (...) -
(Dés)Activation de fonctionnalités (plugins)
18 février 2011, parPour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (8643)
-
video streaming - mp4 file (x264) - and skip to location
14 mars 2011, par RaoulPreviously I was using apache to serve .flv files which an embedded player on an intranet page was playing.
Is it possible to stream mp4 files (x264 encoded) in a similar manner ? Are there any open source scripts/solutions for doing proper streaming (e.g. people can skip to skip to a part of the video without having to download the parts they've skiped over) ?
If anyone is doing someting similar I'd love to hear from them
Thanks
-
ffplay : fix a crash caused by aborting the video queue
25 août 2011, par Marton Balintffplay : fix a crash caused by aborting the video queue
-
PHP FFmpeg video aspect ratio problem [SOLVED]
29 août 2011, par Herr Kaleuni compiled the new version of FFMPEG and the padding commands have been deprecated.
As i try to get familiar with the new -vf pad= commands, i want to ask, how can i
convert a video without changing it's aspect ratio.I've checked numerous solutions from stackoverflow, nothing seemed to work.
Can someone, please post a working PHP example or cmd line. I would be VERY happy.Please note that the videos in question, could be 4:3 and also be 16:9
Let's say, i convert a 16:9 video to 640x480 format. It will need some bars at
the top and at the bottom. That is what i want to do.Thanks
EDIT :
I solved the problem on my own. The FFmpeg documentation is a little bit weird so
you have to experiment yourself a little bit.
The padding formula is like :$pad_horizontal = $target_width + $pad_left + $pad_right;
$pad_vertical = $target_height;
// blah
$command .= " -vf pad=$pad_horizontal:$pad_vertical:". $pad_left .":". $pad_top .":black";Pay special attention at the $pad_vertical part since the paddings there are better
not added so that the padding calculation of ffmpeg is not broken.Here is the full source code to the demo
<?
/***********************************************************************************
get_dimensions()
Takes in a set of video dimensions - original and target - and returns the optimal conversion
dimensions. It will always return the smaller of the original or target dimensions.
For example: original dimensions of 320x240 and target dimensions of 640x480.
The result will be 320x240 because converting to 640x480 would be a waste of disk
space, processing, and bandwidth (assuming these videos are to be downloaded).
@param $original_width: The actual width of the original video file which is to be converted.
@param $original_height: The actual height of the original video file which is to be converted.
@param $target_width: The width of the video file which we will be converting to.
@param $target_height: The height of the video file which we will be converting to.
@param $force_aspect: Boolean value of whether or not to force conversion to the target's
aspect ratio using padding (so the video isn't stretched). If false, the
conversion dimensions will retain the aspect ratio of the original.
Optional parameter. Defaults to true.
@return: An array containing the size and padding information to be used for conversion.
Format:
Array
(
[width] => int
[height] => int
[padtop] => int // top padding (if applicable)
[padbottom] => int // bottom padding (if applicable)
[padleft] => int // left padding (if applicable)
[padright] => int // right padding (if applicable)
)
***********************************************************************************/
function get_dimensions($original_width,$original_height,$target_width,$target_height,$force_aspect)
{
if(!isset($force_aspect))
{
$force_aspect = true;
}
// Array to be returned by this function
$target = array();
$target['padleft'] = 0;
$target['padright'] = 0;
$target['padbottom'] = 0;
$target['padtop'] = 0;
// Target aspect ratio (width / height)
$aspect = $target_width / $target_height;
// Target reciprocal aspect ratio (height / width)
$raspect = $target_height / $target_width;
if($original_width/$original_height !== $aspect)
{
// Aspect ratio is different
if($original_width/$original_height > $aspect)
{
// Width is the greater of the two dimensions relative to the target dimensions
if($original_width < $target_width)
{
// Original video is smaller. Scale down dimensions for conversion
$target_width = $original_width;
$target_height = round($raspect * $target_width);
}
// Calculate height from width
$original_height = round($original_height / $original_width * $target_width);
$original_width = $target_width;
if($force_aspect)
{
// Pad top and bottom
$dif = round(($target_height - $original_height) / 2);
$target['padtop'] = $dif;
$target['padbottom'] = $dif;
}
}
else
{
// Height is the greater of the two dimensions relative to the target dimensions
if($original_height < $target_height)
{
// Original video is smaller. Scale down dimensions for conversion
$target_height = $original_height;
$target_width = round($aspect * $target_height);
}
//Calculate width from height
$original_width = round($original_width / $original_height * $target_height);
$original_height = $target_height;
if($force_aspect)
{
// Pad left and right
$dif = round(($target_width - $original_width) / 2);
$target['padleft'] = $dif;
$target['padright'] = $dif;
}
}
}
else
{
// The aspect ratio is the same
if($original_width !== $target_width)
{
if($original_width < $target_width)
{
// The original video is smaller. Use its resolution for conversion
$target_width = $original_width;
$target_height = $original_height;
}
else
{
// The original video is larger, Use the target dimensions for conversion
$original_width = $target_width;
$original_height = $target_height;
}
}
}
if($force_aspect)
{
// Use the target_ vars because they contain dimensions relative to the target aspect ratio
$target['width'] = $target_width;
$target['height'] = $target_height;
}
else
{
// Use the original_ vars because they contain dimensions relative to the original's aspect ratio
$target['width'] = $original_width;
$target['height'] = $original_height;
}
return $target;
}
function get_vid_dim($file)
{
$command = '/usr/bin/ffmpeg -i ' . escapeshellarg($file) . ' 2>&1';
$dimensions = array();
exec($command,$output,$status);
if (!preg_match('/Stream #(?:[0-9\.]+)(?:.*)\: Video: (?P<videocodec>.*) (?P<width>[0-9]*)x(?P<height>[0-9]*)/',implode("\n",$output),$matches))
{
preg_match('/Could not find codec parameters \(Video: (?P<videocodec>.*) (?P<width>[0-9]*)x(?P<height>[0-9]*)\)/',implode("\n",$output),$matches);
}
if(!empty($matches['width']) && !empty($matches['height']))
{
$dimensions['width'] = $matches['width'];
$dimensions['height'] = $matches['height'];
}
return $dimensions;
}
$command = '/usr/bin/ffmpeg -i ' . $src . ' -ab 96k -b 700k -ar 44100 -f flv -s ' . '640x480 -acodec mp3 '. $video_output_dir . $video_filename . ' 2>&1';
define( 'VIDEO_WIDTH', '640' );
define( 'VIDEO_HEIGHT', '480' );
$src_1 = getcwd() .'/'. 'test_video1.mpeg';
$video_filename1 = 'video1.flv';
$src_2 = getcwd() .'/'. 'test_video2.mp4';
$video_filename2 = 'video2.flv';
$src_3 = getcwd() .'/'. 'test_video3.mp4';
$video_filename3 = 'video3.flv';
convert_video( $src_1, $video_filename1 );
convert_video( $src_2, $video_filename2 );
convert_video( $src_3, $video_filename3 );
function convert_video( $src = '', $video_filename = '' )
{
$video_output_dir = getcwd() .'/';
@unlink ( $video_output_dir . $video_filename );
$original = get_vid_dim($src);
$target = get_dimensions( $original['width'], $original['height'], VIDEO_WIDTH, VIDEO_HEIGHT, TRUE );
echo '<pre>';
print_r( $original );
echo '</pre>';
echo '<pre>';
print_r( $target );
echo '</pre>';
$target_width = $target['width'];
$target_height = $target['height'];
$pad_left = $target['padleft'];
$pad_right = $target['padright'];
$pad_bottom = $target['padbottom'];
$pad_top = $target['padtop'];
$pad_horizontal = $target_width + $pad_left + $pad_right;
$pad_vertical = $target_height; // + $pad_top + $pad_bottom;
$command = '/usr/bin/ffmpeg -i ' . $src;
// $command .= " -s {$target_width}x{$target_height} ";
$command .= " -vf pad=$pad_horizontal:$pad_vertical:". $pad_left .":". $pad_top .":black";
$command .= ' -ab 96k -b 700k -ar 44100';
$command .= ' -f flv ';
$command .= ' -qscale 4';
$command .= ' -ss 30';
$command .= ' -t 5';
$command .= ' -ac 2 -ab 128k -qscale 5 ';
$command .= ' ' . $video_output_dir . $video_filename;
exec( $command, $output, $status );
echo '<pre>';
print_r( $command );
echo '</pre>';
if ( $status == 0 )
{
echo '<br />Convert OK. <br />';
}
else
{
echo '<pre>';
print_r( $output );
echo '</pre>';
}
echo '<br />';
echo '<br />';
}
?>
</height></width></videocodec></height></width></videocodec>Thank you and have fun :)