
Recherche avancée
Autres articles (29)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
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 -
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)
Sur d’autres sites (5408)
-
How to convert short video clips to TS without sound "gaps" between the segments ?
10 novembre 2022, par ZvikaI am trying to convert a sequence of short video files from MP4 to TS using ffmpeg.
I get valid TS files, but when playing them in any HLS player, there is a noticeable short gap in the sound between segment to segment.


If I first stitch all the short video files to a single video file, and convert this file to TS while slicing it to segments, it plays perfectly fine.


To the gory details :
My software creates short video clips that should be concateenated to an output video and streamed as HLS.
Each short clip is an H.264 video file and WAV audio file (I can create other formats if needed).
I then convert each such pair of H.264+WAV to a TS file using ffmpeg :

ffmpeg -y -i seg_0.mp4 -i seg_0.wav -c:a libvo_aacenc -c:v copy -bsf:v h264_mp4toannexb seg_0.ts ffmpeg -y -i seg_1.mp4 -i seg_1.wav -c:a libvo_aacenc -c:v copy -bsf:v h264_mp4toannexb -output_ts_offset 2.01 seg_1.ts ffmpeg -y -i seg_2.mp4 -i seg_2.wav -c:a libvo_aacenc -c:v copy -bsf:v h264_mp4toannexb -output_ts_offset 4.02 seg_2.ts

etc.

and I create an appropriate M3U8 file to play all the short clips as a sequence.
The result is not satisfying, as I have audio gaps between each segment and segment, as you can hear here :
https://rnd3-temp-public.s3.amazonaws.com/HLS_4/out_seg2.m3u8


However, if I concat all the pairs together, and convert the concatenated sequence to TS, while requesting ffmpeg to slice them again to segments, using a command like :

ffmpeg -y -f concat -i mp4_list.txt -f concat -i wav_list.txt -c:a libvo_aacenc -c:v copy -bsf:v h264_mp4toannexb -flags +cgop -g 30 -hls_time 2 out2.m3u8

it plays perfectly OK, as you can hear here :
https://rnd3-temp-public.s3.amazonaws.com/HLS/out2.m3u8

How can I get a clear audio output by still encoding each segment separately ? (It's crucial for my workflow)


Thanks !


-
How do you run a ffmpeg command in Java, in MacOS, using a ProcessBuilder
5 août 2020, par nottAbottI am writing a program in Java that uses ffmpeg to "snip" a video into several pieces and the stitch them back together again. I have everything working relatively smoothly in Windows, but I cannot get ffmpeg to work in Mac, or in Linux for that matter. I'm focusing on mac right now though. I thought that it might be a permissions problem, but when I run it with sudo I get an error that says (after typing in the password :


sudo: ffmpeg: command not found



when I run it without sudo I get :


java.io.IOException: Cannot run program "ffmpeg": error=2, No such file or directory



I think that it might be because the ffmpeg package, on the Mac machine, was downloaded with homebrew, and ffmpeg is stored in /usr/local/Cellar/ffmpeg instead of the default folder, wherever it may be. That may not be the problem though, because I deleted ffmpeg and re-downloaded it with homebrew. It may have been in its defaulter folder in my first tests as well. It would be great to figure this out. Most of my family uses Mac (not me) and I really want to share my work with them. That is why I chose to code this in Java. Oh, and I did try using the directory to the binary in the command. Here's the code :


//snips out all the clips from the main video
 public void snip() throws IOException, InterruptedException {
 
 for(int i = 0; i < snippets.size(); i++) {
 //ffmpeg -i 20sec.mp4 -ss 0:0:1 -to 0:0:5 -c copy foobar.mp4
 String newFile = "foobar" + String.valueOf(i) + ".mp4";
 
 //THIS WORKS
 if(OS.isWindows()) {
 ProcessBuilder processBuilder = new ProcessBuilder("ffmpeg", "-i", videoName, "-ss",
 snippets.get(i).getStartTime(), "-to", snippets.get(i).getEndTime(), newFile);
 
 Process process = processBuilder.inheritIO().start();
 process.waitFor();
 System.out.println("Win Snip " + i + "\n");
 }
 
 else if (OS.isMac()) {
 //FFMPEG LOCATION: /usr/local/Cellar/ffmpeg
 //THE ERROR: sudo: ffmpeg: command not found
 //ERROR W/OUT SUDO: java.io.IOException: Cannot run program "ffmpeg": error=2, No such file or directory
 ProcessBuilder processBuilder = new ProcessBuilder("sudo", "-S", "ffmpeg", "-f", videoName, "-ss",
 snippets.get(i).getStartTime(), "-to", snippets.get(i).getEndTime(), newFile);
 
 Process process = processBuilder.inheritIO().start();
 process.waitFor();
 System.out.println("Mac Snip " + i + "\n");
 }
 
 else if (OS.isUnix()) {
 System.out.println("Your operating system is not supported");
 //TODO
 //need to figure out if deb/red hat/whatever are different
 }
 
 else if (OS.isSolaris()) {
 System.out.println("Your operating system is not supported yet");
 //TODO probably won't do
 }
 
 else {
 System.out.println("Your operating system is not supported");
 }
 //add to the list of files to be concat later
 filesToStitch.add(newFile);
 filesToDelete.add(newFile);
 
 }
 //System.out.println(stitchFiles);
 }



-
Why is ffmpeg's hstack so much slower than overlay and pad ?
27 janvier 2021, par cgencoI'm using ffmpeg to stitch together two videos of people chatting into a video with each of them side-by-side, like this :




Here's the command I'm currently using to get this done, which runs at 2.5x on my 13" M1 MacBook Pro :


ffmpeg -y -i left.mp4 -i right.mp4 -filter_complex "
 [0:v] crop=w=in_w/2 [croppedLeft];
 [1:v][1:v] overlay=x=overlay_w/4 [shiftedRight];
 [shiftedRight][croppedLeft] overlay [vout];
 [0:a][1:a] amix [aout]
" -map "[vout]" -map "[aout]" -ac 2 out.mp4



This command crops the left video to half of its original width (cropping so the video is centered), then shifts the right video a quarter of its width to the right, then overlays the left video on the left half of the output merged with the shifted right video.


One day on my weekly fun-time read-through the FFmpeg filters documentation I stumbled on a filter named
hstack
, which is described as being "faster than using overlay and pad filter to create same output."

My ex wife can affirm that there are few higher priorities in my life than going faster, so I altered my ffmpeg script to use
hstack
instead of twooverlay
s :

ffmpeg -y -i left.mp4 -i right.mp4 -filter_complex "
 [0:v] crop=w=in_w/2 [croppedLeft];
 [1:v] crop=w=in_w/2 [croppedRight];
 [croppedLeft][croppedRight] vstack [vout];
 [0:a][1:a] amix [aout]
" -map "[vout]" -map "[aout]" -ac 2 out.mp4



...but that command runs painfully slowly, like 0.1x. It takes multiple minutes to render a single second.


So uhhh what's going on here ? Why is hstack taking so long when it's supposed to be faster ?


I've tried this on both the M1 native build from OSXExperts (version N-99816-g3da35b7) and the standard ffmpeg from brew and hstack is just as slow on each.