Мне так сдаётся, что нужно корректно сделать преобразование цветовых пространств. Покурите вот здесь, к примеру: https://trac.ffmpeg.org/wiki/colorspace
AlexDragon Member 330/367 ответов 17 лет на iXBT, с февраля 2008 Чаще пишет в "Видеозахват" (90%) | Мне так сдаётся, что нужно корректно сделать преобразование цветовых пространств. Покурите вот здесь, к примеру: https://trac.ffmpeg.org/wiki/colorspace |
Filin74 Member 386/3422 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Filin74 Потому как ffplay даже оригинал блекло показывает. Ffplay даже перекодированный ролик в h264 нормально отобразить не может. Вот этот. ffmpeg - вопросы, примеры, обсуждение, конкуренты , #233 |
Kisa_AG Member 5152/7654 ответов, #17 в рейтинге 22 года на iXBT, с апреля 2002 2 фото на iXBT.photo Чаще пишет в "Видеозахват" (57%) | VHS А можно как-нибудь чтобы просто в папку с видео батник кинуть и он его перекодил. В ФФМПЕГ почти все можно У меня ffmpeg установлен. Только там нет папки бин и так далее. Ну такого типа скрипта тогда (перекодирует файлы форматов *.mkv, *.mp4, *.mov, *.avi в mp4): :: Задать путь к ffmpeg.exe Set vexepath=D:\Programs\Multimedia_Soft\Video\ffmpeg_64 for %%a in (*.mkv, *.mp4, *.mov, *.avi) do ( Start /b /wait %vexepath%\bin\ffmpeg.exe -i "%%~a" -c:v libx264 -c:a aac "%%~na_ff_simple.mp4" ) pause ::END |
Tadoritz Member 26/27 ответов 6 лет на iXBT, с июня 2018 Чаще пишет в "Видеозахват" (68%) | Filin74 -color_trc smpte2084 Это как раз попытка сохранить HDR. Раз работает - может, я зря паникую. Убрать HDR - это про скрипт с "tonemap=tonemap=hable" (гуглится), то есть про переход в "обычное" цветовое пространство (bt709 вместо bt2020) и так далее. Тогда дальше про сохранение HDR: лучше все эти три опции выставлять: -color_primaries bt2020 -colorspace bt2020nc -color_trc smpte2084 Или -x264-params="colorprim=bt2020:colormatrix=bt2020nc:transfer=smpte2084" Всё равно мне это не слишком нравится:
Впрочем, я запутался в tonemapping, HDR10 и BT.2020 без HDR10, так что где-то у меня написана чушь. |
Filin74 Member 387/3423 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Я сделал с этой опцией (-color_trc smpte2084) и без пару роликов пор 20 сек. Различий - 0,1% байт. Можно сказать, они идентичны. Заголовки разные. Типа Color range : Limited Видимо, просто какой-то намек для плеера оставляется.Transfer characteristics : PQ Но выглядят совершенно по разному, как тут показывал ffmpeg - вопросы, примеры, обсуждение, конкуренты , #233 Добавление от 18.12.2019 21:14: AlexDragon Покурите вот здесь, к примеруTadoritz то есть про переход в "обычное" цветовое пространство Устал я тр***ся. Просто другие ролики взял. Мне для опытов без разницы. Угораздило на HDR нарваться по неопытности. Но советы запомню. Пусть здесь будут, если забуду. |
Tadoritz Member 27/28 ответов 6 лет на iXBT, с июня 2018 Чаще пишет в "Видеозахват" (68%) | Filin74 Да, они вообще не должны влиять на кодирование. Есть способы менять их без перекодирования, но они неудобнее. намек для плеера Даже не намёк, а требования, что делать с сырым YUV для правильного вывода на экран. Раньше играл роль только --colormatrix, для которого было два основных варианта (как тут хорошо пишут), а с приходом UHD и HDR стало сложнее. |
Filin74 Member 389/3425 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия |
Tadoritz Member 28/29 ответов 6 лет на iXBT, с июня 2018 Чаще пишет в "Видеозахват" (68%) | Filin74 "It is mostly used as a testbed for the various FFmpeg APIs" - набор "сделай сам", в коробку положили tonemap/tonemap_opencl reinhard/hable. Вообще ты прав: "VUI settings ... are merely suggestions to the playback equipment" - x264 help. "VUI parameters are not required for constructing the luma or chroma samples by the decoding process" - H.264 и H.265. Плюс есть другие примеры игнорирования. AlexDragon Тогда будет "Unsupported input transfer characteristics 16 (smpte2084)". 3 года его не добавляют в фильтр colorspace, поэтому остаётся tonemapping через: - длинную копипасту с zscale и tonemap=hable - или через кем-то сделанные LUT'ы - или через ависинт Исправлено: Tadoritz, 19.12.2019 04:43 |
Filin74 Member 424/3477 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Я никогда не задумывался. А как ffmpeg декодирует исходники? По дефолту ищет аппаратные возможности? И можно ли способ декодирования задавать? |
valery_sev Member 176/4275 ответов 16 лет на iXBT, с июня 2008 Чаще пишет в "Политика" (25%) Россия | Если инфа ещё не устрела Internal hwaccel decoders are enabled via the -hwaccel option. The software decoder starts normally, but if it detects a stream which is decodable in hardware then it will attempt to delegate all significant processing to that hardware. If the stream is not decodable in hardware (for example, it is an unsupported codec or profile) then it will still be decoded in software automatically. If the hardware requires a particular device to function (or needs to distinguish between multiple devices, say if several graphics cards are available) then one can be selected using -hwaccel_device. https://trac.ffmpeg.org/wiki/HWAccelIntro(раздел Use with the ffmpeg command-line tool) |
tenkay Junior Member 3/3 ответов, #35 в рейтинге 5 лет на iXBT, с декабря 2019 4 фото на iXBT.photo Чаще пишет в "Видеозахват" (53%) Монголия | Filin74 Я никогда не задумывался. А как ffmpeg декодирует исходники? По дефолту ищет аппаратные возможности? И можно ли способ декодирования задавать? 1. Попробуй как в примере ниже. 2. А потом убери подчёркнутые строчки в начале кода. И сравни 1-й и 2-й варианты с загрузкой в диспечере задач (будет активен декодер или нет). Сергей Михайлов Точный вид комманд смотри хелп твоего установленного ffmpeg.avi32 Попробуй так .\ffmpeg -hwaccel cuvid -c:v h264_cuvid -i ***.mov -c:v h264_nvenc -preset fast -profile:v high -rc vbr_2pass -b:v 9000k -coder cabac -c:a aac -b:a 96k out.mp4 битрейтом можно поиграться, для 2К ~ 9000k , 4K ~15000 и выше. или так .\ffmpeg -hwaccel cuvid -c:v h264_cuvid -i ***.mov -c:v h264_nvenc -preset fast -profile:v high -rc constqp -global_quality 31 -bf 2 -b_strategy 1 -r 10 -g 10 -coder cabac -c:a aac -b:a 96k out.mp4 quality подобрать по видео от 18 до 32. В зависимости от версии ffmpeg-a немного меняется. В последней версии 4.2.1 пишу примерно так. .\ffmpeg -hwaccel cuvid -c:v hevc_cuvid -i LGHoverboard4KDemo.ts -c:v hevc_nvenc -qp 35 -preset slow -c:a aac -b:a 96k 265test.mp4 frame= 2134 fps= 70 q=34.0 Lsize= 76042kB time=00:01:11.17 bitrate=8752.6kbits/s dup=4 drop=0 speed=2.33x У меня кстати как и Григория ffmpeg несколько быстрее HandBrake, связываю это с тем что HandBrake не пользуется тем ffmpeg, что уже стоит в системе а тащит с собой свой-встроенный так же как и Gigapixell AI. К сообщению приложены файлы: |
Filin74 Member 430/3483 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | valery_sev Прочитал, пошел тестировать Ryzen 1700, RX550 & GT710Example: ffmpeg -hwaccel dxva2 -t 30 -y -i 4k_HEVC.mkv -c:v mjpeg -vf scale=-2:128 -ac 2 dxva2.mp4 Добавление от 22.12.2019 15:02: tenkay -c:v h264_cuvidА это зачем?
Добавление от 22.12.2019 15:05: А, это для декодирования...Добавление от 22.12.2019 15:08: tenkay -hwaccel cuvid -c:v hevc_cuvidНичего не работает [hevc @ 00000000001ba880] Invalid NAL unit size in extradata. [matroska,webm @ 00000000001b0880] Failed to open codec in avformat_find_stream_info [NULL @ 00000000001ba880] Invalid NAL unit size in extradata. [NULL @ 00000000001ba880] Invalid NAL unit size (0 > 827850). [hevc @ 00000000001ba880] Invalid NAL unit size in extradata. |
tenkay Junior Member 5/5 ответов, #35 в рейтинге 5 лет на iXBT, с декабря 2019 4 фото на iXBT.photo Чаще пишет в "Видеозахват" (53%) Монголия | Filin74 tenkay -c:v h264_cuvid А это зачем? Отсюда пробовал https://trac.ffmpeg.org/wiki/HWAccelIntro#CUDACUVIDNvDecode и такой вариант меня устроил. Обратите внимание , что FFmpeg предлагает как NVDEC и CUVID hwaccel с. Они отличаются тем , как кадры декодируются и передаются в памяти. |
Filin74 Member 433/3486 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Filin74 Ничего не работает Думаю, это потому, что моя GT710 не может HEVC. Я полез в ffmpeg.exe -decoders. Никогда туда не лазил.
Только Nvidia и Intel. На AMD даже намека нигде нет. Вот те на! И толку от моей RX550? |
Tadoritz Member 29/30 ответов 6 лет на iXBT, с июня 2018 Чаще пишет в "Видеозахват" (68%) | Filin74 На AMD даже намека нигде нет. Вот те на! И толку от моей RX550? Может, не видно, потому что не должно быть отдельного названия и надо смотреть на вывод -hwaccels? "On Windows, UVD is accessible via standard DXVA2/D3D11VA APIs" - HWAccelIntro И выше про -hwaccel dxva2 (но не про -hwaccel d3d11va). Только надо ещё указать -hwaccel_device, чтобы выбрать видеокарту. Или тогда просто -hwaccel_device N -hwaccel auto. Тут пишут: "Also note that AMD hwaccel is barely supported within FFmpeg" (на остальное можно не смотреть, в официальной сборке есть --enable-dxva2). |
Sergey 1400 Member 714/752 ответов, #13 в рейтинге 20 лет на iXBT, с марта 2005 Чаще пишет в "Видеозахват" (90%) Россия Web-страница | В технических характеристиках AMD пишет что RX550: Кодирование H265/HEVC - Да Кодирование 4K H264 - Да Надо копать |
Filin74 Member 437/3494 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Filin74 Example: ffmpeg -hwaccel dxva2 -t 30 -y -i 4k_HEVC.mkv -c:v mjpeg -vf scale=-2:128 -ac 2 dxva2.mp4 Я там все напутал. Там клип AVC, оказалось, был, а не HEVC. Вот правильные fps при HEVC: 0 null (118fps, 40%cpu) - без -hwaccel 1 cuda (=null) 2 dxva2 (29 fps) 3 qsv (=null) 4 d3d11va (=null) 5 cuvid (=null) 6 auto (=dxva2) Т.о. при dxva2 происходит аппаратное декодирование. Но очень медленно. Sergey 1400 пишет что RX550 Она все поддерживает. Я и кодировать могу кодеками h264_amf и hevc_amf. А вот быстро декодировать в ffmpeg не могу. Добавление от 24.12.2019 03:32: Странное дело. Вот так могу :ffmpeg -i "AVC" -c:v h264_nvenc OUT ffmpeg -i "HEVC" -c:v h264_amf OUT ffmpeg -i "HEVC" -c:v libx264 OUT Я так не могу: ffmpeg -i "HEVC" -c:v h264_nvenc OUT Stream mapping: Tadoritz -hwaccel_device N -hwaccel auto Stream #0:0 -> #0:0 (hevc (native) -> h264 (h264_nvenc)) Press [q] to stop, [?] for help [h264_nvenc @ 0000000003040500] No NVENC capable devices found Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed! Пытаюсь что-нибудь подобрать. Пока не получается. Исправлено: Filin74, 24.12.2019 05:24 |
Sergey 1400 Member 715/754 ответов, #13 в рейтинге 20 лет на iXBT, с марта 2005 Чаще пишет в "Видеозахват" (90%) Россия Web-страница | Filin74 А речь идет о только декодировании, или транскодировании? Во втором случае, рассуждая колхозно логически, ресурсы видеокарты тратятся и на декодирование, и на кодирование одновременно, может в этом дело? |
Filin74 Member 439/3496 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Я хотел декодировать HEVC на AMD, а кодировать AVC на Nvidia. У меня не получается даже декодировать на проце для кодирования AVC на Nvidia. |
Tadoritz Member 30/31 ответов 6 лет на iXBT, с июня 2018 Чаще пишет в "Видеозахват" (68%) | Filin74 Выглядит как странный баг. Но если важно декодировать не NVENC'ом, то можно попытаться явно указать декодер (софтовый назвали просто hevc), запретить всё, кроме него и h264_nvenc и для надёжности взять какой-нибудь простой файл (без звука).
|
Filin74 Member 440/3497 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Tadoritz Но если важно декодировать не NVENC'ом GT710 и не может. Filin74 dxva2 41 fps Но чем-то я аппаратно декодировал. RX550, наверное. Но она способна куда на большее. Я воспроизведение 60fps HEVC могу ускорить в разы в Potplayer, процессор не занят. Добавление от 24.12.2019 12:57: Tadoritzможно попытаться явно указать декодер (софтовый назвали просто hevc), запретить всё, кроме него и h264_nvenc и для надёжности взять какой-нибудь простой файл (без звука). Не работает. Отключил RX550. Оставил только GT710. ffmpeg -t 5 -i "%f%" -c:v hevc -vf scale=-2:128 -an _an.mp4 ffmpeg -codec_whitelist hevc,h264_nvenc -c:v hevc -i _an.mp4 -c:v h264_nvenc -vf scale=-2:128 -an _an2.mp4 Скрытый текст Добавление от 24.12.2019 13:05: А вот так получилосьffmpeg -codec_whitelist hevc,h264_nvenc -c:v hevc -i _an.mp4 -c:v h264_amf -an _an2.mp4 Хоть в разрешенных и не было h264_amf. К сообщению приложены файлы: |
valery_sev Member 177/4276 ответов 16 лет на iXBT, с июня 2008 Чаще пишет в "Политика" (25%) Россия | Filin74 Хоть в разрешенных и не было h264_amf. -codec_whitelist применим только для входного потока codec_whitelist list (input) http://ffmpeg.org/ffmpeg-all.html |
Filin74 Member 446/3503 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия |
valery_sev Member 178/4277 ответов 16 лет на iXBT, с июня 2008 Чаще пишет в "Политика" (25%) Россия | А есть ли смысл в этих ухищрениях для финального файла? Скорость будет реально большой при транскодировании на одной и той же железке, без копирования туды/сюды, - но качество кодирования? Ладно если в качестве временных для монтажки, но тебе ж это вроде бы не нужно? |
Filin74 Member 447/3510 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия |
Filin74 Member 457/3520 ответов 7 лет на iXBT, с апреля 2017 99 фото на iXBT.photo Чаще пишет в "Тех. поддержка" (29%) Россия | Filin74 Пусть задача - максимальная скорость кодирования HEVC(H265) 4k. Самая дешевая карта в магазинах RX550 стоит 5500руб. На али есть карты Нвидии, у которых тоже заявлено это кодирование. "H.265 (HEVC) 4K YUV 4:2:0" Что странно, оно есть у GT750, но его нет у GT750ti. GTX750 стоят 2700р. Так можно было бы пачку купить и запустить одновременное кодирование исходного файла на всех картах. Я думаю, они и через рейзеры работать будут. Это штук 6 сразу можно засунуть. Я не знаю, сколько каждая GTX750 выдаст. Пусть 33fps. Итого получим скорость кодирования 200 fps в формат 4к H265 за 16000 руб. Это недорого. Добавление от 26.12.2019 17:19: Например, моя RX550 при выводе из монтажного кодека Apple ProRes 422 в 4к HEVC при постоянном значении квантования I и P кадров равном 25, выдает 37fps. Так ведь можно в ffmpeg? Задавать конкретно карту? Я на всякий случай спрашиваю. На молоке обжегся. Дую на воду. |