On Sunday, December 19, 2021, Terje J. Hanssen <[email protected]> wrote:
> > > Den 19.12.2021 03:38, skrev Andrew Randrianasulu: > >> >> >> On Sunday, December 19, 2021, Terje J. Hanssen <[email protected] >> <mailto:[email protected]>> wrote: >> >> >> >> Den 19.12.2021 01:00, skrev Andrew Randrianasulu: >> >>> >>> >>> On Sunday, December 19, 2021, Terje J. Hanssen >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> >>> [.......] >>> >>> > >>> >>> =============== >>> >>> I-frame-only 50 Megabit MPEG-2 or >>> comparable >>> DV50 in >>> 4:2:2 as >>> high-end, "visually lossless" >>> intermediate >>> format for >>> archival and >>> suited for editing? >>> >>> ----------------- >>> >>> Regarding DV50, FFMpeg has a >>> friendly "target >>> dv50" >>> support >>> (similar as "target DVD"). So to >>> get a first >>> look on a >>> DV50 test >>> file, I simply transcoded >>> 422/10bit Video and PCM >>> audio from a MOV >>> file (ProRes 422HQ) to a raw DV50 >>> (422/8bit) file: >>> >>> ffmpeg -i SD-MOV.mov -target >>> pal-dv50 >>> SD-DV50.dv >>> >>> [......] >>> >>> >>> 205M SD-DV50.dv (ffmpeg >>> re-encoded/remuxed) >>> AV-info: >>> >>> avprobe SD-DV50.dv >>> avprobe version 12.3, Copyright >>> (c) 2007-2018 the >>> Libav developers >>> built on Mar 26 2018 12:39 with >>> gcc 11 (SUSE >>> Linux) >>> [dv @ 0x55cdddb96440] Estimating >>> duration from >>> bitrate, this may >>> be inaccurate >>> Input #0, dv, from 'SD-DV50.dv': >>> Metadata: >>> timecode : 00:00:00:00 >>> Duration: 00:00:29.80, start: >>> 0.000000, bitrate: >>> 57600 kb/s >>> Stream #0:0: Video: dvvideo, >>> yuv422p, >>> 720x576 [SAR >>> 16:15 DAR >>> 4:3], 25000 kb/s, 25 fps, 25 tbr, >>> 25 tbn, 25 tbc >>> Stream #0:1: Audio: pcm_s16le, >>> 48000 Hz, stereo, >>> s16, 1536 kb/s >>> Stream #0:2: Audio: pcm_s16le, >>> 48000 Hz, stereo, >>> s16, 1536 kb/s >>> # avprobe output >>> >>> =================== >>> >>> As seen above, it looks like >>> ffmpeg produced wrong >>> meta data for >>> the DV50 video bitrate (25 >>> Mb/s=DV25), while >>> the total >>> bitrate >>> 57.6 Mb/s is correct. (Also >>> similar was seen with >>> ffprobe and >>> Mediainfo). >>> >>> My VLC player or Gnome >>> movieplayer did not >>> playback >>> the DV50 file, >>> while ffplay did (as usual >>> without audio?). >>> >>> Cin-GG miss a DV50 preset among >>> format setting. >>> However DV50 else >>> loades preliminary OK in Cin-GG >>> (via ffmpeg). >>> >>> >>> I'll look at dv50 output preset.. >>> >>> Fine >>> >>> =============== >>> >>> I tried also to transcode and remux 422 Video >>> and PCM >>> Audio to a >>> 50 Mbps MPEG-2 I-frame only program stream. >>> >>> 1) MPG From MOV (ProRes 422HQ) >>> ------------------------------ >>> >>> ffmpeg -i SD-MOV.mov -c:v mpeg2video -bf 2 >>> -b:v 50M >>> -maxrate 50M >>> -minrate 50M -c:a pcm_s16be -f vob SD-MP2I-50.mpg >>> [....] >>> Stream mapping: >>> Stream #0:0 -> #0:0 (prores (native) -> >>> mpeg2video (native)) >>> Stream #0:1 -> #0:1 (pcm_s24le (native) -> >>> pcm_s16be >>> (native)) >>> Press [q] to stop, [?] for help >>> [mpeg2video @ 0x560ffd164ec0] Automatically >>> choosing VBV >>> buffer >>> size of 746 kbyte >>> [vob @ 0x560ffd14d180] At most 8 channels >>> allowed for LPCM >>> streams. >>> Could not write header for output file #0 >>> (incorrect codec >>> parameters ?): Invalid argument >>> Error initializing output stream 0:1 -- >>> >>> ***This failed because PreRes Audio uses 16 >>> channels:*** >>> >>> >>> yeah... interesting limitation.. and interesting >>> number of >>> channels.. >>> >>> >>> ffprobe SD-MOV.mov 2>&1 >/dev/null | grep >>> Stream.*Audio >>> Stream #0:1(eng): Audio: pcm_s24le (lpcm / >>> 0x6D63706C), >>> 48000 >>> Hz, 16 channels, s32 (24 bit), 18432 kb/s >>> (default) >>> >>> >>> 2) MPG from DV50 >>> ---------------- >>> ffmpeg -i SD-DV50.dv -c:v mpeg2video -bf 2 >>> -b:v 50M >>> -maxrate 50M >>> -minrate 50M -c:a pcm_s16be -f vob SD-MP2I-50.mpg >>> >>> du -sh * >>> 205M SD-DV50.dv >>> 284M SD-MOV.mov >>> 186M SD-MP2I-50.mpg >>> >>> avprobe SD-MP2I-50.mpg >>> Input #0, mpeg, from 'SD-MP2I-50.mpg': >>> Duration: 00:00:29.77, start: 0.540000, >>> bitrate: 52167 kb/s >>> Stream #0:0[0x1e0]: Video: mpeg2video >>> (4:2:2), yuv422p(tv, >>> progressive), 720x576 [SAR 16:15 DAR 4:3], >>> 50000 kb/s, 25 >>> fps, 25 >>> tbr, 90k tbn, 50 tbc >>> Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 >>> Hz, 2 >>> channels, s16, >>> 1536 kb/s >>> >>> ***** The SD-MP2I-50.mpg file size is here >>> 90% of DV50 >>> ******** >>> >>> The SD-MP2I-50.mpg playback ok with VLC, >>> Gnome movieplayer, >>> ffplay, and loads and playback in Cin-GG >>> The audio volume seems low (weak), but can >>> probably be >>> adjusted >>> higher with ffmpeg >>> >>> >>> well, but I missed keyframe parameter? bitrate is >>> big but I >>> think without special param ffmpeg still will not >>> make all-I >>> mpeg2 stream..? >>> >>> >>> >>> The first Video part of my ffmpeg script was based on >>> this >>> standard FFmpeg Howto for >>> "MPEG-2 I-frame only Highest Quality Encoding", which >>> didn't >>> include a keyframe parameter !? >>> https://brunosan.eu/images/ffmpeg_howto.html#Encoding_MPEG- >>> 2_I-frame_only_in_Highest_Quality >>> <https://brunosan.eu/images/ffmpeg_howto.html#Encoding_MPEG- >>> 2_I-frame_only_in_Highest_Quality> >>> >>> <https://brunosan.eu/images/ffmpeg_howto.html#Encoding_MPEG- >>> 2_I-frame_only_in_Highest_Quality >>> <https://brunosan.eu/images/ffmpeg_howto.html#Encoding_MPEG- >>> 2_I-frame_only_in_Highest_Quality>> >>> >>> ffmpeg -i <input_file> -vcodec mpeg2video -pix_fmt >>> yuv422p -qscale >>> 1 -qmin 1 -intra -an output.m2v >>> >>> >>> you missed >>> >>> -intra? >>> >>> >>> Thanks for reviewing. "-intra" should definitely be there, >>> and I know I used it before editing and troubleshooting the >>> audiopart, removing -an. Cleaned up and added also some other >>> parameters >>> -q:v 1 -qmin 1 -intra >>> >>> >>> 3) MP2I50 from DV50: >>> --------------------- >>> ffmpeg -i SD-DV50.dv -c:v mpeg2video -q:v 1 -qmin 1 -intra >>> -bf 2 -b:v 50M -maxrate 50M -minrate 50M -c:a pcm_s16be -f >>> vob SD-MP2I50.mpg >>> [...] >>> Input #0, dv, from 'SD-DV50.dv': >>> Metadata: >>> timecode : 00:00:00:00 >>> Duration: 00:00:29.80, start: 0.000000, bitrate: 57600 kb/s >>> Stream #0:0: Video: dvvideo, yuv422p, 720x576 [SAR 16:15 >>> DAR 4:3], 25000 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc >>> Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s >>> Stream #0:2: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s >>> [... a lot of vob buffer messages scrolling ....] >>> [vob @ 0x564dbf6a0680] packet too large, ignoring buffer >>> limits to mux it >>> [vob @ 0x564dbf6a0680] buffer underflow st=1 bufi=7204 size=7680 >>> frame= 745 fps=460 q=1.0 Lsize= 189584kB time=00:00:29.76 >>> bitrate=52186.6kbits/s speed=18.4x >>> video:181698kB audio:5588kB subtitle:0kB other streams:0kB >>> global headers:0kB muxing overhead: 1.227127% >>> >>> avprobe SD-MP2I50.mpg >>> avprobe version 12.3, Copyright (c) 2007-2018 the Libav >>> developers >>> built on Mar 26 2018 12:39 with gcc 7 (SUSE Linux) >>> Input #0, mpeg, from 'SD-MP2I50.mpg': >>> Duration: 00:00:29.80, start: 0.540000, bitrate: 52116 kb/s >>> Stream #0:0[0x1e0]: Video: mpeg2video (4:2:2), >>> yuv422p(tv, progressive), 720x576 [SAR 16:15 DAR 4:3], 50000 >>> kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc >>> Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 Hz, 2 channels, >>> s16, 1536 kb/s >>> >>> ================ >>> >>> (Re)tested also with >>> >>> 4) No intra (-intra) >>> ffmpeg -i SD-DV50.dv -c:v mpeg2video -bf 2 -b:v 50M -maxrate >>> 50M -minrate 50M -c:a pcm_s16be -f vob SD-MP2-50.mpg >>> >>> 5) Without specified Video bitrate (-b:v) >>> ffmpeg -i SD-DV50.dv -c:v mpeg2video -q:v 1 -qmin 1 -intra >>> -bf 2 -c:a pcm_s16be -f vob SD-MP2I-.mpg >>> >>> 6) Video only - no Audio (-an): >>> ffmpeg -i SD-DV50.dv -vcodec mpeg2video -q:v 1 -qmin 1 -intra >>> -an SD-MP2I50-an.m2v >>> >>> ----------------- >>> >>> du -sh * >>> 284M SD-MOV.mov >>> 205M SD-DV50.dv >>> 186M SD-MP2I50.mpg (3) >>> 186M SD-MP2-50.mpg (4) >>> 153M SD-MP2I-.mpg (5) >>> 146M SD-MP2I50-an.m2v (6) >>> >>> As seen, no size difference between -intra (3) and without >>> intra flag specified (4) above: >>> 186/205 = 90% size of the input SD-DV50.dv >>> >>> I would expect this due to high bitrate and some more >>> effectiv video compression for MPEG-2 over DV50. >>> While the consumer DV25/4:2:0 pal uses 5:1 intra compression, >>> the pro(sumer) DV50/4:2:2 uses lower 3.3:1. >>> >>> ------------- >>> >>> 7) Another, equivalent SD MPEG-2/ 422P@ML option to setup for >>> Cin-GG/ FFMpeg preset could be: >>> >>> D10 aka Sony IMX50 Encoding - a standard definition >>> professional video recording format. Uses intraframe >>> compression, 4:2:2 color subsampling and user-selectable >>> constant video data rate of 30, 40 or 50 Mbit/s. >>> >>> 422P@ML 720 × 576 25 FPS 4:2:2 Sampling 50 Mbits/s >>> Sony IMX50 (I only), Broadcast Contribution (I&P only) >>> >>> The Howto contains both a short and a long script version. >>> >>> ---------------- >>> >>> >>> ffmpeg changes cmd line and API quickly.. ( >>> >>> try "-g 1" and check keyframes with some linevlike those? >>> >>> https://snippets.bentasker.co.uk/page-1707191206-Get-Video-K >>> eyframe-Interval-(ffprobe)-BASH.html >>> <https://snippets.bentasker.co.uk/page-1707191206-Get-Video- >>> Keyframe-Interval-(ffprobe)-BASH.html> >>> <https://snippets.bentasker.co.uk/page-1707191206-Get-Video- >>> Keyframe-Interval-(ffprobe)-BASH.html >>> <https://snippets.bentasker.co.uk/page-1707191206-Get-Video- >>> Keyframe-Interval-(ffprobe)-BASH.html>> >>> >>> >>> I tried to copy and paste some line from the manual url, but >>> If you possibly can setup an exact FF syntax to run here, I >>> can do it ;) >>> >>> >>> attached copy of script Phyllis send to me back in 2019 >>> >>> >> Sorry I'm not skilled with sed scripts. "Somewhere" I would expect >> my encoded file name "SD-MP2I50.mpg" should be put in to be read >> and analyzed with ffprobe? And what about the first mentioned "-g 1" ? >> >> >> try to run script like this (after chmod +x on it) : >> >> >> $ ./kfrm.sh vid_20210526.mp4 >> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'vid_20210526.mp4': >> Metadata: >> major_brand : isom >> minor_version : 512 >> compatible_brands: isomiso2avc1mp41 >> encoder : Lavf58.76.100 >> Duration: 00:00:36.64, start: 0.000000, bitrate: 1314 kb/s >> Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, >> unknown/bt470bg/unknown), 640x480 [SAR 27:64 DAR 9:16], 1217 kb/s, 29.58 >> fps, 29.58 tbr, 11360 tbn, 59.17 tbc (default) >> Metadata: >> handler_name : VideoHandle >> vendor_id : [0][0][0][0] >> Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, >> stereo, fltp, 90 kb/s (default) >> Metadata: >> handler_name : SoundHandle >> vendor_id : [0][0][0][0] >> key_frame=1 >> key_frame=0 >> key_frame=0 >> >> >> for all I frames it should output key_frame=1 for all (many!) frames. >> >> you can add ' | grep 0' at the end of this line and see how many >> non-keyframes it will find. >> >> -g is ffmpeg parameter setting distance between keyframes. >> >> >> >> What are we really searching for or verify in this I-frame only >> encoded MPEG-2 video file ? >> >> >> yes we try to verify it really all-I frames file. (impact seekability >> among other things) >> >> >> >> And isn't keyframes another (previous?) name for Intra-frames? >> >> >> yes, as far as I know. >> >> >> > Thanks, script testrun executed with attached output here. > Test-run_Intra-frame_key_word > > As seen below from the summary table, all files except the MPEG-2 > generated "SD-MP2-50.mpg" without the ffmpeg -intra flag set, contains all > Intra-frames only: > > ------------------------------------------------------- > du -sh SD*.* # key_frame=1 # key_frame=0 > (# I-frames) (# non-I-frames) > 284M SD-MOV.mov 746 0 > 205M SD-DV50.dv 745 0 > 186M SD-MP2I50.mpg 745 0 > 153M SD-MP2I-.mpg 745 0 > 186M SD-MP2-50.mpg 63 682 > 146M SD-MP2I50-an.m2v 745 0 good! but a bit concerned 746 vs 745 frame count. Are we losing one frame somewhere? > > Counts matched # key_frame=1 (I-frames) > ./kfrm.sh SD-MOV.mov | grep -c key_frame=1 > > Counts other (unmatched) than key_frame=1 > ./kfrm.sh SD-MOV.mov | grep -v -c key_frame=1 > > -------------------------------------------------------- > >
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

