[Cin] Analog S-Video or HDV capture via HDMI-USB to FFV1.mkv in realtime

Andrew Randrianasulu randrianasulu at gmail.com
Wed Feb 8 00:52:17 CET 2023


ср, 8 февр. 2023 г., 01:35 Terje J. Hanssen via Cin <
cin at lists.cinelerra-gg.org>:

>
>
> Den 02.02.2023 01:46, skrev Terje J. Hanssen:
>
> .......
>
>
> but I prepare myself to test and use one method left with regards to
> "Personal Video Archiving".
>
> Therefore I have ordered two selected, inexpensive devices (the urls here
> are just for English language):
>
> 1) Capture Card USB HDMI 4K to 1080P USB-C adapter (Speedy USB
> 3.2/3.1/3.0, 60 Hz and 1080p FHD.)
>
> https://www.turascandinavia.com/en/products/computer/microphone-webcam/webcams/74257
>
>    - Fluid video recordings without delays or distortions during live
>    streaming
>    - Linux not mentioned, but assumed this is a standard supported UVC.
>    OBS and VLC is mentioned.
>
>
> Then the first item, Hama Video Recording Stick, HDMI 4k - USB3.x is
> received. It promises:
> "Fluid video recordings without delays or distortions during live
> streaming, thanks to a picture frequency of 60 Hz and 1080p with Full HD.
> Transform high-quality video cameras into a high-resolution USB web camera".
>
> I have done a quick, first test using my Sony HDR-FX7E camera. This is a
> HDV 1080i camcorder with MPEG-2 video compression at 25 mbps on tape
> 1440x1080, 50i25fps, 4:2:0 and MP2 stereo audio. Currently it's cassette
> deck is broken and needs repair service.
>
> But according to Steve Mullen's V1 and FX7 handbook (not mentioned in the
> manual):
>
> 1. When the camera is operating, the EIP (Enhanced Image Processor)
> generates uncompressed 1440x1080i with a 4:2:2 color space. Digital 4:2:2
> data are output via the HDMI port while 4:2:2 analog is output via
> component-out. Therefore, you can record 4:2:2 live HD video from the
> camera without MPEG-2 compression. V1 and FX7 provide an HDMI output port
> that carries uncompressed 4:2:2, 8-bit, digital video plus dual-channel,
> PCM, 16-bit, 48kHz audio When the camera is running.
>
> 2. If you are playing a 1080i50 or 1080i60 HDV tape. The 4:2:0 MPEG-2 is
> decoded and chroma up-scaled to a 4:2:2. The HDMI
> chip downscales 1440 to 1280 while it up-scales 540 to 720. The result is
> 720p50 or 720p60, which is output via HDMI.
>
> That is, I have tested section 1 now, but see now that I didn't test
> 1440x1080 resolution. The only resolution I got to work at 25 fps was
> 720x576 (SD), while HD 1280x720 and FHD 1920x1080 were set down to 10 fps
> and 5 fps respectively by the driver and caused jumpy playback.
>

Did you tried to force specific format (uncompressed) before -i parameter
for ffmpeg? Also look out for usb2 vs usb3 ports? Shouldn't capture device
hang on bus 002 (usb 3.0) root hub, instead of bus 001 (usb 2.0 root hub),
from lsusb below?



> Someone here that have suggestion to possibly modified syntax or can
> verify that the driver doesn't manage this?
>
> Another (setup) problem, there was no audio recorded or heard during
> playback!?
>
> In the following I list the test command syntax I've collectedf and tried
> with shortened output (yet long):
> To explain, I have also another USB 2.0 Webcam connected, beside the new
> HDMI-USB3 Videstick.
>
> Verify the devices, drivers and formats:
> ---------------------------------------
> dmesg | tail
> [22706.060759] perf: interrupt took too long (2521 > 2500), lowering
> kernel.perf_event_max_sample_rate to 79250
> [32105.561575] perf: interrupt took too long (3158 > 3151), lowering
> kernel.perf_event_max_sample_rate to 63250
> [40586.477420] usb 1-5: USB disconnect, device number 2
> [40599.099612] usb 1-5: new high-speed USB device number 5 using xhci_hcd
> [40599.250960] usb 1-5: New USB device found, idVendor=534d,
> idProduct=2109, bcdDevice=21.00
> [40599.250972] usb 1-5: New USB device strings: Mfr=1, Product=2,
> SerialNumber=0
> [40599.250978] usb 1-5: Product: USB Video
> [40599.250984] usb 1-5: Manufacturer: MACROSILICON
> [40599.252310] usb 1-5: Found UVC 1.00 device USB Video (534d:2109)
> [40599.256234] hid-generic 0003:534D:2109.0006: hiddev96,hidraw0: USB HID
> v1.10 Device [MACROSILICON USB Video] on usb-0000:00:14.0-5/input4
> -----------------------------
>
> lsusb
> Bus 002 Device 003: ID 05e3:0732 Genesys Logic, Inc. All-in-One Cardreader
> Bus 002 Device 002: ID 0bc2:2038 Seagate RSS LLC Expansion HDD
> Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
> Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver
> Bus 001 Device 005: ID 534d:2109 MacroSilicon USB Video
> Bus 001 Device 004: ID 0c45:6340 Microdia Camera
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
>
>
> udevadm info  /dev/video* | egrep 'DEVNAME|ID_V4L_PRODUCT'
> E: DEVNAME=/dev/video0
> E: ID_V4L_PRODUCT=USB Video: USB Video
> E: DEVNAME=/dev/video1
> E: ID_V4L_PRODUCT=USB Video: USB Video
> E: DEVNAME=/dev/video2
> E: ID_V4L_PRODUCT=USB 2.0 Camera: HD 720P Webcam
> E: DEVNAME=/dev/video3
> E: ID_V4L_PRODUCT=USB 2.0 Camera: HD 720P Webcam
>
> lsusb | egrep 'Video|Camera'
> Bus 001 Device 005: ID 534d:2109 MacroSilicon USB Video
> Bus 001 Device 004: ID 0c45:6340 Microdia Camera
>
> --------------------
>
> ll /dev/video*
> crw-rw----+ 1 root video 81, 0 feb.   7 20:22 /dev/video0
> crw-rw----+ 1 root video 81, 1 feb.   7 20:22 /dev/video1
> crw-rw----+ 1 root video 81, 2 feb.   7 09:05 /dev/video2
> crw-rw----+ 1 root video 81, 3 feb.   7 09:05 /dev/video3
>
> -----------------------
>
> v4l2-ctl --list-devices
> USB 2.0 Camera: HD 720P Webcam (usb-0000:00:14.0-11):
>         /dev/video2
>         /dev/video3
>
> USB Video: USB Video (usb-0000:00:14.0-5):
>         /dev/video0
>         /dev/video1
>
> -------------------------
>
> ffmpeg -f v4l2 -list_formats all -i /dev/video0
> ffmpeg -hide_banner -f v4l2 -list_formats all -i /dev/video0
> [video4linux2,v4l2 @ 0x556cf63570c0] Compressed:       mjpeg :
> Motion-JPEG : 1920x1080 1600x1200 1360x768 1280x1024 1280x960 1280x720
> 1024x768 800x600 720x576 720x480 640x480
> [video4linux2,v4l2 @ 0x556cf63570c0] Raw       :     yuyv422 :
> YUYV 4:2:2 : 1920x1080 1600x1200 1360x768 1280x1024 1280x960 1280x720
> 1024x768 800x600 720x576 720x480 640x480
> /dev/video0: Immediate exit requested
>
> ffmpeg -hide_banner -f v4l2 -list_formats all -i /dev/video1
> [video4linux2,v4l2 @ 0x5560c0bc70c0] ioctl(VIDIOC_G_INPUT): Inappropriate
> ioctl for device
> /dev/video1: Inappropriate ioctl for device
> ----------------
>
> v4l2-ctl --all
> Driver Info (not using libv4l2):
>         Driver name   : uvcvideo
>         Card type     : USB Video: USB Video
>         Bus info      : usb-0000:00:14.0-5
>         Driver version: 5.14.21
>         Capabilities  : 0x84A00001
>                 Video Capture
>                 Metadata Capture
>                 Streaming
>                 Extended Pix Format
>                 Device Capabilities
>         Device Caps   : 0x04200001
>                 Video Capture
>                 Streaming
>                 Extended Pix Format
> Priority: 2
> Video input : 0 (Camera 1: ok)
> Format Video Capture:
>         Width/Height      : 1920/1080
>         Pixel Format      : 'MJPG'
>         Field             : None
>         Bytes per Line    : 0
>         Size Image        : 4147200
>         Colorspace        : sRGB
>         Transfer Function : Rec. 709
>         YCbCr/HSV Encoding: ITU-R 601
>         Quantization      : Default (maps to Full Range)
>         Flags             :
> Crop Capability Video Capture:
>         Bounds      : Left 0, Top 0, Width 1920, Height 1080
>         Default     : Left 0, Top 0, Width 1920, Height 1080
>         Pixel Aspect: 1/1
> Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080
> Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080
> Streaming Parameters Video Capture:
>         Capabilities     : timeperframe
>         Frames per second: 30.000 (30/1)
>         Read buffers     : 0
>                      brightness 0x00980900 (int)    : min=-128 max=127
> step=1 default=-11 value=-11
>                        contrast 0x00980901 (int)    : min=0 max=255 step=1
> default=148 value=148
>                      saturation 0x00980902 (int)    : min=0 max=255 step=1
> default=180 value=180
>                             hue 0x00980903 (int)    : min=-128 max=127
> step=1 default=0 value=0
>
> -----------------
>
> v4l2-ctl --list-formats-ext
> ioctl: VIDIOC_ENUM_FMT
>         Index       : 0
>         Type        : Video Capture
>         Pixel Format: 'MJPG' (compressed)
>         Name        : Motion-JPEG
>                 Size: Discrete 1920x1080
>                         Interval: Discrete 0.017s (60.000 fps)
>                         Interval: Discrete 0.033s (30.000 fps)
>                         Interval: Discrete 0.040s (25.000 fps)
>                         Interval: Discrete 0.050s (20.000 fps)
>                         Interval: Discrete 0.100s (10.000 fps)
>                .........
>                 Size: Discrete 1280x720
>                         Interval: Discrete 0.017s (60.000 fps)
>                         Interval: Discrete 0.020s (50.000 fps)
>                         Interval: Discrete 0.033s (30.000 fps)
>                         Interval: Discrete 0.050s (20.000 fps)
>                         Interval: Discrete 0.100s (10.000 fps)
>                 ......
>                 Size: Discrete 720x576
>                         Interval: Discrete 0.017s (60.000 fps)
>                         Interval: Discrete 0.020s (50.000 fps)
>                         Interval: Discrete 0.033s (30.000 fps)
>                         Interval: Discrete 0.050s (20.000 fps)
>                         Interval: Discrete 0.100s (10.000 fps)
>
>         Index       : 1
>         Type        : Video Capture
>         Pixel Format: 'YUYV'
>         Name        : YUYV 4:2:2
>                 Size: Discrete 1920x1080
>                         Interval: Discrete 0.200s (5.000 fps)
>                 ......
>                 Size: Discrete 1280x720
>                         Interval: Discrete 0.100s (10.000 fps)
>                 .......
>                 Size: Discrete 720x576
>                         Interval: Discrete 0.040s (25.000 fps)
>                         Interval: Discrete 0.050s (20.000 fps)
>                         Interval: Discrete 0.100s (10.000 fps)
>                         Interval: Discrete 0.200s (5.000 fps)
>                 .........
>
> Encoding:
> --------
> ffmpeg -hide_banner -f v4l2 -framerate 25 -video_size 720x576 -i
> /dev/video0 -codec:v ffv1 -codec:a pcm_s16le -f matroska 720x576_ffv1.mkv
>
> ffmpeg -hide_banner -f v4l2 -framerate 25 -video_size 1280x720 -i
> /dev/video0 -codec:v ffv1 -codec:a pcm_s16le -f matroska 1280x720_ffv1.mkv
> [video4linux2,v4l2 @ 0x559d031190c0] The driver changed the time per frame
> from 1/25 to 1/10
>
> ffmpeg -hide_banner -f v4l2 -framerate 25 -video_size 1920x1080 -i
> /dev/video0 -codec:v ffv1 -codec:a pcm_s16le -f matroska 1920x1080_ffv1.mkv
> [video4linux2,v4l2 @ 0x55ce18d060c0] The driver changed the time per frame
> from 1/25 to 1/5
>
> ffmpeg -hide_banner -f v4l2 -framerate 25 -video_size 1920x1080 -i
> /dev/video0 -codec:v v210 -codec:a pcm_s16le -f matroska 1920x1080_v210.mkv
> [video4linux2,v4l2 @ 0x55944900e0c0] The driver changed the time per frame
> from 1/25 to 1/5
>
>
> Recorded test video files and probing formats:
> ---------------------------------------------
>
> du -sh *
> 258M    1280x720_ffv1.mkv
> 292M    1920x1080_ffv1.mkv
> 1,1G    1920x1080_v210.mkv
> 61M     720x576_ffv1.mkv
> -----------------------------
>
>
> ffprobe -hide_banner 720x576_ffv1.mkv
> Input #0, matroska,webm, from '720x576_ffv1.mkv':
>   Metadata:
>     ENCODER         : Lavf58.76.100
>   Duration: 00:00:09.20, start: 0.000000, bitrate: 55385 kb/s
>   Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p(tv, progressive),
> 720x576, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
>     Metadata:
>       ENCODER         : Lavc58.134.100 ffv1
>       DURATION        : 00:00:09.200000000
> -----------
>
> ffprobe -hide_banner 1280x720_ffv1.mkv
> Input #0, matroska,webm, from '1280x720_ffv1.mkv':
>   Metadata:
>     ENCODER         : Lavf58.76.100
>   Duration: 00:00:38.90, start: 0.000000, bitrate: 55512 kb/s
>   Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p(tv, progressive),
> 1280x720, 10 fps, 10 tbr, 1k tbn, 1k tbc (default)
>     Metadata:
>       ENCODER         : Lavc58.134.100 ffv1
>       DURATION        : 00:00:38.900000000
> --------------
>
> ffprobe -hide_banner 1920x1080_ffv1.mkv
> Input #0, matroska,webm, from '1920x1080_ffv1.mkv':
>   Metadata:
>     ENCODER         : Lavf58.76.100
>   Duration: 00:00:53.40, start: 0.000000, bitrate: 45747 kb/s
>   Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p(tv, progressive),
> 1920x1080, 5 fps, 5 tbr, 1k tbn, 1k tbc (default)
>     Metadata:
>       ENCODER         : Lavc58.134.100 ffv1
>       DURATION        : 00:00:53.400000000
> ----------------
>
> ffprobe -hide_banner 1920x1080_v210.mkv
> [matroska,webm @ 0x5563ca6d30c0] Stream #0: not enough frames to estimate
> rate; consider increasing probesize
> Input #0, matroska,webm, from '1920x1080_v210.mkv':
>   Metadata:
>     ENCODER         : Lavf58.76.100
>   Duration: 00:00:41.40, start: 0.000000, bitrate: 221185 kb/s
>   Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le(tv,
> progressive), 1920x1080, 5 fps, 1k tbr, 1k tbn, 1k tbc (default)
>     Metadata:
>       ENCODER         : Lavc58.134.100 v210
>       DURATION        : 00:00:41.400000000
>
> ---------------------------
>
>
>
>
>
> 2) Scart AV SV to HDMI Converter Switcher S Video Composite RCA DVD HD TV
> adapter (3-4 weeks delivery time
> https://www.ebay.com.au/itm/295472602625
>
>    - The 3-in-1 S-/video/RCA/SCART to HDMI converter is a universal
>    converter for analog video input to HDMI output.
>    - Analog to digital converter (ADC), 10 bits maximum 1,62 MSPS
>    sampling,
>
>
>
> Q I have not yet found a definitiv ffmpeg FFV1 v 3 syntax guide for SD and
> HDV capturing and hope for suggestions and comments here!?
>
> 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
>
>     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 -
>
>
>
> 4, Regarding FFV1 lossless compression in realtime
> Comparison tests (2013/2015) have shown that FFV1 produced the smallest
> files at the fastest speed. It can be used to capture SD material in
> realtime, and HD possibly, too. This according to a 2012/2015 article,
> where I have extracted the results for FFV1 v.3 in the tables below:
>
>
> http://www.av-rd.com/knowhow/video/comparison_video_codecs_containers.html#codec_tests
> NOTE: This is a consumer grade, off-the-shelf PC setup.
>
> Hardware:
> CPU: Intel(R) QuadCore(TM) i7-2600K CPU @ 3.40GHz
> RAM: 8 GB
> Disk: Intel SSDSA2CW080G3 (SSD)
> Software:
> Operating System: GNU/Linux (Xubuntu 12.04.1, 64bit)
> Transcoding tool: FFmpeg (version git N-59183-g3e62654, Dec 17 2013)
> Video source file: VQEG reference video "football"
> <http://media.xiph.org/video/derf/y4m/football_422_ntsc.y4m> (NTSC-SD,
> 720x486px, 30fps, yuv422p, 8bpc)
> Codec Encoding Decoding Filesize % of uncompressed Implementation Details
> FFV1
> <http://www.av-rd.com/knowhow/video/comparison_video_codecs_containers.html#codec_ffv1>
> (version 3) 216 fps 277 fps 111 MiB 46.1% libavcodec (FFmpeg)
> <http://en.wikipedia.org/wiki/Libavcodec> log
> <http://www.av-rd.com/knowhow/video/test_results/football-720x486i30/ffv1.3-libavcodec_ffmpeg_avi.log>,
> framemd5
> <http://www.av-rd.com/knowhow/video/test_results/football-720x486i30/ffv1.3-libavcodec_ffmpeg_avi.framemd5>
>
> Video source file: SVT reference video "park joy"
> <http://media.xiph.org/video/derf/y4m/park_joy_1080p50.y4m>
> (full-HD/1080p, 1920x1080px, 50fps, yuv420p, 8bpc)
> Codec Encoding Decoding Filesize % of uncompressed Implementation Details
> FFV1
> <http://www.av-rd.com/knowhow/video/comparison_video_codecs_containers.html#codec_ffv1>
> (version 3) 31 fps 63 fps 879 MiB 57.2% libavcodec (FFmpeg)
> <http://en.wikipedia.org/wiki/Libavcodec> log
> <http://www.av-rd.com/knowhow/video/test_results/park_joy-1920x1080p50/ffv1.3-libavcodec_ffmpeg_avi.log>,
> framemd5
> <http://www.av-rd.com/knowhow/video/test_results/park_joy-1920x1080p50/ffv1.3-libavcodec_ffmpeg_avi.framemd5>
>
>
> PAL-SD 720x576 stored as YUV422, 10 bpc (bits per component), instead of
> the tested 8 bpc above, seems to me would have enlarged the the filesizes
> with about 25%, or to about 40 GB/hr with FFV1 lossless compressed.
>
> Although the FFV1 compression results above obviously used yuv422p, 8bps
> source SD and FHD files as input, it seems for me that the encoding speeds
> at 216 fps and 31 fps for SD and FHD respectively, assumingly should manage
> realtime FFV1 encoding and streaming of PAL SD and HDV at 25 fps as well,
> especially with a faster i7-6700 x 8 cpu. Comments here?
>
>
> 5. Related 2021-[Cin] threads as background references
>
> [Cin] hdmi capture card (with v4l2)
> https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg02865.html
>
> [Cin] offtopic: Digitize and record Video with A/D USB adapters
> https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg03269.html
>
> [Cin] offtopic: HDMI capture
> https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg02084.html
>
> [Cin] Is SD and HD 422 Video Capture obtainable with V4L(2)?
> https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg03719.html
>
> [Cin] Uncompressed video to lossless compression FFV1/MKV
> https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg03791.html
>
>
> --
> 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/20230208/fd388f3f/attachment-0001.htm>


More information about the Cin mailing list