пн, 9 июн. 2025 г., 23:26 Terje J. Hanssen <[email protected]>:
> > > On 09.06.2025 16:13, Andrew Randrianasulu wrote: > > > > пн, 9 июн. 2025 г., 00:39 Terje J. Hanssen <[email protected]>: > >> >> >> Den 08.06.2025 17:49, skrev Andrew Randrianasulu: >> >> >> >> вс, 8 июн. 2025 г., 18:26 Terje J. Hanssen via Cin < >> [email protected]>: >> >>> >>> >>> 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@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? > If you select say Ffmpeg/mkv you can set many codec-specific or generic libvcodec options. You also can set options specific to muxing container. And is it possible to patch the rpm installation without having the build > system, possibly how to do it? > No, not in this case ... this is why having (redistrubutable, rebuildable) source is generally good thing - you can change C/c++ or whatever high language code was used to write program without becoming asm language master ;) you can experiment with naming profiles something.segment but in this case I am not sure how well dropdown menu with those types will work ... > > > >> >> >> >> > >
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

