Den 06.05.2025 22:54, skrev Andrew Randrianasulu:


вт, 6 мая 2025 г., 23:49 Terje J. Hanssen <terjejhans...@gmail.com>:



    Den 05.05.2025 16:05, skrev Andrew Randrianasulu:


    пн, 5 мая 2025 г., 17:00 Andrew Randrianasulu
    <randrianas...@gmail.com>:



        пн, 5 мая 2025 г., 16:26 Terje J. Hanssen via Cin
        <cin@lists.cinelerra-gg.org>:

            I consider to make a second preservation backup for
            archiving my Analog S-video and HDV footages on tapes to
            lossless compressed FFV1.MKV files stored on large USB3
            expansion disks. Also ffv1 HW (vulkan) decoding (next and
            encoding (later?) are of interest in this context.

            Related previous threads
            
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg05547.html
            
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg03791.html
            
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg05547.html

            I adapt simply the last ffmpeg mpeg-2 code line to a
            first ffv1, version 3 test, 10 sec file

            ffmpeg -hide_banner -f v4l2 -input_format yuyv422
            -video_size 720x576 -framerate 50 -i /dev/video0 -f alsa
            -ac 2 -i hw:CARD=UHD,DEV=0 -c:v ffv1 -level 3 -c:a
            pcm_s16le -t 10 720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv

                Input #0, video4linux2,v4l2, from '/dev/video0':
                  Duration: N/A, start: 351.803278, bitrate: 331776 kb/s
                  Stream #0:0: Video: rawvideo (YUY2 / 0x32595559),
                yuyv422, 720x576, 331776 kb/s, 50 fps, 50 tbr, 1000k tbn
                [aist#1:0/pcm_s16le @ 0x555a99736cc0] Guessed Channel
                Layout: stereo
                Input #1, alsa, from 'hw:CARD=UHD,DEV=0':
                  Duration: N/A, start: 1746445045.742179, 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) -> ffv1
                (native))
                  Stream #1:0 -> #0:1 (pcm_s16le (native) ->
                pcm_s16le (native))
                Press [q] to stop, [?] for help
                Output #0, matroska, to
                '720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv':
                  Metadata:
                    encoder         : Lavf61.7.100
                  Stream #0:0: Video: ffv1 (FFV1 / 0x31564646),
                yuv422p(tv, progressive), 720x576, q=2-31, 200 kb/s,
                50 fps, 1k tbn
                      Metadata:
                        encoder         : Lavc61.19.101 ffv1
                  Stream #0:1: Audio: pcm_s16le ([1][0][0][0] /
                0x0001), 48000 Hz, stereo, s16, 1536 kb/s
                      Metadata:
                        encoder         : Lavc61.19.101 pcm_s16le
                [out#0/matroska @ 0x555a99736f40] video:57467KiB
                audio:1875KiB subtitle:0KiB other streams:0KiB global
                headers:0KiB muxing overhead: 0.069226%
                frame=  500 fps= 50 q=-0.0 Lsize=   59383KiB
                time=00:00:10.00 bitrate=48646.9kbits/s speed=0.998x


            ----------

            du -sh *
            58M 720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv

            ----------

            ffprobe -hide_banner 720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv

                Input #0, matroska,webm, from
                '720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv':
                  Metadata:
                    ENCODER         : Lavf61.7.100
                  Duration: 00:00:10.00, start: 0.000000, bitrate:
                48646 kb/s
                  Stream #0:0: Video: ffv1 (FFV1 / 0x31564646),
                yuv422p(tv, progressive), 720x576, 50 fps, 50 tbr, 1k tbn
                      Metadata:
                        ENCODER         : Lavc61.19.101 ffv1
                        DURATION        : 00:00:10.000000000
                  Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2
                channels, s16, 1536 kb/s
                      Metadata:
                        ENCODER         : Lavc61.19.101 pcm_s16le
                        DURATION        : 00:00:10.000000000


            ------------

            mediainfo 720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv

                General
                Unique ID : 158479793538002634101121179263279280827
                (0x773A19163BEA6038DF448CE1529BB2BB)
                Complete name                            :
                720x576_50fps+alsa_ms2130_ffv1-3+pcm.mkv
                Format                                   : Matroska
                Format version : Version 4
                File size : 58.0 MiB
                Duration                                 : 10 s 0 ms
                Overall bit rate mode                    : Variable
                Overall bit rate                         : 48.6 Mb/s
                Frame rate : 50.000 FPS
                Writing application                      : Lavf61.7.100
                Writing library                          : Lavf61.7.100
                ErrorDetectionType                       : Per level 1

                Video
                ID                                       : 1
                Format                                   : FFV1
                Format version : Version 3.4
                Format settings, Slice count             : 4 slices
                per frame
                Codec ID : V_MS/VFW/FOURCC / FFV1
                Duration                                 : 10 s 0 ms
                Bit rate mode                            : Variable
                Bit rate : 46.1 Mb/s
                Width                                    : 720 pixels
                Height                                   : 576 pixels
                Display aspect ratio                     : 5:4
                Frame rate mode                          : Constant
                Frame rate : 50.000 FPS
                Color space : YUV
                Chroma subsampling : 4:2:2
                Bit depth : 8 bits
                Scan type : Progressive
                Compression mode                         : Lossless
                Bits/(Pixel*Frame)                       : 2.225
                Stream size : 55.0 MiB (95%)
                Writing library                          :
                Lavc61.19.101 ffv1
                Default                                  : No
                Forced                                   : No
                Color range : Limited
                coder_type                               : Golomb Rice
                ErrorDetectionType                       : Per slice

                Audio
                ID                                       : 2
                Format                                   : PCM
                Format settings : Little / Signed
                Codec ID : A_PCM/INT/LIT
                Duration                                 : 10 s 0 ms
                Bit rate mode                            : Constant
                Bit rate : 1 536 kb/s
                Channel(s)                               : 2 channels
                Sampling rate                            : 48.0 kHz
                Bit depth : 16 bits
                Stream size : 1.83 MiB (3%)
                Writing library                          :
                Lavc61.19.101 pcm_s16le
                Default                                  : No
                Forced                                   : No

            ---------------------------------

            As seen above the "default" Chroma subsampling  is
            yuv422p or 4:2:2 with Bit depth: 8 bits

            As ffv1 seemingly also does support yuv422p10le ffmpeg, I
            wonder if yuv422p is limited by the input from HDMI
            capture/AV converter?
            Can possibly yuv422p10le possibly be achieved by adding
            -pix_fmt 10 og similar syntax to the ffmpeg line?


        you can try  different -input_format, but I suspect 10bit
        video over v4l2 at best uncommon ... While hdmi itself
        supports 10bit digital signal, I suspect  non-pro capture
        devices usually limited to 8bit?


    
https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavdevice/v4l2-common.c

    I can't see 10bit yuy2 format listed here, so probably even if
    hw/driver support it ffmpeg will not ...

    Yes, It seems this also is the case.
    Even I got a few 10-bits "-input_format" y210 and p210 accepted by
    ffmpeg, in both cases the output format "defaulted" to the same
    'yuv422p'.
    What also surprised me, the filesizes at the same time also was
    reduced to 77%

    du -sh *
    45M    720x576_50fps_p210+alsa_ms2130_ffv1-3+pcm.mkv
    45M    720x576_50fps_y210+alsa_ms2130_ffv1-3+pcm.mkv
    58M    720x576_50fps_yuyv422+alsa_ms2130_ffv1-3+pcm.mkv


I guess they 10 bit but 4:2:0 subsampling?

Noop, according to mediainfo all have

Color space                              : YUV
Chroma subsampling                       : 4:2:2
Bit depth                                : 8 bits

By the way, I acknowledge this limit at the hand.
10-Bit Video is recommended for Analog Tape Transfer due to color shades and branding
https://www.archivalworks.com/blog/10-bit-video-transfer

But I expect also 8-bit 422 transfer to FFV1 opt for some better quality than the current 8-bit 420 DV25 files (converted from PAL S-video) and the HDV.m2t backup files. IMO direct playback of S-vdeo tapes has visual better brightness than the converted DV files. It remains also to verify if playing 1080i50 HDV tapes via HDMI will be up-scaled to 422 and 720p, according to Steve Mullen' FX7 handbook.

To continue I copy with from my old, initial post at
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg05547.html


Does all FFV1 level 3 versions work with lossless compression for 422 video?

I have not yet found a definitiv ffmpeg FFV1 v 3 syntax guide for SD and HDV capturing and hope for suggestions and comments regarding the examples below:


3.1 FFmpeg recipe (PAL) ffmpeg -i VIDEO_IN \ -c:v ffv1 -level 3 -coder 1 -context 0 -slices 24 -slicecrc 1 \ -color_primaries bt470bg \ -color_trc bt709 \ -colorspace bt470bg \ -color_range mpeg \ -map 0 \ -top 1 \ -c:a copy \ -g 1 -pix_fmt + \ VIDEO_OUT.mkv 3.2 Reference Example https://trac.ffmpeg.org/wiki/Encode/FFV1#Examples     Copy audio "as-is" and use FFV1.3 as video codec.

    Parameters are 8 threads, coder=1, context=1, GOP-size=1, 24 slices and slice-CRC on:

    ffmpeg -i <input_video>     \         -acodec   copy          \         -vcodec   ffv1 -level 3 \         -threads  8             \         -coder    1             \         -context  1             \         -g        1             \         -slices  24             \         -slicecrc 1             \         <output_video> 3.3 Various Encoding examples for Video capture from USB camera /dev/video0:

ffmpeg -f v4l2 -framerate 25 -video_size 720x576 -i /dev/video0 output_data.mkv ffmpeg -f v4l2 -framerate 25 -video_size 720x576 -i /dev/video0 -codec:v ffv1 -codec:a pcm_s16le \
    -f matroska  output_video.mkv


Check that video is captured properly using ffplay:

ffmpeg -ar 44100 -thread_queue_size 1024 -f alsa -i $AUDIO \     -r 25 -thread_queue_size 1024 -i $VIDEO \     -codec copy -f matroska  - | ffplay


- Check the overall flow using ffplay before capturing:

ffmpeg -ar 44100 -thread_queue_size 1024 -f alsa -i $AUDIO \     -itsoffset -0.5 -r 25 -thread_queue_size 1024 -i $VIDEO \     -filter_complex 'channelmap=FL-0' -filter_complex 'crop=w=700:h=556:x=8:y=0' \     -map 1:v  -map 0:a -codec:v ffv1 -codec:a pcm_s16le \     -f matroska  - | ffplay -




why we can't have both ;) I mean, it all depend on hw, and now board wired ... If there was relatively popular capture board I am sure someone tried to push core linux kernel bits upstream ...


but hw design is harder than it looks.






        But of course you better to doublecheck what v4l2 tools says ...


    So far no other  pixel formats found:

    v4l2-ctl -V
    Format Video Capture:
        Width/Height      : 720/576
        Pixel Format      : 'YUYV' (YUYV 4:2:2)
        Field             : None
        Bytes per Line    : 1440
        Size Image        : 829440
        Colorspace        : sRGB
        Transfer Function : Rec. 709
        YCbCr/HSV Encoding: ITU-R 601
        Quantization      : Default (maps to Limited Range)
        Flags             :




        Sorry for "too generic" answer, few years ago I/we looked
        into "direct RF capture" and there getting 10bit signal was
        possible, with custom hardware, slow offline processing and
        invasive hoockup to VCR's internals.


    Similar I bought and captured a few ProRes422 HQ few files in 2016
    with Blackmagic Design's HyperDeck Shuttle+AD miniconverter+SSD
    recorder.
    But some years later, BMD's fw support became EOL, and the devices
    became non-working :(











-- Cin mailing list
            Cin@lists.cinelerra-gg.org
            https://lists.cinelerra-gg.org/mailman/listinfo/cin


-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to