[Cin] our ffv1.mkv profile

Terje J. Hanssen terjejhanssen at gmail.com
Wed Dec 29 13:48:00 CET 2021



Den 28.12.2021 05:42, skrev Andrew Randrianasulu:
>
>
> On Monday, December 27, 2021, Terje J. Hanssen 
> <terjejhanssen at gmail.com> wrote:
>
>
>
>     Den 26.12.2021 23:44, skrev Andrew Randrianasulu:
>
>
>
>         On Monday, December 27, 2021, Terje J. Hanssen via Cin
>         <cin at lists.cinelerra-gg.org> wrote:
>
>
>
>             Den 26.12.2021 21:13, skrev Andrew Randrianasulu via Cin:
>
>
>
>                 On Sunday, December 26, 2021, Phyllis Smith via Cin
>                 <cin at lists.cinelerra-gg.org> wrote:
>
>                         for now it seems only ffv1.avi defaults to v.0
>             and mkv
>                         defaults to 3.4
>
>                     For now, how about if I just add a comment to
>             ffv1.mkv about
>                     level numbers?   That way the user will see this
>             if they look
>                     and can decide for themselves.  Otherwise if we
>             make every
>                     possible setting available we will end up with
>             millions of
>                     choices and then if we have new ones labeled _3,
>             when level 4
>                     comes along we would need even more as _4.
>
>
>                 ok, add comment please}
>
>
>             Ok, maybe I'm thinking aload quite "outside the box" here
>         with my
>             questions * below:
>
>             I seems for me Cin-GG supports ffv1.mkv in two instances
>         (did't
>             find other mentioned in the manual either):
>
>                 1) File > Save as: ffv1.mkv (that is save current
>         edited video
>             from Cin-GG)
>
>                     and
>
>                 2) File > Record
>                     using Video compression according to
>
>                     Settings > Preferences > Record
>                         File format: FFMPEG mkv
>                         Video wrench: Compression: ffv1.mkv or
>         user_ffv1.mkv
>
>                 * Could i.e the empty <Format box> here be used to input
>             levels and/or other user options?
>
>                 Further down on this window
>
>                     Video IN
>                         Record driver: i.e Video4Linux
>
>                 * Or possibly get BM Intensity/declink SDK card
>             working/integrated with ffmpeg/Cin-GG?
>
>
>         if you find programmer familiar with both ends.. Cin-gg uses
>         her own code for dealing with v4l2, not ffmpeg's.
>
>
>     So Cin-gg doesn't use ffmpeg to capture/record video directly from
>     a video/TV capture card?
>
>
> she uses ffmpeg for compression/muxing (and some effects), but not for 
> interfacing with device...
>
>
>     But I'm not sure I really understand where Record/prefs/preset
>     ffv1.mkv (2 above) get into this picture?
>     Just to record (encode and save) the pre-captured video in a
>     lossless ffv1.mkv file format?
>
>
> no, you are right - this option selects capture codec
>
>
>     What would possible benefits be if ffmpeg had been used to
>     capture/record video via the capture card?
>     Or do we miss something without ffmpeg doing this?
>
>
> we miss declink support )

Thank you for explaining and clarifying this.

Or said in another way, if ffmpeg had been implemented also for 
capturing in Cin-GG  (to compare with "ffmpeg first"), ffmpeg could have 
be utilized (used) to support video capture and playback with both V4L2, 
Decklink or other cards(?)
With the possibility to record uncompressed video in FFV1.mkv in 
realtime, if and when the hardwares manage the bit rate.


https://trac.ffmpeg.org/wiki/Capture/V4L2_ALSA
http://underpop.online.fr/f/ffmpeg/help/decklink.htm.gz

>
>
>     In the case of BM Decklink or Intensity Pro 4k, Media Express is
>     available (deb, rpm on Linux) for free capture and playback
>     uncompressed 8 or 10-bit video or compressed ProRes.
>
>
> I also noticed there is no way to capture 10 bit rgb/yuv via v4l2.. ( 
> (simply no define for such formats)
>
> https://github.com/torvalds/linux/blob/master/include/uapi/linux/videodev2.h 
> <https://github.com/torvalds/linux/blob/master/include/uapi/linux/videodev2.h>
>
>
>
>     A forum user had found out that Quicktime uncompressed 10 bit
>     4:2:2 .MOV was the same codec as AJA v210 for 10-bit uncompressed,
>     i.e. it did not require rendering when placed into the FCP
>     timeline. Bit rates examples:
>
>     625 PAL uncompressed 10 bit @ 720 x 576 @ 25fps = 26 MB per/sec,
>     or 93 GB per/hr.
>     720p HDTV uncompressed 10 bit @ 1280 x 720 @ 59.94 = 140 MB
>     per/sec, or 494 GB per/hr.
>     1080i and 1080p HDTV uncompressed:
>     10 bit @ 1920 x 1080 @ 25fps = 132 MB per/sec, or 463 GB per/hr.
>
>
> yeah, and if you want more than 1 stream multiply this by num. of 
> streams..

Not so important here, but I complement:
The above bit rates and file sizes were found in papers for my Hyperdeck 
Shuttle 2 SSD recorder (external), which was said to record 10 bit 
uncompressed 4:2:2 video in QT .mov identical with Decklink cards. Now 
I've found some smaller number sizes in the 2008 operation manual for 
Intensity Pro card (the version replaced with Pro 4k):

    SD 4:2:2 PAL uncompressed 10 bit @ 720 x 576 @ 25fps = 21.5 MB
    per/sec, or 75.5 GB per/hr.
    720p HDTV uncompressed 10 bit @ 1280 x 720 @ 59.94 = 106.8 MB
    per/sec, or 375.7GB per/hr.
    1080i HD 4:2:2 uncompressed:
    1920 x 1080/50i = 100.3 MB per/sec, or 352.8 GB per/hr.

I don't know how the bit rates and file sizes can be calculated 
differently for obviously identical cases(?)

>
>
>
>         https://gist.github.com/afriza/879fed4ede539a5a6501e0f046f71463
>         <https://gist.github.com/afriza/879fed4ede539a5a6501e0f046f71463>
>
>         (sdk 12 should be compatible with ffmpeg 4.4?)
>
>         note --extra-cflags="-I$HOME/ffmpeg_build/include
>         -I$HOME/ffmpeg_sources/BMD_SDK/include -I/usr/lib/cuda/include" \
>
>           and
>
>         --enable-nonfree \
>           --enable-decklink \
>
>         addditional confugure switches for ffmpeg (you can drop cuda
>         includes if you do not have proprietary nvidia driver/card
>         installed, if course)
>
>         ---
>         List devices:
>
>         ffmpeg -f decklink -list_devices 1 -i dummy
>
>         List supported formats:
>
>         ffmpeg -f decklink -list_formats 1 -i 'DeckLink Quad HDMI
>         Recorder (1)'
>
>         Capture Camera at 23.976fps to h264:
>
>         ffmpeg -y -thread_queue_size 90 -hwaccel cuda \
>         -channels 2 -raw_format yuv422p10 -format_code 23ps -f
>         decklink -i 'DeckLink Quad HDMI Recorder (1)' \
>         -c:a pcm_s16le -c:v libx264 -preset ultrafast -crf 10
>         ~/camera264.mov
>
>         ---
>
>         obviously you can try to just copy frames into mov for 'as
>         uncompressed as possible' and hope your disk(s) will keep up!
>         (I've heard stories some ssd dislike being full - their write
>         speed drop down dramatically.. so try to write to not very
>         full ssd. Not sure abount newer nvme.. or raids from them!)
>
>         from
>
>         https://github.com/wonderunit/storyboarder/wiki/Recording-Live-Camera-and-Desktop-on-Linux-using-Blackmagic-Decklink
>         <https://github.com/wonderunit/storyboarder/wiki/Recording-Live-Camera-and-Desktop-on-Linux-using-Blackmagic-Decklink>
>
>
>
>
>                 * Get the option to preserve/archive transcoded ffv1.mkv
>             directly to a storage device?
>
>
>         probably not? (no support for arbitrary compressed frames and
>         their metadata in internal representation.. not impossible,
>         but no one did it yet)
>
>
>
>                 * And/or get the option to load /pipe (uncompressed) video
>             files recorded on one storage (SSD) device,
>                   compress it with the right preset ffv1.mkv and save
>         it to
>             another storage device.
>
>
>         should be default mode of operation for files (not sure about
>         purely raw video w/o any container, apart from dvvideo, but
>         some types of raw rgb/yuv in avi/mov should work.. test a
>         bit?) , for piping...
>
>         try video loopback?
>
>         https://github.com/umlaeute/v4l2loopback
>         <https://github.com/umlaeute/v4l2loopback>
>
>         it may even work for declink input, if your ffmpeg can input
>         frames from declink and output to v4l2..
>
>
>         https://superuser.com/questions/1330959/what-is-the-right-ffmpeg-output-format-for-a-v4l2-loopback-device
>         <https://superuser.com/questions/1330959/what-is-the-right-ffmpeg-output-format-for-a-v4l2-loopback-device>
>
>         some variation of
>
>          ffmpeg examples
>         Grab desktop:
>
>         ffmpeg -f x11grab -framerate 25 -video_size 1280x720 -i
>         :0.0+0,0 -f v4l2 /dev/video0
>         Send file:
>
>         ffmpeg -re -i input.mp4 -f v4l2 /dev/video0
>
>         or (in answers)
>
>         ffmpeg -f x11grab -r 60 -s 1920x1080 -i :0.0+0,0 -vcodec
>         rawvideo -pix_fmt yuv420p -f v4l2 /dev/video0
>
>         guess you can try variation of such cmdline  with declink
>         input after compiling non-free ffmpeg with Blackmagick sdk...
>
>         we also probably can use such line for testing non-trivial
>         v4l2 formats in Cinelerra-gg ..
>
>
>
>                     On Sat, Dec 25, 2021 at 9:29 PM Andrew
>             Randrianasulu via Cin
>                     <cin at lists.cinelerra-gg.org> wrote:
>
>
>
>                         On Sunday, December 26, 2021, Terje J. Hanssen
>             via Cin
>                         <cin at lists.cinelerra-gg.org> wrote:
>
>
>
>                             Den 25.12.2021 17:35, skrev Andrew
>             Randrianasulu via Cin:
>
>                                 seems to miss level=3 setting
>
>                                 $ cat bin/ffmpeg/video/ffv1.avi
>                                 avi ffv1
>                                 $ cat bin/ffmpeg/video/ffv1.mkv
>                                 matroska ffv1
>                                 threads=8
>                                 context=1
>                                 slices=30
>                                 $ cat bin/ffmpeg/video/ffv1.mov
>                                 mov ffv1
>                                 #coder=0
>                                 context=1
>                                 g=1
>                                 level=3
>                                 threads=16
>                                 slices=16
>                                 slicecrc=1
>                                 #pass=2
>                                 $
>
>                                 not sure if we should modify our
>             avi/mkv profikes
>                                 or add new (may be with _v3 name) ones?
>
>
>                             Without own experience yet, I would ask if
>             there any
>                             reason to not use the latest and more
>             feature rich
>                             FFV1 level=version 3? Backward
>             compitibility, typical
>                             can v. 3 uncompress v. 1 compressed archives?
>
>                         good question... I have older avplay (~2012)
>             here and
>                         will test.
>
>                         for now it seems only ffv1.avi defaults to v.0
>             and mkv
>                         defaults to 3.4 due to crc protection per
>             slice, i think
>                         (looked into ffmpeg encoder source)
>
>                         {filenames were just that I had in inputbox, not
>                         indicative of content}
>
>
>                         $ mediainfo ~/h265-p2.avi
>                         General
>                         Complete name :
>             /data/data/com.termux/files/home/h265-p2.avi
>                         Format : AVI
>                         Format/Info : Audio Video Interleave
>                         File size : 8.82 MiB
>                         Duration : 3 s 720 ms
>                         Overall bit rate mode : Variable
>                         Overall bit rate : 19.9 Mb/s
>                         Writing application : Lavf58.76.100
>
>                         Video
>                         ID : 0
>                         Format : FFV1
>                         Format version : Version 0
>                         Codec ID : FFV1
>                         Duration : 3 s 720 ms
>                         Bit rate mode : Variable
>                         Bit rate : 19.9 Mb/s
>                         Width : 720 pixels
>                         Height : 576 pixels
>                         Display aspect ratio : 5:4
>                         Frame rate : 25.000 FPS
>                         Standard : PAL
>                         Color space : YUV
>                         Chroma subsampling : 4:2:0
>                         Bit depth : 8 bits
>                         Compression mode : Lossless
>                         Bits/(Pixel*Frame) : 1.916
>                         Stream size : 8.81 MiB (100%)
>                         coder_type : Golomb Rice
>
>
>                         $ mediainfo ~/h265-p2.mkv
>                         General
>                         Unique ID : 3614689160526176147752985704114819283
>                         (0x2B829EF6988D4EEDCB446A8612210D3)
>                         Complete name :
>             /data/data/com.termux/files/home/h265-p2.mkv
>                         Format : Matroska
>                         Format version : Version 4
>                         File size : 7.48 MiB
>                         Duration : 3 s 80 ms
>                         Overall bit rate mode : Variable
>                         Overall bit rate : 20.4 Mb/s
>                         Writing application : Lavf58.76.100
>                         Writing library : Lavf58.76.100
>                         ErrorDetectionType : Per level 1
>
>                         Video
>                         ID : 1
>                         Format : FFV1
>                         Format version : Version 3.4
>                         Codec ID : V_MS/VFW/FOURCC / FFV1
>                         Duration : 3 s 80 ms
>                         Bit rate mode : Variable
>                         Bit rate : 20.0 Mb/s
>                         Width : 720 pixels
>                         Height : 576 pixels
>                         Display aspect ratio : 5:4
>                         Frame rate mode : Constant
>                         Frame rate : 25.000 FPS
>                         Standard : PAL
>                         Color space : YUV
>                         Chroma subsampling : 4:2:0
>                         Bit depth : 8 bits
>                         Scan type : Progressive
>                         Compression mode : Lossless
>                         Bits/(Pixel*Frame) : 1.927
>                         Stream size : 7.34 MiB (98%)
>                         Default : Yes
>                         Forced : No
>                         Color range : Full
>                         Matrix coefficients : BT.470 System B/G
>                         coder_type : Golomb Rice
>                         MaxSlicesCount : 30
>                         ErrorDetectionType : Per slice
>
>
>
>                             I conclude that a couple of referense
>             papers on the
>                             web say and use level 3 in their
>             profile/presets:
>
>                             1) Video into Matroska/FFV1
>             https://avpres.net/FFmpeg/im_FFV1.html
>             <https://avpres.net/FFmpeg/im_FFV1.html>
>                             <https://avpres.net/FFmpeg/im_FFV1.html
>             <https://avpres.net/FFmpeg/im_FFV1.html>>
>
>                             We advise to use only the version 3 of FFV1 in
>                             production, because the version 1 is
>             deprecated, the
>                             version 2 has never really existed, and
>             the version 4
>                             is currently under development.
>
>
>                             Transcode a video file using the FFV1
>             codec into the
>                             Matroska container for preservation purposes.
>                             Solution
>
>                                 ffmpeg \
>                                     -i input_file \
>                                     -c:v ffv1 \
>                                     -level 3 \
>                                     -coder 1 \
>                                     -context 1 \
>                                     -g 1 \
>                                     -slices 24 \
>                                     -slicecrc 1 \
>                                     -c:a copy \
>                                     output_file.mkv
>
>                             2) Presets for FFV1 and MKV: Choosing the
>             right
>                             parameters for the job (ffv1_params.pdf)
>             https://docs.google.com/viewer?url=https%3A%2F%2Fmediaarea.net%2FEvents%2F2019-12-05_NoTimeToWait4%2F03.%2520Peter%2520B.%2520-%2520Presets%2520for%2520FFV1%2520and%2520MKV%2C%2520Choosing%2520the%2520right%2520parameters%2520for%2520the%2520job%2Fffv1_params.pdf&pdf=true
>             <https://docs.google.com/viewer?url=https%3A%2F%2Fmediaarea.net%2FEvents%2F2019-12-05_NoTimeToWait4%2F03.%2520Peter%2520B.%2520-%2520Presets%2520for%2520FFV1%2520and%2520MKV%2C%2520Choosing%2520the%2520right%2520parameters%2520for%2520the%2520job%2Fffv1_params.pdf&pdf=true>
>                            
>             <https://docs.google.com/viewer?url=https%3A%2F%2Fmediaarea.net%2FEvents%2F2019-12-05_NoTimeToWait4%2F03.%2520Peter%2520B.%2520-%2520Presets%2520for%2520FFV1%2520and%2520MKV%2C%2520Choosing%2520the%2520right%2520parameters%2520for%2520the%2520job%2Fffv1_params.pdf&pdf=true
>             <https://docs.google.com/viewer?url=https%3A%2F%2Fmediaarea.net%2FEvents%2F2019-12-05_NoTimeToWait4%2F03.%2520Peter%2520B.%2520-%2520Presets%2520for%2520FFV1%2520and%2520MKV%2C%2520Choosing%2520the%2520right%2520parameters%2520for%2520the%2520job%2Fffv1_params.pdf&pdf=true>>
>
>                             Level = FFV1 version
>                             page 9 (of 30)
>
>                                 0
>                                 1 (Default)
>                                 3 (Recommended)
>
>
>                             FFmpeg recipe (PAL)
>                             page 27 (of 30)
>
>                             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
>
>
>
>
>
>
>
>
>
>
>
>                             --                 Cin mailing list
>             Cin at lists.cinelerra-gg.org
>             https://lists.cinelerra-gg.org/mailman/listinfo/cin
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin>
>                            
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin>>
>
>                         --             Cin mailing list
>             Cin at lists.cinelerra-gg.org
>             https://lists.cinelerra-gg.org/mailman/listinfo/cin
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin>
>                        
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin
>             <https://lists.cinelerra-gg.org/mailman/listinfo/cin>>
>
>
>
>



More information about the Cin mailing list