
Recherche avancée
Autres articles (99)
-
Activation de l’inscription des visiteurs
12 avril 2011, parIl est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...) -
Contribute to documentation
13 avril 2011Documentation is vital to the development of improved technical capabilities.
MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
To contribute, register to the project users’ mailing (...) -
La sauvegarde automatique de canaux SPIP
1er avril 2010, parDans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)
Sur d’autres sites (10053)
-
Bash script for splitting video using ffmpeg outputs wrong video lengths
19 juin 2018, par jonnyI have a video that’s
x
seconds long. I want to split that video up into equal segments, where each segment is no longer than a minute. To do that, I cobbled together a fairly simple bash script which usesffmprobe
to get the duration of the video, find out how long each segment should be, and then iteratively split the video up usingffmpeg
:INPUT_FILE=$1
INPUT_DURATION="$(./bin/ffprobe.exe -i "$INPUT_FILE" -show_entries format=duration -v quiet -of csv="p=0")"
NUM_SPLITS="$(perl -w -e "use POSIX; print ceil($INPUT_DURATION/60), qq{\n}")"
printf "\nVideo duration: $INPUT_DURATION; "
printf "Number of videos to output: $NUM_SPLITS; "
printf "Approximate length of each video: $(echo "$INPUT_DURATION" "$NUM_SPLITS" | awk '{print ($1 / $2)}')\n\n"
for i in `seq 1 "$NUM_SPLITS"`; do
START="$(echo "$INPUT_DURATION" "$NUM_SPLITS" "$i" | awk '{print (($1 / $2) * ($3 - 1))}')"
END="$(echo "$INPUT_DURATION" "$NUM_SPLITS" "$i" | awk '{print (($1 / $2) * $3)}')"
echo ./bin/ffmpeg.exe -v quiet -y -i "$INPUT_FILE" \
-vcodec copy -acodec copy -ss "$START" -t "$END" -sn test_${i}.mp4
./bin/ffmpeg.exe -v quiet -y -i "$INPUT_FILE" \
-vcodec copy -acodec copy -ss "$START" -t "$END" -sn test_${i}.mp4
done
printf "\ndone\n"If I run that script on the 30MB / 02:50 duration Big Buck Bunny sample from here, the output of the program would suggest the videos should all be of equal length :
λ bash split.bash .\media\SampleVideo_1280x720_30mb.mp4
Video duration: 170.859000; Number of videos to output: 3; Approximate length of each video: 56.953
./bin/ffmpeg.exe -v quiet -y -i .\media\SampleVideo_1280x720_30mb.mp4 -vcodec copy -acodec copy -ss 0 -t 56.953 -sn test_1.mp4
./bin/ffmpeg.exe -v quiet -y -i .\media\SampleVideo_1280x720_30mb.mp4 -vcodec copy -acodec copy -ss 56.953 -t 113.906 -sn test_2.mp4
./bin/ffmpeg.exe -v quiet -y -i .\media\SampleVideo_1280x720_30mb.mp4 -vcodec copy -acodec copy -ss 113.906 -t 170.859 -sn test_3.mp4
doneAs the duration of each partial video, i.e. the time between
-ss
and-t
, are equal for each subsequentffmpeg
command. But the durations I get are closer to :test_1.mp4 = 00:56
test_2.mp4 = 01:53
test_3.mp4 = 00:56Where the contents of each partial video overlap. What am I missing here ?
-
ffmpeg converted video from s3 bucket downloads before playing the video
12 octobre 2020, par RutuI making a video streaming application with react and node js.
I am converting video into different resolution with ffmpeg and storing directly to S3 bucket with the help of piping.


I am streaming uploaded resolution video from S3 bucket directly through cloudfront in HTML5 tag with video.js


When i tried to play original video through cloudfront in player its working fine, But as soon i play ffmpeg converted video to video player in cloudfront i am facing issue :


Video takes a lot load (Downloads in browser) before playing in player.


Below is my ffmpeg command


await loadProcess( [
'i',<s3 url="url" of="of" original="original" video="video">,
 '-movflags',
 'frag_keyframe+empty_moov','-vf', 'scale=-2:360','-c:v','h264','-profile:v','baseline','-r',30,'-g', 60,'-b:v','1M','-f','mp4','-']
, outPath,'video/mp4')

</s3>


this is my loadProcess function : i am using aws cli to direct upload resolution video to S3 bucket :


export function loadProcess(ffmpegOptions, outPath,contentType) {
 return new Promise((resolve, reject) => {
 const videoPath = outPath.replace(/\\/g, "/");
 let ffmpeg = spawn(conf.ffmpeg, ffmpegOptions);
 let awsPipe = spawn('aws', ['s3', 'cp', '--content-type', `${contentType}`, '-', `s3://${process.env.AWS_S3_BUCKET}/${process.env.AWS_S3_VIDEOS_FOLDER}${videoPath}` ])
 ffmpeg.stdout.pipe(awsPipe.stdin)

 // ffmpeg write stream flow
 let ffmpegData = ''
 ffmpeg.stderr.on('data', (_data) => {
 ffmpegData += _data.toString();
 })
 ffmpeg.on('close', (code) => {
 if (code === 0) {
 resolve(outPath)
 }
 else {
 let _dataSplit=ffmpegData.split('\n');
 _dataSplit.pop();
 console.log({action: 'close', message:_dataSplit.pop(), more:[conf.ffmpeg].concat(ffmpegOptions).join(' ')+'\n'+ffmpegData, code})
 }
 });
 ffmpeg.on('error', (err) => {
 reject({action: ' ffmpeg error', message: err});
 });
 
 // aws s3 cli read stream pipe flow
 let awsPipeData = ''
 awsPipe.stderr.on('data', _data => {
 awsPipeData += _data.toString()
 });
 awsPipe.on('close', (code) => {
 if (code === 0) {
 resolve(outPath)
 }else{
 console.log({action: 'close', message: awsPipeData})
 }
 });
 awsPipe.on('error', (err) => {
 reject({action: 'awsPipe error', message: err});
 })

 })
}



I have tried using +faststart option in ffmpeg but getting command failed error.
Can someone please help me this ?


Thanks in advance


-
ffmpeg - compositing a video within a video in the centre
1er mars 2017, par kieranI’m looking to composite a video with ffmpeg that places the video in the centre no matter what the composited video’s aspect ratio/size.
The "background" video will always be 16:9 and 1920x1080px. I won’t know the aspect ratio or size of the overlay video as it will be user uploaded and could be any size/ratio.
Here’s an example of what I’m trying to achieve :
This is the background image :
Now I want to overlay a video over the top :
Essentially no matter what the dimensions I want to ensure it’s always resized to fit within 1920x1080 and in addition ensure it’s always centred.
Finally, if the uploaded video is also 16:9 it should simply overlay the entire video :