LINUX.ORG.RU

Вопрос по генерации HDR metadata

 , ,


0

2

Я так смотрю эту самую метадату в основном из готовых файлов выгрызают, или генерят чем-то типа DaVinchi resolve:

https://www.magiclantern.fm/forum/index.php?topic=26428.0

https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-ffmpeg/

Я тут наткнулся на ветку на дум9, с нее ссылка на скриптик, скриптик хочет vapoursynth который есть в Арче, но у меня нет арча

https://forum.doom9.org/archive/index.php/t-177135.html (" How to analyze an HDR video for peak brightness level for the setting of metadata? " )

https://aur.archlinux.org/packages/vapoursynth-plugin-awsmfunc-git

Никто не желает попробовать и сказать что скриптик пишет?

from vapoursynth import core
import awsmfunc as awf
core.num_threads = 8

clip = core.ffms2.Source("video.mkv")
# Crop, or whatever

# Defaults to reject outliers, and not downscaling
awf.measure_hdr10_content_light_level(clip)

Run as: python script.vpy It runs at ~20 fps for 2160p here, ~70 at 1080p.

====

★★★★

Running HDR10 content light level measurements detection...
Traceback (most recent call last):
  File "/home/tima/script.vpy", line 9, in <module>
    awf.measure_hdr10_content_light_level(clip)
  File "/usr/lib/python3.11/site-packages/awsmfunc/detect.py",
line 783, in measure_hdr10_content_light_level
    _detect(clip, "HDR10 content light level measurements", do_it, quit_after=False, print_detections=False)
  File "/usr/lib/python3.11/site-packages/awsmfunc/detect.py",
line 75, in _detect
    processed.output(f, progress_update=partial(awf_vs_out_updated, state=state))
  File "src/cython/vapoursynth.pyx", line 2101, in vapoursynth.VideoNode.output
  File "src/cython/vapoursynth.pyx", line 1887, in frames
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line
456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line
401, in __get_result
    raise self._exception
vapoursynth.Error: Resize error: Resize error 3074: no path between colorspaces (2/16/9 => 0/16/10). May need to specify additional colorspace parameters.

исходник брался с видеокамеры Canon Legria HF G25 в формате .MTS и был переконвертирован через команду ffmpeg -i 00000.MTS -vcodec copy -an video.mkv. Такое ощущение будто у меня не та цветовая палитра которая требуется, как переконвертировать в нужную - не знаю.

Goat ★★
()
Последнее исправление: Goat (всего исправлений: 1)
Ответ на: комментарий от Goat

Спасибо за тест! Думаю при конвертации нужно явно указать копирование цветовой метадаты.. Вроде как с 4.4 должно поддерживаться.

Можно посмотреть mediainfo до и после.

https://superuser.com/questions/1669751/how-to-pass-colours-through-with-ffmpeg

А что будет если в скрипт прямо ts запихать как источник?

Andrew-R ★★★★
() автор топика
Ответ на: комментарий от Goat

Посмотрел на характеристики Кэнона - хм, кажется он только в h264 пишет, там HDR технически вроде как возможен но почти не применяется?

https://www.geeksforgeeks.org/how-to-capture-hdr-videos-in-android-13/

тут везде hevc …

Возможно скрипт просто не рассчитан на НЕ HDR видео

Andrew-R ★★★★
() автор топика
Ответ на: комментарий от Goat

По HDR видеокамерам нашел Сони ZV-1

https://helpguide.sony.net/dc/1910/v1/ru/contents/TP0002879313.html

60 тысяч рублей++

====

Видеозапись HDR

Камера позволяет записывать видео HDR при выборе в профиле изображения гаммы от [HLG], [HLG1] в [HLG3]. Предустановка профиля изображения [PP10] предоставляет пример установки для записи HDR. Видеозаписи, записанные с помощью [PP10], можно просматривать с более широким диапазоном яркости, чем обычно, при воспроизведении на телевизоре, поддерживающем Hybrid Log-Gamma (HLG). Таким образом, даже сцены с широким диапазоном яркости могут быть записаны и точно отображены и не выглядеть недоэкспонированными или переэкспонированными. HLG используется при создании телевизионных программ HDR, как определено международным стандартом в Рекомендации ITU-R BT.2100.

===

и да, она-то похоже снимает в xavc-s

https://helpguide.sony.net/dc/1910/v1/ru/contents/TP0002879476.html

===

Что такое XAVC S?

Запись видео с высоким разрешением, например, 4K, путем преобразования их в видеозапись MP4 с помощью кодека MPEG-4 AVC/H.264. MPEG-4 AVC/H.264 позволяет сжимать изображения с большей эффективностью. Вы можете записывать высококачественные изображения при одновременном уменьшении объема данных.

===

Наверное, тратится на патенты и переделку камерного железа совсем не хотелось … :) и я их понимаю!

Ну и мониторчик подозреваю будет не меньше стоить. Так что вкатится в местный клуб видео-энтузиастов наверное единственное решение :)

Andrew-R ★★★★
() автор топика
Ответ на: комментарий от Andrew-R

Вот сэмплы от А1

https://drive.google.com/drive/mobile/folders/1-9uVFY0OONvHww_yf2c6yE712X7D2Zxv?usp=sharing

https://m.youtube.com/watch?v=nMzeSLf4gHo

ВНЕЗАПНО внутри xavc - HEVC

~ $ mediainfo ~/storage/downloads/A1_Athey_SummerBBQ_071121_109.MP4 General Complete name : /data/data/com.termux/files/home/storage/downloads/A1_Athey_SummerBBQ_071121_109.MP4 Format : XAVC Codec ID : XAVC (XAVC/mp42/iso2/nras) File size : 96.1 MiB Duration : 9 s 10 ms Overall bit rate : 89.5 Mb/s Frame rate : 59.940 FPS Encoded date : 2021-07-12 03:10:16 UTC Tagged date : 2021-07-12 03:10:16 UTC

Video ID : 1 Format : HEVC Format/Info : High Efficiency Video Coding Format profile : Main 10@L5.1@High Codec ID : hvc1 Codec ID/Info : High Efficiency Video Coding Duration : 9 s 9 ms Bit rate : 76.1 Mb/s Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 59.940 (60000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 10 bits Bits/(Pixel*Frame) : 0.153 Stream size : 81.7 MiB (85%) Encoded date : 2021-07-12 03:10:16 UTC Tagged date : 2021-07-12 03:10:16 UTC Color range : Full Metas : 3 Codec configuration box : hvcC

Andrew-R ★★★★
() автор топика
Ответ на: комментарий от Andrew-R

Ах, я тормоз, вот сэмплы от Коди:

https://kodi.wiki/view/Samples

https://mega.nz/file/nehDka6Z#C5_OPbSZkONdOp1jRmc09C9-viDc3zMj8ZHruHcWKyA

93 мб! Но это как я понимаю не напрямую с камер,а уже обработанное. Но интересно что скрипт на такое скажет.

пс: sony zv1 похоже умеет в таймкод дорожку внутри файла.

Andrew-R ★★★★
() автор топика
Ответ на: комментарий от Andrew-R

Вот вывод на файл A1_Athey_SummerBBQ_071121_109.MP4:

Running HDR10 content light level measurements detection...
Traceback (most recent call last):
  File "/home/tima/script.vpy", line 9, in <module>
    awf.measure_hdr10_content_light_level(clip)
  File "/usr/lib/python3.11/site-packages/awsmfunc/detect.py", line 783, in measure_hdr10_content_light_level
    _detect(clip, "HDR10 content light level measurements", do_it, quit_after=False, print_detections=False)
  File "/usr/lib/python3.11/site-packages/awsmfunc/detect.py", line 75, in _detect
    processed.output(f, progress_update=partial(awf_vs_out_updated, state=state))
  File "src/cython/vapoursynth.pyx", line 2101, in vapoursynth.VideoNode.output
  File "src/cython/vapoursynth.pyx", line 1887, in frames
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
vapoursynth.Error: Resize error: Resize error 3074: no path between colorspaces (2/16/9 => 0/16/10). May need to specify additional colorspace parameters.

На всякий случай скрипт:

from vapoursynth import core
import awsmfunc as awf
core.num_threads = 8

clip = core.ffms2.Source("A1_Athey_SummerBBQ_071121_109.MP4")
# Crop, or whatever

# Defaults to reject outliers, and not downscaling
awf.measure_hdr10_content_light_level(clip)
Goat ★★
()
Ответ на: комментарий от Goat

Сейчас 25% (Frame: 302/1200) анализа на моем нетбуке (AMD C-60, 2GB RAM, 10GB SWAP). Происходит процесс с частотой 0.02 FPS.

Ошибок нет, но результат не могу увидеть уже продолжительное время. Более быстрого железа у меня сейчас нет.

Goat ★★
()
Ответ на: комментарий от Andrew-R

К текущему моменту дошло до 44.50% (Frames: 535/1200), FPS снизился до 0.01FPS. Ошибок так и не было.

К сожалению, операцию придётся аварийно завершить, иначе есть шанс что животные сломают мне нетбук во время моего отсутствия.

Goat ★★
()
Ответ на: комментарий от Andrew-R

Решил сократить видеофайл до трёх секунд:

ffmpeg -i HDR10Plus_PB_EAC3JOC.mkv -vcodec copy -acodec copy -t 3 3.mkv

Скрипт:

from vapoursynth import core
import awsmfunc as awf
core.num_threads = 8

clip = core.ffms2.Source("3.mkv")
# Crop, or whatever

# Defaults to reject outliers, and not downscaling
awf.measure_hdr10_content_light_level(clip)

Лог скрипта:

Running HDR10 content light level measurements detection...
Frame: 74/74 (0.13 fps) 100.00%
Elapsed: 578.10 seconds (0.13 fps)

MaxCLL: 1418.25 nits
  Max brightness frame: 47, PQ value: 0.7918822003509575
MaxFALL: 36.30 nits
  Frame: 65, PQ value: 0.4104130565182956
Note: Max PQ values according to 99.99% percentile of the frame's MaxRGB values
Goat ★★
()