Задать вопрос
  • Как определить повторы в ffprobe show_entries?

    @grarchangel Автор вопроса
    Вроде как обходится через разницу между тегами: v -все все видео, V - видео уже без вложений. Очередность имеет значение, а потому копируется всё и только видео, как указанное исключение, кодируется:
    & (Join-Path $FFPath ffmpeg.exe) -report -hide_banner -extra_hw_frames 5 -hwaccel_output_format cuda -i $_.Fullname -c:v copy -c:V:$idx hevc_nvenc -rc:V vbr -cq:V $cq -preset p7 -tune hq -b:V ${target_bitrate}k -maxrate:V ${max_bitrate}k -bf:V 2 -rc-lookahead 32 -b_ref_mode:V middle $discardUnknData $vf $deinterlace $degrain -c:a $aCodec -c:s copy -c:d copy -c:t copy -map 0 $output_file -y


    Где взять индекс $idx? Посмотреть что не является картинкой и выбрать, если там более 1 потока. Очень древние видосы этим грешат. Иначе - выбирать наивысшее разрешение или забить и обработать руками.
    $allStreams=& (Join-Path $FFPath ffprobe.exe) -hide_banner -loglevel error -select_streams V -show_streams -print_format json $_.Fullname | ConvertFrom-Json


    Вот только вылез косяк:

    {
                "index": 6,
                "codec_name": "mjpeg",
                "codec_long_name": "Motion JPEG",
                "profile": "Baseline",
                "codec_type": "video",
                "codec_tag_string": "[0][0][0][0]",
                "codec_tag": "0x0000",
                "width": 504,
                "height": 701,
                "coded_width": 504,
                "coded_height": 701,
                "closed_captions": 0,
                "film_grain": 0,
                "has_b_frames": 0,
                "sample_aspect_ratio": "1:1",
                "display_aspect_ratio": "504:701",
                "pix_fmt": "yuvj420p",
                "level": -99,
                "color_range": "pc",
                "color_space": "bt470bg",
                "chroma_location": "center",
                "refs": 1,
                "r_frame_rate": "1000/1",
                "avg_frame_rate": "0/0",
                "time_base": "1/1000",
                "start_pts": 0,
                "start_time": "0.000000",
                "bits_per_raw_sample": "8",
                "disposition": {
                    "default": 0,
                    "dub": 0,
                    "original": 0,
                    "comment": 0,
                    "lyrics": 0,
                    "karaoke": 0,
                    "forced": 0,
                    "hearing_impaired": 0,
                    "visual_impaired": 0,
                    "clean_effects": 0,
                    "attached_pic": 0,
                    "timed_thumbnails": 0,
                    "captions": 0,
                    "descriptions": 0,
                    "metadata": 0,
                    "dependent": 0,
                    "still_image": 0
                },
                "tags": {
                    "FILENAME": "poster.jpg",
                    "MIMETYPE": "image/jpeg",
                    "DURATION": "00:00:00.000000000"
                }


    "attached_pic": 0 - просто портится метадата выходного файла при копировании потока. Причем mkvToolNix его прекрасно читает и проблем нет. И сам ffmpeg опирается на этот флаг. И сам же его портит. Т.е. повторно загнать файл в ту же обработку не выйдет. И винда в проводнике превью тоже теряет. Бред какой-то.

    Как обходной маневр рекомендуют следующее:
    ffmpeg -i video.mkv -map 0:v -map -0:V -c copy cover.png

    ffmpeg -i video.mkv -map 0:V -map 0:a -c copy -attach cover.png -metadata:s:t mimetype=image/png newvideo.mkv

    Пока забил болт.
    Ответ написан
    Комментировать
  • Перекодирование в HEVC - формула зависимости битрейта от размера кадра?

    @grarchangel Автор вопроса
    Сам спросил сам отвечаю. По сути степенная функция.
    Инфу взял отсюда

    Грубо говоря берется эталонный битрейт на нужном разрешении и далее применяется степенная функция от X^0.5 до X^0.75 для получения нужного битрейта в другом разрешении при сохранении исходного качества.

    Есть довольно удобный сайт для построения графиков функций, где задавая точки можно подогнать коэффициенты под свой график.

    651a97bc5f195424956020.jpeg

    Все что имеет меньший битрейт в исходнике можно скипать из обработки, т.к. качество уже потеряно. С 5.2Тб освободилось 1.5Тб
    Ответ написан
    Комментировать
  • Почему качество экспорта в Premiere такое плохое?

    @grarchangel
    Voukoder вам в помощь. Ссылка тут
    Тоже удивлялся мылу на выходе. На превью все идеально, а как только дело доходит до встроенного кодировщика и все мылится, независимо от битрейта, кодека и позиции звезд на небе. А эта тулза его подменяет и даже работает.
    ЗЫ: Если пропадает звук - экспортируйте отдельно и заменяйте в готовом видео (ffmpeg в помощь с гуей FFQueue проще), но это уже другая, внутренняя проблема премьера.
    Ответ написан
  • Эмулирование нажатий кнопок selenium?

    @grarchangel
    Если очень грубо и нужно прямо здесь и сейчас то выручает табуляция и движение стрелочками к элементу. Это если есть проблемы с shadow DOM на странице.

    ЗЫ:
    Ну на питоне я это так делал:
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as ec
    from selenium.webdriver.common.by import By
    
    chrome_options = Options()
    
    from selenium import webdriver
    
    
    driver = webdriver.Chrome(options=chrome_options)
    
    url = 'https://some_url'
    driver.get(url)
    
    time.sleep(5)
    # relative shift
    actions = ActionChains(driver)
    
    # start date
    actions.send_keys(Keys.TAB)
    actions.send_keys(Keys.BACKSPACE * 2)
    actions.send_keys('11')
    
    actions.send_keys(Keys.TAB)
    actions.send_keys(Keys.BACKSPACE * 4)
    actions.send_keys('2020')
    Ответ написан
    3 комментария