[Cin] Is SD and HD 422 Video Capture obtainable with V4L(2)?

Andrew Randrianasulu randrianasulu at gmail.com
Sun Dec 19 01:00:29 CET 2021


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

>
>
> Den 18.12.2021 04:35, skrev Andrew Randrianasulu:
>
>>
>>
>> On Saturday, December 18, 2021, Terje J. Hanssen <terjejhanssen at gmail.com
>> <mailto:terjejhanssen at gmail.com>> wrote:
>>
>>
>>
>>     Den 17.12.2021 22:49, skrev Andrew Randrianasulu:
>>
>>
>>
>>         On Saturday, December 18, 2021, Terje J. Hanssen via Cin
>>         <cin at lists.cinelerra-gg.org
>>         <mailto:cin at lists.cinelerra-gg.org>
>>         <mailto:cin at lists.cinelerra-gg.org
>>         <mailto:cin at 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 at gmail.com
>>         <mailto:terjejhanssen at gmail.com>
>>         <mailto:terjejhanssen at gmail.com <mailto:terjejhanssen at gmail.com>>
>>                     <mailto:terjejhanssen at gmail.com
>>         <mailto:terjejhanssen at gmail.com>
>>                     <mailto:terjejhanssen at gmail.com
>>         <mailto:terjejhanssen at 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 at 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 at 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>
>>
>>
> 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.
>>
>>
>>
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20211219/0ba18c1a/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kfrm.sh
Type: text/x-sh
Size: 153 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20211219/0ba18c1a/attachment-0001.bin>


More information about the Cin mailing list