On Sunday, December 19, 2021, Terje J. Hanssen <terjejhanssen@gmail.com> wrote:


Den 18.12.2021 04:35, skrev Andrew Randrianasulu:


On Saturday, December 18, 2021, Terje J. Hanssen <terjejhanssen@gmail.com <mailto:terjejhanssen@gmail.com>> wrote:



    Den 17.12.2021 22:49, skrev Andrew Randrianasulu:



        On Saturday, December 18, 2021, Terje J. Hanssen via Cin
        <cin@lists.cinelerra-gg.org
        <mailto:cin@lists.cinelerra-gg.org>
        <mailto:cin@lists.cinelerra-gg.org
        <mailto:cin@lists.cinelerra-gg.org>>> wrote:



            Den 17.12.2021 15:00, skrev Terje J. Hanssen:


                Den 17.12.2021 04:58, skrev Andrew Randrianasulu:



                    On Friday, December 17, 2021, Terje J. Hanssen
                    <terjejhanssen@gmail.com
        <mailto:terjejhanssen@gmail.com>
        <mailto:terjejhanssen@gmail.com <mailto:terjejhanssen@gmail.com>>
                    <mailto:terjejhanssen@gmail.com
        <mailto:terjejhanssen@gmail.com>
                    <mailto:terjejhanssen@gmail.com
        <mailto:terjejhanssen@gmail.com>>>> 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>

    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-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




 





    I dropped -pix_fmt yuv422p when I saw it was detected and
    automatic from the input file.


    So I added the second PCM Audio part (similar I did for SD-DV)
    according to 1. Answer at
    https://stackoverflow.com/questions/48265448/mpeg-2-program-stream-w-pcm-audio
    <https://stackoverflow.com/questions/48265448/mpeg-2-program-stream-w-pcm-audio>

    FFmpeg only supports muxing 16 bit PCM in a MPEG2 PS. Use

    ffmpeg -i "input.mov" \
      -c:v mpeg2video -pix_fmt yuv422p -bf 2 -b:v 50M -maxrate 50M
    -minrate 50M \
      -s 1920x1080 -aspect 16:9 \
      -c:a pcm_s16be -f vob "output.mpg"

    The -f vob is needed to force a MPEG-2 PS, else ffmpeg will select
    MPEG-1 Systems muxer.