Den 08.02.2023 00:52, skrev Andrew Randrianasulu:


ср, 8 февр. 2023 г., 01:35 Terje J. Hanssen via Cin <[email protected]>:



    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?

Just "-framerate 25 -video_size 1920x1080" before -i as repeated in the code as follows, where I tested to encode to uncompressed v210 instead of ffv1, but with no change with regards to low 5 fps:

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

I also read a related issue and reply to this post at Superuser, where 1920x1080 was not supported on the webcam.
https://superuser.com/questions/1449252/ffmpeg-captures-from-uvc-dev-video0-in-any-resolution-except-for-1920x1080

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?

This may well work better. I have to admit that I have never studied the difference between shared usb buses. My thought was to try to change the connected usb devices, but tested first the only free usb3 port (blue) on the add-on frontpanel of the workstation. The other two usb3 ports are on the backpanel and are used for the Asus blu-ray burner and 8TB Seagate expansion video disc.

The other usb ports on both panels are usb2 ports, whereof two for the wireless keyboard and mouse on the fronpanel. What I possibly already have mentioned before, is that sometimes if I connect a usb(2) device or memory to the usb3 port on the frontpanel, this cause hang on the keyboard or mouse. But this didn't happend this time with the USB3 capture stick.




    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/[email protected]/msg02865.html

    [Cin] offtopic: Digitize and record Video with A/D USB adapters
    https://www.mail-archive.com/[email protected]/msg03269.html

    [Cin] offtopic: HDMI capture
    https://www.mail-archive.com/[email protected]/msg02084.html

    [Cin] Is SD and HD 422 Video Capture obtainable with V4L(2)?
    https://www.mail-archive.com/[email protected]/msg03719.html

    [Cin] Uncompressed video to lossless compression FFV1/MKV
    https://www.mail-archive.com/[email protected]/msg03791.html

-- Cin mailing list
    [email protected]
    https://lists.cinelerra-gg.org/mailman/listinfo/cin

-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to