I have a webm file that I want to convert to a mp4 file. The result is a mp4 file with a different duration than the webm (much longer).

  • Webm file (via WeTransfer, example.webm, 421kb)

About the webm file

I'm creating the webm file using the browser's media recorder api. When playing, it shows a 4 seconds clip (as it should).

ffprobe -v error -show_format -show_streams example.webm 

Output:

[STREAM] index=0 codec_name=vp8 codec_long_name=On2 VP8 profile=0 codec_type=video codec_time_base=0/1 codec_tag_string=[0][0][0][0] codec_tag=0x0000 width=960 height=540 coded_width=960 coded_height=540 closed_captions=0 has_b_frames=0 sample_aspect_ratio=1:1 display_aspect_ratio=16:9 pix_fmt=yuv420p level=-99 color_range=unknown color_space=unknown color_transfer=unknown color_primaries=unknown chroma_location=unspecified field_order=progressive timecode=N/A refs=1 id=N/A r_frame_rate=1000/1 avg_frame_rate=0/0 time_base=1/1000 start_pts=0 start_time=0.000000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=N/A nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A DISPOSITION:default=1 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 TAG:language=eng TAG:alpha_mode=1 [/STREAM] [FORMAT] filename=example.webm nb_streams=1 nb_programs=0 format_name=matroska,webm format_long_name=Matroska / WebM start_time=0.000000 duration=N/A <------------ Noticed it size=431167 bit_rate=N/A <------------ Noticed it probe_score=100 TAG:encoder=Chrome [/FORMAT] 

Noticed that the duration is N/A so after browsing on the superuser community I saw a thread about a bug in that api regarding the duration but also found a solution in the answers that said simply to run ffmpeg on the file.

So I ran the following command:

ffmpeg -i example.webm example-n.webm 

Output:

 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 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 'example.webm': Metadata: encoder : Chrome Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0(eng): Video: vp8, yuv420p(progressive), 960x540, SAR 1:1 DAR 16:9, 1k tbr, 1k tbn, 1k tbc (default) Metadata: alpha_mode : 1 Stream mapping: Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9)) Press [q] to stop, [?] for help [libvpx-vp9 @ 0x7fb3a501dc00] v1.8.2-217-gbf3fe26f7 [libvpx-vp9 @ 0x7fb3a501dc00] Neither bitrate nor constrained quality specified, using default CRF of 32 Output #0, webm, to 'example-n.webm': Metadata: encoder : Lavf58.45.100 Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuv420p, 960x540 [SAR 1:1 DAR 16:9], q=-1--1, 1k fps, 1k tbn, 1k tbc (default) Metadata: alpha_mode : 1 encoder : Lavc58.91.100 libvpx-vp9 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A frame= 34 fps=0.0 q=0.0 size= 1kB time=00:00:00.31 bitrate= 13.2kbits/s frame= 45 fps= 43 q=0.0 size= 1kB time=00:00:00.70 bitrate= 5.9kbits/s frame= 56 fps= 36 q=0.0 size= 1kB time=00:00:01.09 bitrate= 3.8kbits/s frame= 67 fps= 32 q=0.0 size= 1kB time=00:00:01.47 bitrate= 2.8kbits/s frame= 78 fps= 30 q=0.0 size= 1kB time=00:00:01.88 bitrate= 2.2kbits/s frame= 89 fps= 29 q=0.0 size= 1kB time=00:00:02.29 bitrate= 1.8kbits/s frame= 100 fps= 28 q=0.0 size= 1kB time=00:00:02.67 bitrate= 1.6kbits/s frame= 111 fps= 27 q=0.0 size= 1kB time=00:00:03.05 bitrate= 1.4kbits/s frame= 113 fps= 21 q=0.0 Lsize= 58kB time=00:00:03.97 bitrate= 119.8kbits/s speed=0.727x video:57kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.312099% 

Running the same ffprobe command for the new webm file:

[FORMAT] filename=example-n.webm nb_streams=1 nb_programs=0 format_name=matroska,webm format_long_name=Matroska / WebM start_time=0.000000 duration=3.972000 <--- NOT N/A. 4 seconds - looks better. size=59473 bit_rate=119784 probe_score=100 TAG:ENCODER=Lavf58.45.100 [/FORMAT] 

Edit: but on the [STREAM] it still:

duration_ts=N/A duration=N/A bit_rate=N/A 

Converting to mp4

Running the command:

ffmpeg -i example.webm example-1.mp4 

Output:

 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 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 'example.webm': Metadata: encoder : Chrome Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0(eng): Video: vp8, yuv420p(progressive), 960x540, SAR 1:1 DAR 16:9, 1k tbr, 1k tbn, 1k tbc (default) Metadata: alpha_mode : 1 Stream mapping: Stream #0:0 -> #0:0 (vp8 (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 0x7fbb0f80b600] using SAR=1/1 [libx264 @ 0x7fbb0f80b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 0x7fbb0f80b600] profile High, level 5.2, 4:2:0, 8-bit [libx264 @ 0x7fbb0f80b600] 264 - core 161 r3015 4c2aafd - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - - 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 'example-1.mp4': Metadata: encoder : Lavf58.45.100 Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 960x540 [SAR 1:1 DAR 16:9], q=-1--1, 1k fps, 16k tbn, 1k tbc (default) Metadata: alpha_mode : 1 encoder : Lavc58.91.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A frame= 316 fps=0.0 q=33.0 size= 0kB time=00:00:00.25 bitrate= 1.5kbits/ frame= 672 fps=658 q=33.0 size= 0kB time=00:00:00.61 bitrate= 0.6kbits/ More than 1000 frames duplicated frame= 1060 fps=679 q=33.0 size= 0kB time=00:00:01.00 bitrate= 0.4kbits/ frame= 1442 fps=687 q=33.0 size= 0kB time=00:00:01.38 bitrate= 0.3kbits/ frame= 1816 fps=695 q=33.0 size= 0kB time=00:00:01.75 bitrate= 0.2kbits/ frame= 2195 fps=698 q=33.0 size= 256kB time=00:00:02.13 bitrate= 982.0kbits/ frame= 2572 fps=703 q=33.0 size= 256kB time=00:00:02.51 bitrate= 834.7kbits/ frame= 2948 fps=705 q=33.0 size= 256kB time=00:00:02.88 bitrate= 726.0kbits/ frame= 3332 fps=705 q=33.0 size= 256kB time=00:00:03.27 bitrate= 640.8kbits/ frame= 3692 fps=703 q=33.0 size= 256kB time=00:00:03.63 bitrate= 577.3kbits/ frame= 4006 fps=692 q=-1.0 Lsize= 545kB time=00:00:04.00 bitrate=1116.0kbits/s dup=3893 drop=0 speed=0.692x video:498kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.589657% [libx264 @ 0x7fbb0f80b600] frame I:17 Avg QP:19.61 size: 13978 [libx264 @ 0x7fbb0f80b600] frame P:1010 Avg QP:18.45 size: 156 [libx264 @ 0x7fbb0f80b600] frame B:2979 Avg QP:22.92 size: 38 [libx264 @ 0x7fbb0f80b600] consecutive B-frames: 0.8% 0.0% 0.0% 99.2% [libx264 @ 0x7fbb0f80b600] mb I I16..4: 18.6% 64.7% 16.7% [libx264 @ 0x7fbb0f80b600] mb P I16..4: 0.2% 0.3% 0.0% P16..4: 1.6% 0.2% 0.1% 0.0% 0.0% skip:97.5% [libx264 @ 0x7fbb0f80b600] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.7% 0.0% 0.0% direct: 0.0% skip:99.3% L0:52.4% L1:47.5% BI: 0.0% [libx264 @ 0x7fbb0f80b600] 8x8 transform intra:62.0% inter:74.2% [libx264 @ 0x7fbb0f80b600] coded y,uvDC,uvAC intra: 10.8% 18.8% 13.6% inter: 0.0% 0.1% 0.0% [libx264 @ 0x7fbb0f80b600] i16 v,h,dc,p: 34% 54% 11% 2% [libx264 @ 0x7fbb0f80b600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 63% 11% 24% 0% 0% 0% 0% 0% 0% [libx264 @ 0x7fbb0f80b600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 44% 22% 14% 4% 4% 3% 4% 3% 3% [libx264 @ 0x7fbb0f80b600] i8c dc,h,v,p: 70% 19% 9% 1% [libx264 @ 0x7fbb0f80b600] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x7fbb0f80b600] ref P L0: 91.8% 2.4% 5.0% 0.8% [libx264 @ 0x7fbb0f80b600] ref B L0: 69.0% 30.4% 0.6% [libx264 @ 0x7fbb0f80b600] ref B L1: 97.2% 2.8% [libx264 @ 0x7fbb0f80b600] kb/s:1016.19 

Problem: The mp4 file output, when playing, the player says its duration is 21 seconds. while it should be 4 seconds. For the 1st second the clip looks great but after that, for the rest of the 20 seconds, the clip seems to move in "slow-motion".

3

Reset to default

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy