
Recherche avancée
Autres articles (47)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
Mise à disposition des fichiers
14 avril 2011, parPar défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)
Sur d’autres sites (5403)
-
ffmpeg wrong framerate when converting x264 to x265
11 avril 2023, par AndreasI want to convert the video files from my Samsung phone to a more efficient format. Samsung uses x264 with a very high bitrate, instead I am using x265 with the following settings :


ffmpeg -i IN.mp4 -c:v libx265 -c:a copy -x265-params crf=25 OUT.mp4



However, there seems to be a problem with the framerate. Samsung specifies 60 fps in the metadata, but the video stream shows 29.95 fps.
If I use the above command to convert to x265, it even outputs a stream with 120 fps. ffmpeg also shows the warning "More than 1000 frames duplicated".


How can I keep the original framerate ?


Here is the ffmpeg output :


ffmpeg -i IN.mp4 -c:v libx265 -c:a copy -x265-params crf=25 OUT.mp4
ffmpeg version N-110223-gb18a9c2971-20230410 Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 12.2.0 (crosstool-NG 1.25.0.152_89671bf)
 configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20230410
 libavutil 58. 6.100 / 58. 6.100
 libavcodec 60. 9.100 / 60. 9.100
 libavformat 60. 4.101 / 60. 4.101
 libavdevice 60. 2.100 / 60. 2.100
 libavfilter 9. 5.100 / 9. 5.100
 libswscale 7. 2.100 / 7. 2.100
 libswresample 4. 11.100 / 4. 11.100
 libpostproc 57. 2.100 / 57. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'IN.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: isommp42
 creation_time : 2023-03-17T13:51:19.000000Z
 com.android.version: 13
 com.android.capture.fps: 60.000000
 Duration: 00:01:16.64, start: 0.000000, bitrate: 26864 kb/s
 Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 26603 kb/s, 29.95 fps, 120 tbr, 90k tbn (default)
 Metadata:
 creation_time : 2023-03-17T13:51:19.000000Z
 handler_name : VideoHandle
 vendor_id : [0][0][0][0]
 Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
 Metadata:
 creation_time : 2023-03-17T13:51:19.000000Z
 handler_name : SoundHandle
 vendor_id : [0][0][0][0]
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
 Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
x265 [info]: HEVC encoder version 3.5+95-38cf1c379
x265 [info]: build info [Windows][GCC 12.2.0][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [info]: Main profile, Level-5 (Main tier)
x265 [info]: Thread pool created using 16 threads
x265 [info]: Slices : 1
x265 [info]: frame threads / pool features : 4 / wpp(17 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 3
x265 [info]: Keyframe min / max / scenecut / bias : 25 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb : 1 / 1 / 0
x265 [info]: References / ref-limit cu / depth : 3 / off / on
x265 [info]: AQ: mode / str / qg-size / cu-tree : 2 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress : CRF-25.0 / 0.60
x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip mode=1 signhide tmvp
x265 [info]: tools: b-intra strong-intra-smoothing lslices=6 deblock sao
Output #0, mp4, to 'OUT.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: isommp42
 com.android.capture.fps: 60.000000
 com.android.version: 13
 encoder : Lavf60.4.101
 Stream #0:0(eng): Video: hevc (hev1 / 0x31766568), yuv420p(tv, bt709, progressive), 1920x1080, q=2-31, 120 fps, 15360 tbn (default)
 Metadata:
 creation_time : 2023-03-17T13:51:19.000000Z
 handler_name : VideoHandle
 vendor_id : [0][0][0][0]
 encoder : Lavc60.9.100 libx265
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
 Metadata:
 creation_time : 2023-03-17T13:51:19.000000Z
 handler_name : SoundHandle
 vendor_id : [0][0][0][0]
[vost#0:0/libx265 @ 00000249776f1440] More than 1000 frames duplicated40.0kbits/s dup=991 drop=0 speed=0.484x
frame= 9197 fps= 52 q=37.0 Lsize= 32338kB time=00:01:16.61 bitrate=3457.6kbits/s dup=6902 drop=0 speed=0.43x
video:29752kB audio:2393kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 0.600966%
x265 [info]: frame I: 79, Avg QP:25.98 kb/s: 25459.52
x265 [info]: frame P: 2332, Avg QP:31.54 kb/s: 9763.15
x265 [info]: frame B: 6786, Avg QP:36.46 kb/s: 653.28
x265 [info]: Weighted P-Frames: Y:5.5% UV:5.3%

encoded 9197 frames in 177.98s (51.68 fps), 3176.26 kb/s, Avg QP:35.12



-
How to take frames in real-time in a RTSP streaming ?
30 juin 2018, par guijobI’m trying to grab frames with no delays using
javacv
and I’m kind of confusing how to do it and howjavacv
and other stuff properly work under the hoods.In my example, I have a RTSP streaming running with following configurations :
Codec: H.264
Frame Size: 1280x720
Maximum Frame Rate: 60 fpsIn order to make it happen, I’ve made a thread like following :
public class TakeFrameFromStreamingThread implements Runnable {
private CircularFifoQueue queue;
private Camera camera;
private FFmpegFrameGrabber grabber = null;
public TakeFrameFromStreamingThread(CircularFifoQueue queue, Camera camera) {
try {
this.queue = queue;
this.camera = camera;
this.initGrabber(camera);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
while (true) {
if (grabber == null) {
initGrabber(camera); // connect
}
Frame frame = null;
frame = grabber.grabImage();
if (frame != null) {
this.queue.add(frame);
} else { // when frame == null then connection has been lost
initGrabber(camera); // reconnect
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void initGrabber(Camera camera) throws Exception {
grabber = new FFmpegFrameGrabber(camera.getURL()); // rtsp url
grabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
grabber.setOption("rtsp_transport", "tcp");
grabber.setFrameRate(60);
grabber.setImageWidth(camera.getResolution().getWidth());
grabber.setImageHeight(camera.getResolution().getHeight());
grabber.start();
}
}And it seems to work. Anytime I need a frame I
pool
thisqueue
from my main thread.I’ve ended up with this solution solving another issue. I was getting stuck why does calling
grabImage()
every time I need a frame has returned just next frame instead of a real-time frame from streaming.By this solution, I’m guessing there is a buffer which
javacv
(orffmpeg
idk) fills with frames and thengrabImage()
just get a frame from this buffer. So it’s my first question :1) Is that right ? Does
ffmpeg
relies on a buffer to store frames and thengrab()
just get it from there ?Well, if that is a truth, then this buffer must be filled at some rate and, of course, if this rate is greater than my
grabImage()
calls rate, eventually I’ll lose my real-time feature and soon I’ll be even losing frames once buffer gets completely filled.In this scenario, my
grabImage()
takes about 50 ms, which gives me 20 fps rate getting frames from this buffer. Hence, I need to make sureffmpeg
is receiving frames at most 20 fps. So here’s my second question :2) How to know and change
ffmpeg
buffer rate ? I’m guessing it’s getting filled at a same rate of streaming (60 fps) or from propertygrabber.setFrameRate()
. At all, I’m not sure if I should use grabber setters with same values from source streaming. -
Revision 6723e34224 : Merge "fix permissions on cpplint.py (0644->0755)" into experimental
4 mai 2013, par James ZernMerge "fix permissions on cpplint.py (0644->0755)" into experimental