[FFmpeg-user] cutting mp4 with ffmpeg

Andrew Randrianasulu randrianasulu at gmail.com
Sat Jan 13 19:50:55 EET 2024


On Sat, Jan 13, 2024 at 8:57 PM Def Etienne <shaker.doc at gmail.com> wrote:
>
>
> Sent from my iPhone
>
> > On 13 Jan 2024, at 15:44, Andrew Randrianasulu <randrianasulu at gmail.com> wrote:
> >
> > I compiled new ffmpeg I tried to cut mp4
> >
> > -to parameter was coming from mpv:
> >
> > bash-5.1$ mpv ~/6029.mp4
> > (+) Video --vid=1 (*) (h264 720x400 25.000fps)
> > (+) Audio --aid=1 (*) (aac 2ch 48000Hz)
> > AO: [alsa] 48000Hz stereo 2ch float
> > VO: [gpu] 720x400 yuv420p
> > (Paused) AV: 00:01:04.600 / 01:28:31.600 (1%) A-V:  0.000
> >
> > 1 min + 4 seconds +0.600 milliseconds = 64.600 ?
> >
> > bash-5.1$ /dev/shm/ffmpeg/ffmpeg -i ~/6029.mp4  -copyts -c:v copy -c:a
> > copy -ss 0.0 -to 64.600 /dev/shm/6029_cut.mp4
>
> I think the command intends a logic in its use.
>
> If you intend to cut out the first 64.6 seconds then you do not need to use  the “-ss” parameter.
>
> Using -t 64.6  before the output file would have been good enough.
>
> If you had needed to start from another time which is not the 0th second then an -ss parameter is needed which _must come_ before the input file on the command line and the “-to” mist have followed the -ss command before the input file.
>
> Try
>
> ffmpeg -i ~/6029.mp4  -copyts  c:v copy -c:acopy -t 64.600 dev/shm/6029_cut.mp4

I tried to see if audio encoded as aac was at fault, because now
ffmpeg can encode PCM in mp4 I used

/dev/shm/ffmpeg/ffmpeg -i ~/6029.mp4  -copyts -c:v copy -c:a pcm_s16le
-to 64.600 /dev/shm/6029_cut_2.mp4

bash-5.1$ MP4Box -info  /dev/shm/6029_cut_2.mp4
* Movie Info *
        Timescale 1000 - 2 tracks
        Computed Duration 00:01:04.800 - Indicated Duration 00:01:04.800
        Fragmented File: no
        File Brand isom - version 512
                Compatible brands: isom iso2 avc1 mp41
        Created: UNKNOWN DATE   Modified: UNKNOWN DATE
File has no MPEG4 IOD/OD

iTunes Info:
        Encoder Software: Lavf60.20.100
1 UDTA types: meta (1)

Track # 1 Info - TrackID 1 - TimeScale 90000
Media Duration 00:01:04.680 - Indicated Duration 00:01:04.800
Track has 1 edit lists: track duration is 00:01:04.800
Media Info: Language "Undetermined (und)" - Type "vide:avc1" - 1617 samples
Visual Sample Entry Info: width=720 height=400 (depth=24 bits)
Visual Track layout: x=0 y=0 width=720 height=400
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 720 x 400
        AVC Info: 1 SPS - 1 PPS - Profile High @ Level 3
        NAL Unit length bits: 32
        Chroma format YUV 4:2:0 - Luma bit depth 8 - chroma bit depth 8
        SPS#1 hash: E2ADECEA8531A9FC07EE08593AF65A2AD75A3533
        PPS#1 hash: 6BBE60BFBE383CE9144FA78B782534A704912778
Self-synchronized
        RFC6381 Codec Parameters: avc1.64001E
        Average GOP length: 231 samples
        Max sample duration: 3600 / 90000

Track # 2 Info - TrackID 2 - TimeScale 48000
Media Duration 00:01:04.597 - Indicated Duration 00:01:04.597
Track has 2 edit lists: track duration is 00:01:04.619
Media Info: Language "Undetermined (und)" - Type "soun:ipcm" - 3100672 samples
Unknown track type
        RFC6381 Codec Parameters: ipcm
Alternate Group ID 1
        All samples are sync
        Max sample duration: 1 / 48000

===

bash-5.1$ /dev/shm/ffmpeg/ffprobe  /dev/shm/6029_cut_2.mp4
ffprobe version N-112149-ga87a52ed0b Copyright (c) 2007-2024 the
FFmpeg developers
  built with gcc 11.2.0 (GCC)
  configuration:
  libavutil      58. 36.101 / 58. 36.101
  libavcodec     60. 37.100 / 60. 37.100
  libavformat    60. 20.100 / 60. 20.100
  libavdevice    60.  4.100 / 60.  4.100
  libavfilter     9. 17.100 /  9. 17.100
  libswscale      7.  6.100 /  7.  6.100
  libswresample   4. 13.100 /  4. 13.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/dev/shm/6029_cut_2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf60.20.100
  Duration: 00:01:04.68, start: 0.000000, bitrate: 2273 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 720x400, 734
kb/s, 25 fps, 25 tbr, 90k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
        encoder         : JVT/AVC Coding
  Stream #0:1[0x2](und): Audio: pcm_s16le (ipcm / 0x6D637069), 48000
Hz, stereo, s16, 1536 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]
===

also

/dev/shm/ffmpeg/ffmpeg -i /dev/shm/6029_cut_2.mp4 -vf showinfo -f null
/dev/null

last lines were

[Parsed_showinfo_0 @ 0xee202580] n:1612 pts:5803200 pts_time:64.48
duration:      0 duration_time:0       fmt:yuv420p cl:left sar:0/1
s:720x400 i:P iskey:0 type:B checksum:498D7D18
plane_checksum:[7C011A9A 72D078F0 1749E97F] mean:[84 158 80]
stdev:[10.1 3.4 8.2]
[Parsed_showinfo_0 @ 0xee202580] color_range:tv color_space:smpte170m
color_primaries:smpte170m color_trc:bt709
[Parsed_showinfo_0 @ 0xee202580] n:1613 pts:5806800 pts_time:64.52
duration:      0 duration_time:0       fmt:yuv420p cl:left sar:0/1
s:720x400 i:P iskey:0 type:B checksum:FB6C528A
plane_checksum:[BC0C2674 7A2A71F8 E2E7BA0F] mean:[84 158 80]
stdev:[10.1 3.3 8.1]
[Parsed_showinfo_0 @ 0xee202580] color_range:tv color_space:smpte170m
color_primaries:smpte170m color_trc:bt709
[Parsed_showinfo_0 @ 0xee202580] n:1614 pts:5810400 pts_time:64.56
duration:      0 duration_time:0       fmt:yuv420p cl:left sar:0/1
s:720x400 i:P iskey:0 type:P checksum:32E560F5
plane_checksum:[237A0A01 F76B8D20 1D72C9C5] mean:[84 158 80]
stdev:[10.1 3.2 8.0]
[Parsed_showinfo_0 @ 0xee202580] color_range:tv color_space:smpte170m
color_primaries:smpte170m color_trc:bt709
[Parsed_showinfo_0 @ 0xee202580] n:1615 pts:5814000 pts_time:64.6
duration:      0 duration_time:0       fmt:yuv420p cl:left sar:0/1
s:720x400 i:P iskey:1 type:I checksum:C9E56CD5
plane_checksum:[1254795B 75287B1F 720B784C] mean:[83 158 80]
stdev:[10.1 3.0 7.8]
[Parsed_showinfo_0 @ 0xee202580] color_range:tv color_space:smpte170m
color_primaries:smpte170m color_trc:bt709
[Parsed_showinfo_0 @ 0xee202580] n:1616 pts:5828400 pts_time:64.76
duration:      0 duration_time:0       fmt:yuv420p cl:left sar:0/1
s:720x400 i:P iskey:0 type:P checksum:07418607
plane_checksum:[A672B48D A7D7BD5B 3D4D1410] mean:[83 158 79]
stdev:[9.7 2.3 7.0]
[Parsed_showinfo_0 @ 0xee202580] color_range:tv color_space:smpte170m
color_primaries:smpte170m color_trc:bt709
[out#0/null @ 0xbf59800] video:543kB audio:12112kB subtitle:0kB other
streams:0kB global headers:0kB muxing overhead: unknown
frame= 1617 fps=493 q=-0.0 Lsize=N/A time=00:01:04.61 bitrate=N/A speed=19.7x


doesn't this mean ffmpeg cut one frame too much ?


>
> Def
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-user mailing list