[Cin] Segmented Recording from input stream

Terje J. Hanssen terjejhanssen at gmail.com
Mon Jun 23 13:56:33 CEST 2025



Den 13.06.2025 21:38, skrev Andrew Randrianasulu:
>
>
> пт, 13 июн. 2025 г., 22:23 Phyllis Smith <phylsmith2017 at gmail.com>:
>
>     With the patch (and even using extension of mpeg instead of seg),
>     I simply have not been able to get this to work.  So either I keep
>     doing something wrong or it does.  Patch to fileffmpeg.C is:
>     0001-Fixup-seg-name-to-segment-so-format-gui-button-work.patch . 
>     And the 2 presets are  bluray_lpcm.seg  and mpeg2hd422p.seg
>
>
> Try extension mpg, not mpeg and be sure you have
>
> %d0 symbols in your filename?
>
> Note, this file will be created as 0-sized, you need to watch/load 
> segment files manually.

......................... snip


>                                     >>
>                                     >> пт, 30 мая 2025 г., 00:30
>                                     Andrew Randrianasulu
>                                     <randrianasulu at gmail.com>:
>                                     >>
>                                     >> чт, 29 мая 2025 г., 23:42 Terje
>                                     J. Hanssen via Cin
>                                     <cin at lists.cinelerra-gg.org>:
>                                     >>
>                                     >> Is it possible with CinGG's
>                                     Record utility (via FFMPEG) to
>                                     record a stream to file segments
>                                     of same duration or file size and
>                                     use auto-naming?
>                                     >>
>                                     >> Typical example:
>                                     >> Record a video/audio input
>                                     stream (i.e from playing a
>                                     camcorder tape cassette) and
>                                     encode to output file segments of
>                                     10 minutes or 10 GB each and
>                                     auto-name file numbers.
>                                     >>
>                                     >> Similar example code using an
>                                     input file instead at
>                                     >>
>                                     https://unix.stackexchange.com/questions/1670/how-can-i-use-ffmpeg-to-split-mpeg-video-into-10-minute-chunks
>                                     >>
>                                     >> Just use what is built into
>                                     ffmpeg to do exactly this.
>                                     >>
>                                     >> ffmpeg -i invid.mp4 -threads 3 \
>                                     >>   -vcodec copy -f segment
>                                     -segment_time 10:00 \
>                                     >> -reset_timestamps 1 \
>                                     >> cam_out_h264_%02d.mp4
>                                     >>
>                                     >> This will split it into roughly
>                                     10-minute chunks, split at the
>                                     relevant keyframes, and will
>                                     output to the files
>                                     cam_out_h264_01.mp4,
>                                     cam_out_h264_02.mp4, etc.
>                                     >>
>                                     >> Very interesting question!
>                                     Never tried this, did not even
>                                     know it existed!
>                                     >>
>                                     >> As long as this -f just
>                                     ordinary avformat muxer you
>                                     probably can copy your favourite
>                                     ffmpeg video/audio profiles with
>                                     new .seg name and put "segmented"
>                                     at very first line there , where
>                                     "mov" or "matroska" or other
>                                     format name was, and add rest of
>                                     options. And add pattern (%02d)
>                                     into name just as with
>                                     ffmpeg-based image lists.
>                                     >>
>

............snip

I went to the start and successful adapted the ffmpeg codeline for 
capturing mpeg2sd422p via v4l2 to segments 'a 30 sec, total time 120 sec:

ffmpeg -hide_banner -f v4l2 -video_size 720x576 -framerate 50 -i 
/dev/video0 -f alsa -ch_layout stereo -i hw:CARD=UHD,DEV=0 -c:v 
mpeg2video -vf scale=720x576 -profile:v 422p -level:v main -refs 1 -bf 2 
-b:v 30M -maxrate 30M -minrate 30M -bufsize 25M -muxrate 35M -c:a 
pcm_s16le -t 120 -f segment -segment_time 00:30 -reset_timestamps 1 
mpeg2sd422p_30M_%02d.mkv

Input #0, video4linux2,v4l2, from '/dev/video0':
   Duration: N/A, start: 139.588942, bitrate: 331776 kb/s
   Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 720x576, 
331776 kb/s, 50 fps, 50 tbr, 1000k tbn
Input #1, alsa, from 'hw:CARD=UHD,DEV=0':
   Duration: N/A, start: 1750676281.517256, bitrate: 1536 kb/s
   Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
   Stream #1:0 -> #0:1 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[mpeg2video @ 0x55d2ea6dd6c0] Warning vbv_delay will be set to 0xFFFF 
(=VBR) as the specified vbv buffer is too large for the given bitrate!
[segment @ 0x55d2ea6f1840] Opening 'mpeg2sd422p_30M_00.mkv' for writing

Output #0, segment, to 'mpeg2sd422p_30M_%02d.mkv':
   Metadata:
     encoder         : Lavf61.7.100
   Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, progressive), 
720x576, q=2-31, 30000 kb/s, 50 fps, 1k tbn
       Metadata:
         encoder         : Lavc61.19.101 mpeg2video
       Side data:
         cpb: bitrate max/min/avg: 30000000/30000000/30000000 buffer 
size: 25000000 vbv_delay: N/A
   Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
       Metadata:
         encoder         : Lavc61.19.101 pcm_s16le
[segment @ 0x55d2ea6f1840] Opening 'mpeg2sd422p_30M_01.mkv' for 
writing.999x
[segment @ 0x55d2ea6f1840] Opening 'mpeg2sd422p_30M_02.mkv' for writing  1x
[segment @ 0x55d2ea6f1840] Opening 'mpeg2sd422p_30M_03.mkv' for writing  1x
[out#0/segment @ 0x55d2ea6f6b00] video:438690KiB audio:22499KiB 
subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 
unknown
frame= 6000 fps= 50 q=2.5 Lsize=N/A time=00:01:59.98 bitrate=N/A dup=0 
drop=1 speed=   1x

----------

du -sh mpeg2sd422p_30M_*
113M    mpeg2sd422p_30M_00.mkv
113M    mpeg2sd422p_30M_01.mkv
113M    mpeg2sd422p_30M_02.mkv
114M    mpeg2sd422p_30M_03.mkv

-----------

ffprobe -hide_banner mpeg2sd422p_30M_02.mkv
Input #0, matroska,webm, from 'mpeg2sd422p_30M_02.mkv':
   Metadata:
     ENCODER         : Lavf61.7.100
   Duration: 00:00:30.02, start: 0.000000, bitrate: 31548 kb/s
   Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, progressive), 
720x576 [SAR 1:1 DAR 5:4], 50 fps, 50 tbr, 1k tbn
       Metadata:
         ENCODER         : Lavc61.19.101 mpeg2video
         DURATION        : 00:00:30.020000000
       Side data:
         cpb: bitrate max/min/avg: 30000000/0/0 buffer size: 25001984 
vbv_delay: N/A
   Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
       Metadata:
         ENCODER         : Lavc61.19.101 pcm_s16le
         DURATION        : 00:00:30.000000000

------------

ffprobe -hide_banner mpeg2sd422p_30M_03.mkv
Input #0, matroska,webm, from 'mpeg2sd422p_30M_03.mkv':
   Metadata:
     ENCODER         : Lavf61.7.100
   Duration: 00:00:30.06, start: 0.000000, bitrate: 31550 kb/s
   Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, progressive), 
720x576 [SAR 1:1 DAR 5:4], 50 fps, 50 tbr, 1k tbn
       Metadata:
         ENCODER         : Lavc61.19.101 mpeg2video
         DURATION        : 00:00:30.059000000
       Side data:
         cpb: bitrate max/min/avg: 30000000/0/0 buffer size: 25001984 
vbv_delay: N/A
   Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
       Metadata:
         ENCODER         : Lavc61.19.101 pcm_s16le
         DURATION        : 00:00:30.059000000





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20250623/4868f716/attachment-0001.htm>


More information about the Cin mailing list