
Recherche avancée
Médias (1)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
Autres articles (52)
-
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...) -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...)
Sur d’autres sites (11357)
-
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


-
How to speed up video and its timestamp to shorten video length, but represent time as it was recorded ?
7 janvier 2021, par Gonzalo AspeeI have a video recorded at 5 fps that I want to speed up to 30 fps to shorten it. That is simple enough as :


ffmpeg -i input.mp4 -r 30 -vf "setpts=0.16666*PTS" output.mp4



But when I try to add a timestamp to it with :


ffmpeg -i input.mp4 -r 30 -vf "setpts=0.16666*PTS, drawtext=text='%{pts\:localtime\:1610043985\:%Y\-%m\-%d %H\\\\\:%M\\\\\:%S.}%{eif\:mod(n,30)\:d}'" output.mp4



The timestamp does not longer represents the time as it was recorded (it should run faster now)


How to achieve this ?