
Recherche avancée
Autres articles (64)
-
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 ;
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
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
Sur d’autres sites (12974)
-
ffmpeg overlay png on mp4 on specific time
2 octobre 2018, par Lina Sharifi MoghaddamI am trying to overlay an image on mp4 video from second 3 to the end.
I am using the belowffmpeg -i out.mp4 -i scaledSquare.png -filter_complex " [0:v][1] overlay=100:100:enable=’gte(t,3)’" -y test.mp4
Output is a below, test.mp4 does not have the overlayed shape
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.12.100
Duration: 00:00:05.43, start: 0.000000, bitrate: 372 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], 40214 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, png_pipe, from 'scaledSquare.png':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: png, rgba(pc), 900x450 [SAR 1:2 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 (h264) -> overlay:main (graph 0)
Stream #1:0 (png) -> overlay:overlay (graph 0)
overlay (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7f95f0001800] using SAR=1/1
[libx264 @ 0x7f95f0001800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f95f0001800] profile High, level 5.1
[libx264 @ 0x7f95f0001800] 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=25 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
Output #0, mp4, to 'test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.12.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc58.18.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc58.18.100 aac
frame= 1 fps=0.0 q=28.0 Lsize= 246kB time=00:00:05.38 bitrate= 374.4kbits/s speed=18.4x
video:195kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.736449%
[libx264 @ 0x7f95f0001800] frame I:1 Avg QP:27.64 size:199019
[libx264 @ 0x7f95f0001800] mb I I16..4: 21.9% 56.5% 21.6%
[libx264 @ 0x7f95f0001800] 8x8 transform intra:56.5%
[libx264 @ 0x7f95f0001800] coded y,uvDC,uvAC intra: 15.5% 0.6% 0.5%
[libx264 @ 0x7f95f0001800] i16 v,h,dc,p: 25% 75% 0% 0%
[libx264 @ 0x7f95f0001800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 76% 9% 14% 0% 0% 0% 0% 0% 0%
[libx264 @ 0x7f95f0001800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 27% 9% 2% 4% 4% 5% 3% 5%
[libx264 @ 0x7f95f0001800] i8c dc,h,v,p: 97% 3% 0% 0%
[libx264 @ 0x7f95f0001800] kb/s:39803.80
[aac @ 0x7f95f0003000] Qavg: 4519.618But if I remove the enable option, the shaped is overlayed for the whole duration of the video properly :
ffmpeg -i out.mp4 -i scaledSquare.png -filter_complex " [0:v][1] overlay=100:100" -y test2.mp4
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.12.100
Duration: 00:00:05.43, start: 0.000000, bitrate: 372 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], 40214 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, png_pipe, from 'scaledSquare.png':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: png, rgba(pc), 900x450 [SAR 1:2 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 (h264) -> overlay:main (graph 0)
Stream #1:0 (png) -> overlay:overlay (graph 0)
overlay (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7fb361801800] using SAR=1/1
[libx264 @ 0x7fb361801800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fb361801800] profile High, level 5.1
[libx264 @ 0x7fb361801800] 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=25 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
Output #0, mp4, to 'test2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.12.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc58.18.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc58.18.100 aac
frame= 1 fps=0.0 q=28.0 Lsize= 244kB time=00:00:05.38 bitrate= 370.6kbits/s speed=20.8x
video:193kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.744060%
[libx264 @ 0x7fb361801800] frame I:1 Avg QP:27.56 size:196459
[libx264 @ 0x7fb361801800] mb I I16..4: 23.5% 55.3% 21.2%
[libx264 @ 0x7fb361801800] 8x8 transform intra:55.3%
[libx264 @ 0x7fb361801800] coded y,uvDC,uvAC intra: 15.4% 0.8% 0.6%
[libx264 @ 0x7fb361801800] i16 v,h,dc,p: 23% 76% 0% 0%
[libx264 @ 0x7fb361801800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 79% 8% 12% 0% 0% 0% 0% 0% 1%
[libx264 @ 0x7fb361801800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 42% 27% 8% 2% 4% 4% 5% 3% 5%
[libx264 @ 0x7fb361801800] i8c dc,h,v,p: 95% 4% 1% 0%
[libx264 @ 0x7fb361801800] kb/s:39291.80
[aac @ 0x7fb361804a00] Qavg: 4519.618as additional test I did :
ffmpeg -i out.mp4 -i scaledSquare.png -filter_complex " [0:v][1] overlay=100:100:enable=’gte(t,0)’" -y test3.mp4
which supposed to add the shape from all times greater than 0, which works fine , shape is getting added for the whole duration of output.
So I am not sure why the enable option does not work when I specify something like enable=’gte(t,3)’ or enable=’between(t,1,3)’ here.
and just for additional information :
I created the original mp4 file (out.mp4) by adding an mp3 file to one png image as belowffmpeg -i images/08.png -i audio_123e4567-e89b-12d3-a456-426655440000.mp3 -pix_fmt yuv420p out.mp4
-
Anomalie #3556 : Message "Le statut a déjà été modifié" sur actualisation de la page après avoir m...
28 septembre 2018Est-ce qu’on pourrait profiter de la rencontre SPIP Dromen 2018 pour reparler en live de ce problème ?
Merci ;-)
-
Failed encoding Carrierwave-video FFMPEG
12 septembre 2018, par Cole PhiperI’m using Carrierwave-video and Carrierwave-ffmpegthumbnailer. The problem I am having, is the transcoder is now refusing to work & I can’t locate the origin of the error. I tried removing some of the custom settings, but nothing seems to work. How can I fix the transcoder to allow video uploads ?
story_video_uploader.rb
require 'mime/types'
class StoryVideoUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
include CarrierWave::Video
include CarrierWave::Video::Thumbnailer
# include CarrierWave::FFMPEG
# Choose what kind of storage to use for this uploader:
storage :postgresql_lo
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
version :thumb do
process thumbnail: [{ format: 'png', quality: 10, size: 200, strip: false, logger: Rails.logger }]
def full_filename(for_file)
png_name(for_file, version_name)
end
process :apply_png_content_type
end
version :mp4 do
process encode_video: [:mp4, resolution: '1024x1366', preserve_aspect_ratio: :width, watermark: { path: File.join(Rails.root, 'app/assets/images/', 'logo_94x70_WHITE.png'), position: :bottom_right, pixles_from_edge: 10 }]
end
def png_name(for_file, version_name)
%Q{#{version_name}_#{for_file.chomp(File.extname(for_file))}.png}
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_white_list
[/png\Z/, /jpe?g\Z/, /gif\Z/, /mp4\Z/, /mov\Z/, /ogg\Z/, /webm\Z/, /avi\Z/, /3gp\Z/, /mkv\Z/]
end
def apply_png_content_type(*)
file.instance_variable_set(:@content_type, 'image/png')
end
endRails Console and Error output
irb(main):020:0> >> story.story_video = File.open("/home/cole/Downloads/Video_Of_People_Walking.mp4")
Running....ffmpegthumbnailer -i "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/thumb/Video_Of_People_Walking.mp4" -o "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/thumb/tmpfile.png" -c png -q 10 -s 200
Success!
I, [2018-09-11T18:17:58.675474 #2522] INFO -- : Running transcoding...
["/usr/bin/ffmpeg", "-y", "-i", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4", "-vcodec", "libx264", "-acodec", "aac", "-s", "1024x576", "-r", "30", "-strict", "-2", "-map_metadata", "-1", "-vf", "\"movie=/home/cole/Desktop/TestApp/app/assets/images/logo_94x70_WHITE.png [logo]; [in][logo] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]\"", "-aspect", "1.7777777777777777", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/tmpfile.mp4"]
E, [2018-09-11T18:18:00.233135 #2522] ERROR -- : Failed encoding...
["/usr/bin/ffmpeg", "-y", "-i", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4", "-vcodec", "libx264", "-acodec", "aac", "-s", "1024x576", "-r", "30", "-strict", "-2", "-map_metadata", "-1", "-vf", "\"movie=/home/cole/Desktop/TestApp/app/assets/images/logo_94x70_WHITE.png [logo]; [in][logo] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]\"", "-aspect", "1.7777777777777777", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/tmpfile.mp4"]
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomavc1
creation_time : 2017-03-09T02:02:54.000000Z
Duration: 00:00:19.19, start: 0.000000, bitrate: 3454 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3451 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2017-03-09T02:02:54.000000Z
handler_name : L-SMASH Video Handler
encoder : AVC Coding
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[AVFilterGraph @ 0x56309b654840] No such filter: '"movie'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
Errors: encoded file is invalid.
FFMPEG::Error: Failed encoding.Errors: encoded file is invalid. Full output: ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomavc1
creation_time : 2017-03-09T02:02:54.000000Z
Duration: 00:00:19.19, start: 0.000000, bitrate: 3454 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3451 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2017-03-09T02:02:54.000000Z
handler_name : L-SMASH Video Handler
encoder : AVC Coding
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[AVFilterGraph @ 0x56309b654840] No such filter: '"movie'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
from (irb):20
irb(main):021:0>