[Cin] our ffv1.mkv profile

Andrew Randrianasulu randrianasulu at gmail.com
Sun Dec 26 23:44:53 CET 2021


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.

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



>
>     * 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

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

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
>>>>
>>>> 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
>>>>
>>>> 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
>>>>
>>> --
>>> 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/20211227/f51e989c/attachment-0001.htm>


More information about the Cin mailing list