[Cin] HDMI video streams to lossless compressed FFV1.MKV
Andrew Randrianasulu
randrianasulu at gmail.com
Tue May 6 22:54:49 CEST 2025
вт, 6 мая 2025 г., 23:49 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
> Den 05.05.2025 16:05, skrev Andrew Randrianasulu:
>
>
>
> пн, 5 мая 2025 г., 17:00 Andrew Randrianasulu <randrianasulu at gmail.com>:
>
>>
>>
>> пн, 5 мая 2025 г., 16:26 Terje J. Hanssen via Cin <
>> cin at 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?
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 at lists.cinelerra-gg.org
>>> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20250506/bf4ec505/attachment-0001.htm>
More information about the Cin
mailing list