Задать вопрос
Ответы пользователя по тегу FFmpeg
  • Как определить повторы в 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Тб
    Ответ написан
    Комментировать