
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (88)
-
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 (11912)
-
FFmpeg - Concat videos with different time base [duplicate]
3 mai 2019, par XysThis question already has an answer here :
I’m trying to concat videos with the concat demuxer, but it does not work when using one video ("video2.mp4" below). By does not work, I mean playing the concatenated video on a player will work until the second video part starts (it just cannot read the video anymore). It works with the concat filter though. They are both mp4 videos, so I think it’s because of the time base ? I can concat other videos with the concat demuxer and it works fine (even with different resolutions/bitrate). It only happens when trying to concat "video2.mp4".
Also, I have a lot of warning/errors like this, probably when ffmpeg starts concatenating the 2nd video :
[mp4 @ 0x7f847a814800] Non-monotonous DTS in output stream 0:0; previous: 906906, current: 302359; changing to 906907. This may result in incorrect timestamps in the output file.
What would be the best way to have a minimum concat time ? Do I really need to use the concat filter or can I change the time base of "video1.mp4" if it’s really the problem ?
Any help would be appreciated, thanks !
Video 1 :
ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video1.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2016-08-17T22:50:35.000000Z
Duration: 00:00:10.11, start: 0.000000, bitrate: 38018 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1696x848, 37832 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : SoundHandleVideo 2 :
ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video2.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2017-01-06T22:30:23.000000Z
Duration: 00:00:08.19, start: 0.000000, bitrate: 101474 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 4096x2048 [SAR 1:1 DAR 2:1], 101549 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2017-01-06T22:30:23.000000Z
handler_name : ?Mainconcept Video Media Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
creation_time : 2017-01-06T22:30:23.000000Z
handler_name : #Mainconcept MP4 Sound Media HandlerFFMpeg Command :
ffmpeg -f concat -safe 0 -i concat.txt -c copy result.mp4
concat.txt :
file '/path/to/video1.mp4'
file '/path/to/video2.mp4'Command result :
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbd8b808c00] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'concat.txt':
Duration: N/A, start: 0.000000, bitrate: 38021 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1696x848, 37832 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : SoundHandle
Output #0, mp4, to 'result.mp4':
Metadata:
encoder : Lavf57.56.100
Stream #0:0(eng): Video: h264 (Baseline) ([33][0][0][0] / 0x0021), yuv420p, 1696x848, q=2-31, 37832 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, 189 kb/s
Metadata:
creation_time : 2016-08-18T00:02:24.000000Z
handler_name : SoundHandle
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 112 fps=0.0 q=-1.0 size= 12701kB time=00:00:03.70 bitrate=28092.2kbits/s speed= 7.4x
frame= 151 fps=151 q=-1.0 size= 18853kB time=00:00:05.00 bitrate=30857.5kbits/s speed= 5x
frame= 224 fps=149 q=-1.0 size= 30042kB time=00:00:07.44 bitrate=33074.8kbits/s speed=4.95x
frame= 268 fps=134 q=-1.0 size= 36596kB time=00:00:08.90 bitrate=33650.8kbits/s speed=4.44x
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbd8a808000] Auto-inserting h264_mp4toannexb bitstream filter.9x
[mp4 @ 0xb545d000] Non-monotonous DTS in output stream 0:1; previous: 484352, current: 445939; changing to 484353. This may result in incorrect timestamps in the output file.
[concat @ 0xb545c400] DTS 304057 < 906906 out of order
[mp4 @ 0xb545d000] Non-monotonous DTS in output stream 0:0; previous: 906906, current: 304057; changing to 906907. This may result in incorrect timestamps in the output file.
[mp4 @ 0xb545d000] Non-monotonous DTS in output stream 0:1; previous: 484353, current: 446963; changing to 484354. This may result in incorrect timestamps in the output file.
...
... like 100 DTS errors ...
...
[mp4 @ 0xb545d000] Non-monotonous DTS in output stream 0:0; previous: 907150, current: 548301; changing to 907151. This may result in incorrect timestamps in the output file.
frame= 548 fps=169 q=-1.0 Lsize= 148399kB time=00:00:18.28 bitrate=66493.7kbits/s speed=5.64x
video:148027kB audio:359kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.008622%Thank you in advance !
-
QuTip Example 'bloch-sphere-animation' - video renders blank
15 juillet 2018, par damien murphy.On MacOSX Using Python3 running the following example code provided without modification : https://github.com/qutip/qutip-notebooks/blob/master/examples/bloch-sphere-animation.ipynb
I get a blank video and no errors.
I have installed libav and ffmpeg so I am not sure what else is missing with any error.
What codec did you install on mac when running these samples ?
Looking at the source of qutip I can see what it is using to render the video : https://github.com/qutip/qutip/blob/master/qutip/ipynbtools.py#L392
anim.save(name + '.mp4', fps=10, writer="avconv", codec="libx264")
I have avconv on the command line working without errors
This is the debug outout of matploylib.animation
INFO:matplotlib.animation:Animation.save using DEBUG:matplotlib.animation:frame
size in pixels is 576 x 576 INFO:matplotlib.animation:MovieWriter.run :
running command : [’avconv’, ’-f’, ’rawvideo’, ’-vcodec’, ’rawvideo’,
’-s’, ’576x576’, ’-pix_fmt’, ’rgba’, ’-r’, ’10’, ’-i’, ’pipe :’,
’-vcodec’, ’libx264’, ’-y’, ’movie.mp4’]
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter.grab_frame : Grabbing frame.
DEBUG:matplotlib.animation:MovieWriter — Command stdout : b’’
DEBUG:matplotlib.animation:MovieWriter — Command stderr : b"avconv
version 12.3, Copyright (c) 2000-2018 the Libav developers\n built on
Feb 13 2018 11:17:07 with Apple LLVM version 9.0.0
(clang-900.0.39.2)\n[rawvideo @ 0x7f963c000000] Estimating duration
from bitrate, this may be inaccurate\nInput #0, rawvideo, from
’pipe :’ :\n Duration : N/A, start : 0.000000, bitrate : N/A\n Stream0:0 : Video : rawvideo\n rgba, 576x576\n 10 fps, 10 tbn\nStream mapping :\n Stream #0:0 -> #0:0 (rawvideo (native) -> h264
(libx264))\nPress ctrl-c to stop encoding\n[libx264 @ 0x7f963e001800]
using cpu capabilities : MMX2 SSE2Fast SSSE3 SSE4.2 AVX\n[libx264 @
0x7f963e001800] profile High, level 2.2\n[libx264 @ 0x7f963e001800]
264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft
2003-2017 - http://www.videolan.org/x264.html - options : cabac=1 ref=3
deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00
mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0
deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12
lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0
bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250
keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
aq=1:1.00\nOutput #0, mp4, to ’movie.mp4’ :\n Metadata :\n encoder
: Lavf57.7.2\n Stream #0:0 : Video : h264 [[33][0][0][0] / 0x0021]\n
yuv420p, 576x576, q=2-31\n 10 fps, 10 tbn\n Metadata :\n
encoder : Lavc57.25.0 libx264\n Side data :\n cpb :
bitrate max/min/avg : 0/0/0 buffer size : 0 vbv_delay : -1\nframe= 6
fps= 0 q=0.0 size= 0kB time=10000000000.00 bitrate=
0.0kbits/s \rframe= 10 fps= 8 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s \rframe= 13 fps= 7
q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s
\rframe= 16 fps= 7 q=0.0 size= 0kB time=10000000000.00
bitrate= 0.0kbits/s \rframe= 19 fps= 6 q=0.0 size= 0kB
time=10000000000.00 bitrate= 0.0kbits/s \rframe= 22 fps= 6
q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s
\rframe= 26 fps= 6 q=0.0 size= 0kB time=10000000000.00
bitrate= 0.0kbits/s \rframe= 30 fps= 6 q=0.0 size= 0kB
time=10000000000.00 bitrate= 0.0kbits/s \rframe= 33 fps= 6
q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s
\rframe= 36 fps= 6 q=0.0 size= 0kB time=10000000000.00
bitrate= 0.0kbits/s \rframe= 39 fps= 6 q=0.0 size= 0kB
time=10000000000.00 bitrate= 0.0kbits/s \rframe= 42 fps= 6
q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s
\rframe= 45 fps= 6 q=0.0 size= 0kB time=10000000000.00
bitrate= 0.0kbits/s \rframe= 48 fps= 6 q=0.0 size= 0kB
time=10000000000.00 bitrate= 0.0kbits/s \rframe= 51 fps= 6
q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbits/s
\rframe= 55 fps= 6 q=0.0 size= 0kB time=10000000000.00
bitrate= 0.0kbits/s \rframe= 59 fps= 6 q=25.0 size= 1kB
time=10000000000.00 bitrate= 0.0kbits/s \rframe= 63 fps= 6
q=25.0 size= 1kB time=0.40 bitrate= 19.8kbits/s \rframe=
67 fps= 6 q=25.0 size= 1kB time=0.80 bitrate= 10.9kbits/s
\rframe= 71 fps= 6 q=25.0 size= 1kB time=1.20 bitrate=
7.9kbits/s \rframe= 75 fps= 6 q=25.0 size= 1kB time=1.60 bitrate= 6.4kbits/s \rframe= 79 fps= 6 q=25.0 size= 1kB
time=2.00 bitrate= 5.5kbits/s \rframe= 82 fps= 6 q=25.0 size=
1kB time=2.30 bitrate= 5.0kbits/s \rframe= 86 fps= 6 q=25.0
size= 2kB time=2.70 bitrate= 4.6kbits/s \rframe= 90 fps=
6 q=25.0 size= 2kB time=3.10 bitrate= 4.2kbits/s \rframe=
93 fps= 6 q=25.0 size= 2kB time=3.40 bitrate= 4.0kbits/s
\rframe= 97 fps= 6 q=25.0 size= 2kB time=3.80 bitrate=
3.8kbits/s \rframe= 101 fps= 6 q=25.0 size= 2kB time=4.20 bitrate= 3.6kbits/s \rframe= 105 fps= 6 q=25.0 size= 2kB
time=4.60 bitrate= 3.4kbits/s \rframe= 109 fps= 6 q=25.0 size=
2kB time=5.00 bitrate= 3.3kbits/s \rframe= 112 fps= 6 q=25.0
size= 2kB time=5.30 bitrate= 3.2kbits/s \rframe= 116 fps=
6 q=25.0 size= 2kB time=5.70 bitrate= 3.2kbits/s \rframe=
120 fps= 6 q=25.0 size= 2kB time=6.10 bitrate= 3.1kbits/s
\rframe= 123 fps= 6 q=25.0 size= 2kB time=6.40 bitrate=
3.0kbits/s \rframe= 126 fps= 6 q=25.0 size= 2kB time=6.70 bitrate= 3.0kbits/s \rframe= 129 fps= 6 q=25.0 size= 2kB
time=7.00 bitrate= 2.9kbits/s \rframe= 132 fps= 6 q=25.0 size=
3kB time=7.30 bitrate= 2.9kbits/s \rframe= 135 fps= 6 q=25.0
size= 3kB time=7.60 bitrate= 2.8kbits/s \rframe= 138 fps=
6 q=25.0 size= 3kB time=7.90 bitrate= 2.8kbits/s \rframe=
141 fps= 6 q=25.0 size= 3kB time=8.20 bitrate= 2.8kbits/s
\rframe= 144 fps= 6 q=25.0 size= 3kB time=8.50 bitrate=
2.7kbits/s \rframe= 148 fps= 6 q=25.0 size= 3kB time=8.90 bitrate= 2.7kbits/s \rframe= 150 fps= 6 q=-1.0 Lsize= 7kB
time=14.70 bitrate= 4.1kbits/s \r\nvideo:4kB audio:0kB other
streams:0kB global headers:0kB muxing overhead : 74.948143%\n[libx264 @
0x7f963e001800] frame I:1 Avg QP : 6.00 size : 112\n[libx264 @
0x7f963e001800] frame P:38 Avg QP : 6.21 size : 30\n[libx264 @
0x7f963e001800] frame B:111 Avg QP : 9.67 size : 22\n[libx264 @
0x7f963e001800] consecutive B-frames : 1.3% 0.0% 0.0%
98.7%\n[libx264 @ 0x7f963e001800] mb I I16..4 : 100.0% 0.0% 0.0%\n[libx264 @ 0x7f963e001800] mb P I16..4 : 0.0% 0.0% 0.0% P16..4 : 0.0% 0.0% 0.0% 0.0% 0.0% skip:100.0%\n[libx264 @
0x7f963e001800] mb B I16..4 : 0.0% 0.0% 0.0% B16..8 : 0.0% 0.0%
0.0% direct : 0.0% skip:100.0%\n[libx264 @ 0x7f963e001800] 8x8 transform intra:0.0%\n[libx264 @ 0x7f963e001800] coded y,uvDC,uvAC
intra : 0.0% 0.0% 0.0% inter : 0.0% 0.0% 0.0%\n[libx264 @
0x7f963e001800] i16 v,h,dc,p : 97% 0% 3% 0%\n[libx264 @
0x7f963e001800] i8c dc,h,v,p : 100% 0% 0% 0%\n[libx264 @
0x7f963e001800] Weighted P-Frames : Y:0.0% UV:0.0%\n[libx264 @
0x7f963e001800] kb/s:1.95\n" -
FFMpeg frame drop when merging a image sequence and overlaying during video creation process
29 juillet 2018, par KillerI have reviewed both the answer as mentioned in Similar Issue But still, I am having some frame drops.
Here is what I was doing :
Question 1
Question 2Currently, I am showing a few images (one after another each with
duration ’x’) on a sample background along with a music playing in the
background.This is the command I am using to get the desired functionality :
ffmpeg
-hide_banner
-y
-loop 1
-r 1
-i /data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_WEDDING_FRAME.png
-r 1/4
-i /data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_SELECTED_IMAGE_%d.png
-filter_complex overlay=(W-w)/2:(H-h)/2,drawtext=text=WedMojo:fontcolor=white:fontfile=/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Files/FONT_WED_MOJO_WEDDING.ttf:fontsize=30:x=w-tw-20:y=h-th-20
-c:v libx264
-profile:v high
-crf 17 -pix_fmt yuv420p
-preset ultrafast
-t 16 -strict experimental
-r 24
/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Videos/VID_WED_MOJO_WEDDING_OUTPUT.mp4note : -r 1/4 for each image to be shown for 4 sec.
I have checked the format of the images. All are the same. Also on changing preset and other values, the problem seems to be same. Log states
drop=0
, however, there are gaps as the overlay image is removed in between.Video sample with the duration set to 4 i.e each image to be set for 4 seconds.
-> -> Video Output with 4 sec duration for each image
However, there are no frame drops when the duration set to 1 or 2.
-> -> Video Output with 2 sec duration for each image, ignore zoompan
Log details :
D/CreateVideoActivity: COMMAND: -hide_banner -y -loop 1 -r 1 -i /data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_WEDDING_FRAME.png -r 1/4 -i /data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_SELECTED_IMAGE_%d.png -filter_complex overlay=(W-w)/2:(H-h)/2,drawtext=text=WedMojo:fontcolor=white:fontfile=/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Files/FONT_WED_MOJO_WEDDING.ttf:fontsize=30:x=w-tw-20:y=h-th-20 -c:v libx264 -profile:v high -crf 17 -pix_fmt yuv420p -preset ultrafast -t 16 -strict experimental -r 24 /data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Videos/VID_WED_MOJO_WEDDING_OUTPUT.mp4
D/SurfaceUtils: disconnecting from surface 0x8a091008, reason disconnectFromSurface
D/FFmpeg: Running publishing updates method
D/CreateVideoActivity: onProgress() => Input #0, png_pipe, from '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_WEDDING_FRAME.png':
onProgress() => Duration: N/A, bitrate: N/A
onProgress() => Stream #0:0: Video: png, rgb24(pc), 1280x720, 25 fps, 25 tbr, 25 tbn, 25 tbc
onProgress() => Input #1, image2, from '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_SELECTED_IMAGE_%d.png':
onProgress() => Duration: 00:00:00.16, start: 0.000000, bitrate: N/A
D/CreateVideoActivity: onProgress() => Stream #1:0: Video: png, rgb24(pc), 600x600 [SAR 1:1 DAR 1:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
onProgress() => Stream mapping:
onProgress() => Stream #0:0 (png) -> overlay:main
onProgress() => Stream #1:0 (png) -> overlay:overlay
onProgress() => drawtext -> Stream #0:0 (libx264)
onProgress() => Press [q] to stop, [?] for help
D/CreateVideoActivity: onProgress() => [libx264 @ 0xb0857c00] using cpu capabilities: none!
D/CreateVideoActivity: onProgress() => [libx264 @ 0xb0857c00] profile Constrained Baseline, level 3.1
onProgress() => [libx264 @ 0xb0857c00] 264 - core 152 r2851M ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=24 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
onProgress() => Output #0, mp4, to '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Videos/VID_WED_MOJO_WEDDING_OUTPUT.mp4':
D/CreateVideoActivity: onProgress() => Metadata:
D/CreateVideoActivity: onProgress() => encoder : Lavf58.12.100
onProgress() => Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720, q=-1--1, 24 fps, 12288 tbn, 24 tbc (default)
onProgress() => Metadata:
D/CreateVideoActivity: onProgress() => encoder : Lavc58.18.100 libx264
onProgress() => Side data:
onProgress() => cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
D/CreateVideoActivity: onProgress() => frame= 96 fps=0.0 q=6.0 size= 256kB time=00:00:03.79 bitrate= 553.2kbits/s dup=93 drop=0 speed=3.94x
D/CreateVideoActivity: onProgress() => frame= 120 fps= 79 q=6.0 size= 512kB time=00:00:04.79 bitrate= 875.4kbits/s dup=116 drop=0 speed=3.13x
D/CreateVideoActivity: onProgress() => frame= 192 fps= 91 q=6.0 size= 512kB time=00:00:07.79 bitrate= 538.4kbits/s dup=185 drop=0 speed=3.68x
D/CreateVideoActivity: onProgress() => frame= 216 fps= 79 q=6.0 size= 768kB time=00:00:08.79 bitrate= 715.7kbits/s dup=208 drop=0 speed=3.21x
D/CreateVideoActivity: onProgress() => frame= 288 fps= 88 q=6.0 size= 1024kB time=00:00:11.79 bitrate= 711.4kbits/s dup=278 drop=0 speed= 3.6x
D/CreateVideoActivity: onProgress() => frame= 312 fps= 82 q=6.0 size= 1536kB time=00:00:12.79 bitrate= 983.7kbits/s dup=301 drop=0 speed=3.37x
D/CreateVideoActivity: onProgress() => frame= 384 fps= 86 q=6.0 size= 1536kB time=00:00:15.79 bitrate= 796.8kbits/s dup=370 drop=0 speed=3.52x
D/CreateVideoActivity: onProgress() => frame= 384 fps= 78 q=-1.0 Lsize= 1783kB time=00:00:15.95 bitrate= 915.4kbits/s dup=393 drop=0 speed=3.24x
D/CreateVideoActivity: onProgress() => video:1781kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.130068%
D/CreateVideoActivity: onProgress() => [libx264 @ 0xb0857c00] frame I:2 Avg QP: 9.00 size:152054
onProgress() => [libx264 @ 0xb0857c00] frame P:382 Avg QP: 6.69 size: 3976
onProgress() => [libx264 @ 0xb0857c00] mb I I16..4: 100.0% 0.0% 0.0%
onProgress() => [libx264 @ 0xb0857c00] mb P I16..4: 0.5% 0.0% 0.0% P16..4: 10.7% 0.0% 0.0% 0.0% 0.0% skip:88.7%
onProgress() => [libx264 @ 0xb0857c00] coded y,uvDC,uvAC intra: 56.4% 68.7% 52.5% inter: 4.2% 2.0% 1.5%
onProgress() => [libx264 @ 0xb0857c00] i16 v,h,dc,p: 49% 25% 15% 11%
onProgress() => [libx264 @ 0xb0857c00] i8c dc,h,v,p: 38% 28% 23% 11%
onProgress() => [libx264 @ 0xb0857c00] kb/s:911.53
D/CreateVideoActivity: onSuccess() => Input #0, png_pipe, from '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_WEDDING_FRAME.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 1280x720, 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, image2, from '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Images/IMG_WED_MOJO_SELECTED_IMAGE_%d.png':
Duration: 00:00:00.16, start: 0.000000, bitrate: N/A
Stream #1:0: Video: png, rgb24(pc), 600x600 [SAR 1:1 DAR 1:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 (png) -> overlay:main
Stream #1:0 (png) -> overlay:overlay
drawtext -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
[libx264 @ 0xb0857c00] using cpu capabilities: none!
[libx264 @ 0xb0857c00] profile Constrained Baseline, level 3.1
[libx264 @ 0xb0857c00] 264 - core 152 r2851M ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=24 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, mp4, to '/data/user/0/mojo.wed.com.wedmojo/cache/wedding_video/Videos/VID_WED_MOJO_WEDDING_OUTPUT.mp4':
Metadata:
encoder : Lavf58.12.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720, q=-1--1, 24 fps, 12288 tbn, 24 tbc (default)
Metadata:
encoder : Lavc58.18.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame= 96 fps=0.0 q=6.0 size= 256kB time=00:00:03.79 bitrate= 553.2kbits/s dup=93 drop=0 speed=3.94x
frame= 120 fps= 79 q=6.0 size= 512kB time=00:00:04.79 bitrate= 875.4kbits/s dup=116 drop=0 speed=3.13x
frame= 192 fps= 91 q=6.0 size= 512kB time=00:00:07.79 bitrate= 538.4kbits/s dup=185 drop=0 speed=3.68x
frame= 216 fps= 79 q=6.0 size= 768kB time=00:00:08.79 bitrate= 715.7kbits/s dup=208 drop=0 speed=3.21x
frame= 288 fps= 88 q=6.0 size= 1024kB time=00:00:11.79 bitrate= 711.4kbits/s dup=278 drop=0 speed= 3.6x
frame= 312 fps= 82 q=6.0 size= 1536kB time=00:00:12.79 bitrate= 983.7kbits/s dup=301 drop=0 speed=3.37x
frame= 384 fps= 86 q=6.0 size= 1536kB time=00:00:15.79 bitrate= 796.8kbits/s dup=370 drop=0 speed=3.52x
frame= 384 fps= 78 q=-1.0 Lsize= 1783kB time=00:00:15.95 bitrate= 915.4kbits/s dup=393 drop=0 speed=3.24x
video:1781kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.130068%
[libx264 @ 0xb0857c00] frame I:2 Avg QP: 9.00 size:152054
[libx264 @ 0xb0857c00] frame P:382 Avg QP: 6.69 size: 3976
[libx264 @ 0xb0857c00] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0xb0857c00] mb P I16..4: 0.5% 0.0% 0.0% P16..4: 10.7% 0.0% 0.0% 0.0% 0.0% skip:88.7%
[libx264 @ 0xb0857c00] coded y,uvDC,uvAC intra: 56.4% 68.7% 52.5% inter: 4.2% 2.0% 1.5%
[libx264 @ 0xb0857c00] i16 v,h,dc,p: 49% 25% 15% 11%
[libx264 @ 0xb0857c00] i8c dc,h,v,p: 38% 28% 23% 11%
[libx264 @ 0xb0857c00] kb/s:911.53
I/OMXClient: Treble IOmx obtained
D/SurfaceUtils: connecting to surface 0x8c6ef008, reason connectToSurface
I/MediaCodec: [OMX.google.h264.decoder] setting surface generation to 23113736
D/SurfaceUtils: disconnecting from surface 0x8c6ef008, reason connectToSurface(reconnect)
D/SurfaceUtils: connecting to surface 0x8c6ef008, reason connectToSurface(reconnect)
E/ACodec: [OMX.google.h264.decoder] setPortMode on output to DynamicANWBuffer failed w/ err -1010
I/ACodec: codec does not support config priority (err -1010)
D/MediaCodec: [OMX.google.h264.decoder] setting dataspace on output surface to #104
D/SoftwareRenderer: setting dataspace on output surface to #104Let me know if any details required from my side. Your valuable suggestions are welcomed.