[Cin] mpeg2hd422p.m2ts - groundwork for a high-end preset

Terje J. Hanssen terjejhanssen at gmail.com
Mon Jun 9 22:26:11 CEST 2025



On 09.06.2025 16:13, Andrew Randrianasulu wrote:
>
>
> пн, 9 июн. 2025 г., 00:39 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
>
>     Den 08.06.2025 17:49, skrev Andrew Randrianasulu:
>>
>>
>>     вс, 8 июн. 2025 г., 18:26 Terje J. Hanssen via Cin
>>     <cin at lists.cinelerra-gg.org>:
>>
>>
>>
>>         Den 06.06.2025 14:17, skrev Terje J. Hanssen:
>>>         While the newer h.264 and hevc are known for best
>>>         compression, mpeg2 may have better quality at video bitrate
>>>         > 30Mbps
>>>
>>>         This example capture a raw video stream (optional tape
>>>         playback) from the camera sensor over HDMI out and transcode
>>>         audio to PCM into a high-end mpeg2hd422p.m2ts
>>>         -input_format yuyv422 -video_size hd1080 possibly may be
>>>         commented out, as the encoder default uses the maximum
>>>         capability it get from the capture card ms2130 and driver v4l2
>>>
>>>         mpeg2video is difficult to get quit perfect with ffmpeg;
>>>         muxing overhead: 6.206455% is the minimum I have achieved as
>>>         in this case.
>>>
>>>         At this high bitrate, 39Mbps here, a combination with
>>>         segmented recording is suggested and preferred to control
>>>         the file sizes (segments) and eventually corrupted parts
>>>         better.
>>>
>>>
>>>         ffmpeg -hide_banner -f v4l2 -framerate 50 -i /dev/video0 -f
>>>         alsa -ac 2 -i hw:CARD=UHD,DEV=0 -c:v mpeg2video -refs 1 -bf
>>>         2 -b:v 35M -maxrate 35M -minrate 35M -bufsize 38M -muxrate
>>>         38M -dc 10 -c:a pcm_bluray -mpegts_m2ts_mode 1 -t 30 -f
>>>         mpegts mpeg2hd422p_35M.m2ts
>>>
>>>         Input #0, video4linux2,v4l2, from '/dev/video0':
>>>           Duration: N/A, start: 79.422429, bitrate: 1658880 kb/s
>>>           Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422,
>>>         1920x1080, 1658880 kb/s, 50 fps, 50 tbr, 1000k tbn
>>>         [aist#1:0/pcm_s16le @ 0x55e2664e95c0] Guessed Channel
>>>         Layout: stereo
>>>         Input #1, alsa, from 'hw:CARD=UHD,DEV=0':
>>>           Duration: N/A, start: 1749208971.359170, 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_bluray
>>>         (native))
>>>         Press [q] to stop, [?] for help
>>>         [mpeg2video @ 0x55e2664d0500] Warning vbv_delay will be set
>>>         to 0xFFFF (=VBR) as the specified vbv buffer is too large
>>>         for the given bitrate!
>>>
>>>         Output #0, mpegts, to 'mpeg2hd422p_35M.m2ts':
>>>           Metadata:
>>>             encoder         : Lavf61.7.100
>>>           Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv,
>>>         progressive), 1920x1080, q=2-31, 35000 kb/s, 50 fps, 90k tbn
>>>               Metadata:
>>>                 encoder         : Lavc61.19.101 mpeg2video
>>>               Side data:
>>>                 cpb: bitrate max/min/avg: 35000000/35000000/35000000
>>>         buffer size: 38000000 vbv_delay: N/A
>>>           Stream #0:1: Audio: pcm_bluray, 48000 Hz, stereo, s16, 128
>>>         kb/s
>>>               Metadata:
>>>                 encoder         : Lavc61.19.101 pcm_bluray
>>>         [out#0/mpegts @ 0x55e2664e9740] video:128445KiB
>>>         audio:5648KiB subtitle:0KiB other streams:0KiB global
>>>         headers:0KiB muxing overhead: 6.206455%
>>>
>>>         frame= 1500 fps= 50 q=3.5 Lsize= 142416KiB time=00:00:29.98
>>>         bitrate=38915.0kbits/s speed=0.998x
>>>
>>
>>         I have been able to tune the ffmpeg specifications further:
>>
>>           * '-profile:v 422p -level:v high' (for mpeg-2 profile 422P at HL)
>>           * '--ch_layout stereo' (as a replacement for  '-ac 2' that
>>             caused 'Guessed Channel Layout: stereo')
>>
>>
>>         And also verified the camera HDMI out 'raw video' and 'raw
>>         audio' (pcm) using just the ffmpeg input parts:
>>
>>         ffmpeg -hide_banner -f v4l2 -framerate 50 -i /dev/video0 -f
>>         alsa -ch_layout stereo -i hw:CARD=UHD,DEV=0
>>
>>         Input #0, video4linux2,v4l2, from '/dev/video0':
>>           Duration: N/A, start: 191.096360, bitrate: 1658880 kb/s
>>           Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422,
>>         1920x1080, 1658880 kb/s, 50 fps, 50 tbr, 1000k tbn
>>         Input #1, alsa, from 'hw:CARD=UHD,DEV=0':
>>           Duration: N/A, start: 1749375770.007003, bitrate: 1536 kb/s
>>           Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
>>
>>
>>         Attached here  is a full ffmpeg debug log file for
>>         verification (command below)
>>
>>           * mpeg2hd422p_35M.log.gz
>>
>>
>>         ffmpeg -loglevel debug -f v4l2 -framerate 50 -i /dev/video0
>>         -f alsa -ch_layout stereo -i hw:CARD=UHD,DEV=0 -c:v
>>         mpeg2video -profile:v 422p -level:v high -refs 1 -bf 2 -b:v
>>         35M -maxrate 35M -minrate 35M -bufsize 38M -muxrate 38M -dc
>>         10 -c:a pcm_bluray -mpegts_m2ts_mode 1 -t 30 -f mpegts
>>         mpeg2hd422p_35M.m2ts > mpeg2hd422p_35M.log 2>&1
>>
>>         -----------
>>
>>         Among CinGG's existing m2ts presets
>>
>>         cd /Leap_root/usr/share/cin/ffmpeg/video
>>
>>         ls -1 *m2ts
>>
>>           * avc422.m2ts
>>           * bluray_bff.m2ts
>>           * bluray_dv_ntsc.m2ts
>>           * bluray_dv_pal.m2ts
>>           * bluray_fakeinterlace.m2ts
>>           * bluray_lo.m2ts
>>           * bluray.m2ts
>>           * bluray_tff.m2ts
>>           * hevc422p10.m2ts
>>           * hevc422p8.m2ts
>>           * lossless.m2ts
>>           * visually_lossless.m2ts
>>
>>
>>         grep mpeg2video *m2ts
>>
>>           * That is none so far for mpeg2video HD and 422p
>>
>>
>>         If this preset can be specified and supplemented (?) for use
>>         with pcm_bluray and segmented recording, I can test it next ;)
>>
>>
>>     I think you can copy existing mpeg2 m2ts  preset with different,
>>     desired name  (in same folder where other presets reside)
>>
>>     and just add you parameters there?
>>
>>     or try to put text below in new profile ....
>>
>>     mpegts mpeg2video
>>     cin_pix_fmt=yuv422p
>>     b=35M
>>     dc=10
>>     muxrate=38M
>>     minrate=35M
>>     maxrate=35M
>>     bufsize=38M
>>     bf=2
>>     profile=high
>>     refs=1
>
>     Yeah, thank you. Attach the new preset as suggested:
>
>     cat mpeg2hd422p.m2ts
>
>         mpegts mpeg2video
>         cin_pix_fmt=yuv422p
>         b=35M
>         dc=10
>         muxrate=38M
>         minrate=35M
>         maxrate=35M
>         bufsize=38M
>         bf=2
>         profile=high
>         refs=1
>
>     Recorded a test clip mpeg2hd422p.m2ts Start/Stop as below, using
>     the new video preset mpeg2hd422p.m2ts and existing audio preset
>     bluray_lpcm.m2ts, and yes, they seemingly work ok:
>
>     cin
>     Cinelerra Infinity - built: May 18 2025 05:16:5
>     ...........
>     Shift-P preferences as previously
>     r(ecord)
>
>     DeviceV4L2Base::v4l2_open pixels="YUYV"; res="1920x1080 1600x1200
>     1360x768 1280x1024 1280x960 1280x720 1024x768 800x600 720x576
>     720x480 640x480"
>     v4l2 s_fmt 1920x1080 YUYV
>     DeviceV4L2Base::v4l2_open VIDIOC_S_STD: Inappropriate ioctl for device
>     audio0 pad 16 0 (16)
>     ----------
>
>     ffprobe -hide_banner mpeg2hd422p.m2ts
>     Input #0, mpegts, from 'mpeg2hd422p.m2ts':
>       Duration: 00:01:14.84, start: 0.020000, bitrate: 39006 kb/s
>       Program 1
>       Stream #0:0[0x1011]: Video: mpeg2video (High) ([2][0][0][0] /
>     0x0002), yuv422p(tv, bt709/unknown/unknown, progressive),
>     1920x1080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn
>           Side data:
>             cpb: bitrate max/min/avg: 35000000/0/0 buffer size:
>     38010880 vbv_delay: N/A
>       Stream #0:1[0x1100](eng): Audio: pcm_bluray ([128][0][0][0] /
>     0x0080), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
>
>     Playback ok with vlc and ffplay
>     ----------
>
>     The next question;
>     Is segmented recording ready to use here, possibly how?
>
>
> you just add/replace on top of previous preset (do this for both audio 
> and video parts of profile) with this
>
> segment mpeg2video
> segment_format=mpegts
> segment_time=00:10 <= your segment time
> reset_timestamps=1
> [..] rest of options
>
> and then save as name.seg
>
> basically replace very first word with "segment"
> add three lines explaining to libavformat what kind of muxer/seg. time 
> it must use, save with extension .seg
>
> repeat for audio profile.

Yes, thanks. Segmented recording works.
Attach the completed presets used.

>
> For having "format" gui  button working you need patch I send earlier.

I'm not sure I understand what "format" gui  button working mean here?
And is it  possible to patch the rpm installation without having the 
build system, possibly how to do it?

>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20250609/b6e46649/attachment-0001.htm>
-------------- next part --------------
segment mpeg2video
segment_format=mpegts
segment_time=00:10 <= your segment time
reset_timestamps=1
cin_pix_fmt=yuv422p
b=35M
dc=10
muxrate=38M
minrate=35M
maxrate=35M
bufsize=38M
bf=2
profile=high
refs=1
-------------- next part --------------
segment pcm_bluray
segment_format=mpegts
segment_time=00:10 <= your segment time
reset_timestamps=1
id 0x1100


More information about the Cin mailing list