
Recherche avancée
Autres articles (39)
-
Librairies et logiciels spécifiques aux médias
10 décembre 2010, parPour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...) -
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 (...) -
Installation en mode ferme
4 février 2011, parLe mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
C’est la méthode que nous utilisons sur cette même plateforme.
L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)
Sur d’autres sites (7040)
-
FFmpeg command to text overlay to video doesn't work [duplicate]
18 mai 2021, par KangDoHere is my command string array.


new String[]"ffmpeg", "-i", video.getAbsolutePath(), "-vf", "drawtext=text='Text to write is this one, overlaid':fontfile=http://webpagepublicity.com/free-fonts/x/Xtrusion%20(BRK).ttf : x=100:y=100:fontsize=24:fontcolor=white", "-codec:a copy", outputFilePath() ;


and here is the console message :


Stream #0:1(eng) : Audio : amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s (default)


Metadata : creation_time : 2021-05-18T08:37:50.000000Z


handler_name : SoundHandle


[NULL @ 0xf0d848d0] Unable to find a suitable output format for 'ffmpeg'


ffmpeg : Invalid argument




-
Estimating number of frames and fps in opencv
11 mai 2021, par mrgloomI have some .mp4 video, ffmpeg shows me this info :


Duration: 00:00:07.02, start: 0.000000, bitrate: 18001 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709/bt709/iec61966-2-1, progressive), 886x1920, 14299 kb/s, 22.54 fps, 60 tbr, 600 tbn, 1200 tbc (default)
 Metadata:
 rotate : 270
 creation_time : 2021-04-30T13:56:51.000000Z
 handler_name : Core Media Video
 encoder : 'avc1'
 Side data:
 displaymatrix: rotation of 90.00 degrees



So as I understand it should be 7.02 sec * 22.54 fps 158 frames


When I try to read it in opencv :


def print_info_cap_reading(video_filepath):
 cap = cv2.VideoCapture(video_filepath)

 fps = cap.get(cv2.CAP_PROP_FPS)
 n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

 print('fps:', round(fps, 2))
 print('n_frames', n_frames)

 counter = 0
 while True:
 ret, frame = cap.read()
 if ret == False:
 break
 counter += 1

 print('counter:', counter)



It shows me


# fps: 22.54
# n_frames 199
# counter: 175



When I tried to convert it to separate frames via ffmpeg it produce 422 frames :


ffmpeg -i source1.mp4 tmp/img%03d.jpg



So I wonder :


- 

- Why fps is float value and not int value ?
- What is the right way to estimate fps and number of frames ?
- Why cv2.CAP_PROP_FRAME_COUNT in opencv and actually reading frames produce different number of frames ?








Update :


-ignore_editlist 1
not helped, ffmpeg still produce 422 frames :

ffmpeg -i source1.mp4 tmp1/img%03d.jpg
 ffmpeg -i source1.mp4 -ignore_editlist 1 tmp2/img%03d.jpg



Here is some ffmpeg output :


Output #0, image2, to 'tmp1/img%03d.jpg':
 Metadata:
 major_brand : qt
 minor_version : 0
 compatible_brands: qt
 com.apple.quicktime.author: ReplayKitRecording
 encoder : Lavf58.45.100
 Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 1920x886, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc (default)
 Metadata:
 encoder : Lavc58.91.100 mjpeg
 creation_time : 2021-04-30T13:56:51.000000Z
 handler_name : Core Media Video
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
 displaymatrix: rotation of -0.00 degrees
frame= 422 fps=224 q=24.8 Lsize=N/A time=00:00:07.03 bitrate=N/A dup=247 drop=0 speed=3.74x
video:13709kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown



Update :


mkdir tmp3 && ffmpeg -ignore_editlist 1 -i source1.mp4 tmp3/img%03d.jpg
produce even more frames - 529.

Output #0, image2, to 'tmp3/img%03d.jpg':
 Metadata:
 major_brand : qt
 minor_version : 0
 compatible_brands: qt
 com.apple.quicktime.author: ReplayKitRecording
 encoder : Lavf58.45.100
 Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 1920x886, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc (default)
 Metadata:
 encoder : Lavc58.91.100 mjpeg
 creation_time : 2021-04-30T13:56:51.000000Z
 handler_name : Core Media Video
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
 displaymatrix: rotation of -0.00 degrees
frame= 529 fps=221 q=24.8 Lsize=N/A time=00:00:08.81 bitrate=N/A dup=330 drop=0 speed=3.68x
video:16178kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown



-
FFMPEG : Specifying Output Stream Type When Combing Multiple Filters
7 mai 2021, par Leonard BednerI currently have 3 separate
ffmpeg
commands that do the following :

- 

- Overlay a watermark on a video :
ffmpeg -i samplegreen.webm -i foregrounds/myimage.png -r 30 -filter_complex "overlay=(W-w)/2:H-h" -af "adelay=700" output.mp4
- Overlay the results of 1) onto a beach video :
ffmpeg -i backgrounds/beachsunsetmp4.mp4 -i output.mp4 -filter_complex "[1:v]chromakey=0x005d0b:0.1485:0.03[ckout];[0:v][ckout]overlay[o]" -map [o] -map 1:a -shortest somefolder/sample_video.mp4
- Merge the audio of the results of 2) with another audio file :
ffmpeg -i somefolder/sample_video.mp4 -i backgrounds/beachsunsetmp4.mp3 -filter_complex '[0:a][1:a]amerge=inputs=2[a]' -map 0:v -map '[a]' -c:v copy -ac 2 -shortest anotherfolder/sample_video.mp4








Now, this all works as intended, however, I was looking into attempting to combine them all into a single command, combining all the filters, like so :


ffmpeg -i samplegreen.webm -i foregrounds/myimage.png -r 30 -i backgrounds/beachsunsetmp4.mp4 -i backgrounds/beachsunsetmp4.mp3 -filter_complex \
 "[0]overlay=(W-w)/2:H-h[output_1]; \
 [output_1]chromakey=0x005d0b:0.1485:0.03[ckout]; \
 [2:v][ckout]overlay[output_2]; \
 [output_2][3:a] amerge=inputs=2 [output_3]" \
 -af "adelay=700" -map [output_3] shortest final.mp4



It fails with the following error (
Media type mismatch between the 'Parsed_overlay_2' filter output pad 0 (video) and the 'Parsed_amerge_3' filter input pad 0 (audio)
) :

ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
 built with Apple clang version 11.0.0 (clang-1100.0.33.17)
 configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox
 libavutil 56. 51.100 / 56. 51.100
 libavcodec 58. 91.100 / 58. 91.100
 libavformat 58. 45.100 / 58. 45.100
 libavdevice 58. 10.100 / 58. 10.100
 libavfilter 7. 85.100 / 7. 85.100
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
Input #0, matroska,webm, from 'samplegreen.webm':
 Metadata:
 encoder : Chrome
 Duration: N/A, start: 0.000000, bitrate: N/A
 Stream #0:0(eng): Video: vp8, yuv420p(progressive), 1280x720, SAR 1:1 DAR 16:9, 1k tbr, 1k tbn, 1k tbc (default)
 Metadata:
 alpha_mode : 1
 Stream #0:1(eng): Audio: opus, 48000 Hz, mono, fltp (default)
Input #1, png_pipe, from 'foregrounds/myimage.png':
 Duration: N/A, bitrate: N/A
 Stream #1:0: Video: png, rgba(pc), 350x86, 25 tbr, 25 tbn, 25 tbc
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'backgrounds/beachsunsetmp4.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: mp42mp41
 creation_time : 2021-02-16T18:24:40.000000Z
 Duration: 00:00:32.53, start: 0.000000, bitrate: 3032 kb/s
 Stream #2:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 3027 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
 Metadata:
 creation_time : 2021-02-16T18:24:40.000000Z
 handler_name : ?Mainconcept Video Media Handler
 encoder : AVC Coding
[mp3 @ 0x7f86cf809000] Estimating duration from bitrate, this may be inaccurate
Input #3, mp3, from 'backgrounds/beachsunsetmp4.mp3':
 Metadata:
 date : 2021-02-18 06:49
 id3v2_priv.XMP : <?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a\x0a \x0a s
 Stream #3:0: Audio: mp3, 48000 Hz, stereo, fltp, 128 kb/s
[Parsed_overlay_2 @ 0x7f86cd4039c0] Media type mismatch between the 'Parsed_overlay_2' filter output pad 0 (video) and the 'Parsed_amerge_3' filter input pad 0 (audio)
[AVFilterGraph @ 0x7f86cd402a40] Cannot create the link overlay:0 -> amerge:0
Error initializing complex filters.
Invalid argument



As far as I can tell, the issue is that the filter,
amerge
, wants 2 audio streams. Normally, I could take the input stream argument (which is a video), and make it use the audio by doing something like[0:a][1:a]amerge=inputs=2[results]
. However, since my input stream is the output of a preceding filter, that doesn't seem to work (i.e. [output_2:a]). It bombs out with :

[matroska,webm @ 0x7fecca000000] Invalid stream specifier: output_2:a.
 Last message repeated 1 times
Stream specifier 'output_2:a' in filtergraph description [0]overlay=(W-w)/2:H-h[output_1]; [output_1]chromakey=0x005d0b:0.1485:0.03[ckout]; [2:v][ckout]overlay[output_2]; [output_2:a][3:a] amerge=inputs=2 [output_3] matches no streams.



So all of that said... Is there a way to specify that I'd like to use the audio stream from the output of a preceding filter ? Or any other ways to combine all of these filters into a single command ?


Thanks.


Any help would be greatly appreciated !


- Overlay a watermark on a video :