cmake установка x265 для ffmpeg на Cygwin - расположение исполняемого файла отличается от других кодеков - PullRequest
1 голос
/ 05 мая 2020

TL; DR (с ожидаемым и реальным)

Для сборки Cygwin ffmpeg я устанавливаю x265, и мне кажется, что исполняемый файл оказывается не в том месте . Я покажу базовую структуру каталогов c, а затем покажу результаты tree для ожидаемых и реальных, как до, так и после установки cmake. Для каталогов, где я считаю это важным, я покажу результаты до и после установки cmake.

Мой вопрос состоит из двух частей. Я использовал следующие команды cmake и make,

# pwd => $HOME/programs/ffmpeg/ffmpeg_sources/x265/build/linux
PATH="$HOME/programs/ffmpeg/bin:$PATH" \
  cmake -G "Unix Makefiles" \
        -DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg/ffmpeg_build" \
        -DENABLE_SHARED=OFF \
        -DCMAKE_EXE_LINKER_FLAGS="-static" 
            ../../source
PATH="$HOME/programs/ffmpeg/bin:$PATH" make -j $(nproc)
make install

Результат ниже, с моим реальным и ожидаемым, и есть более подробный, более явный и, надеюсь, более понятный файл с информация на pastebin.com / 86wHrtxR . Теперь для моего вопроса, состоящего из двух частей:

  1. Как я могу изменить мою команду cmake, чтобы мой файл x265.exe заканчивался в $HOME/programs/ffmpeg/bin с правильная компоновка , а не $HOME/programs/ffmpeg/ffmpeg_build/bin?

  2. Сможет ли сборка / компоновщик / что-то выяснить для сборки ffmpeg?

Я хочу знать ответ на вопрос номер 1 независимо от ответа на вопрос номер 2. Я раньше не использовал cmake с флагами -DVAR=var, и хотел бы воспользоваться этим возможность учиться.

Для результата:

Вещи, заключенные в двойные фигурные скобки, - {{ expected }}.

Вещи в двойных угловых скобках - << real >>, т.е. существуют после завершения установки.

Если ожидаются реальные совпадения, а файл / каталог новый, я заключил его в двойные круглые скобки, то есть в двойные круглые скобки. (( match ))

Если что-то не новое (и, следовательно, имеет то же самое до и после), я не отмечал это.

   me@MACHINE ~/programs/ffmpeg
   $ tree --charset=ascii bin
   bin
   |-- lame.exe
   |-- mp3rtp.exe
   |-- mp3x.exe
   `-- x264.exe
{{ `-- x265.exe                     }} ## Expected, not Exists

   me@MACHINE ~/programs/ffmpeg
   $ tree --charset=ascii \
                   ffmpeg_build
   ffmpeg_build
<< |-- bin                          >> ## Not expected, Exists
<< |   `-- x265.exe                 >> ## Not expected, Exists
   |-- include
   |   |-- fdk-aac
   |   |   |-- aacdecoder_lib.h
   |   |   |-- aacenc_lib.h
   |   |   `-- ... <more .h files>
   |   |-- lame
   |   |   `-- lame.h
   |   |-- x264.h
   |   `-- x264_config.h
(( |   |-- x265.h                   )) ## Expected and Exists
(( |   `-- x265_config.h            )) ## Expected and Exists
   |-- lib
   |   |-- libfdk-aac.a
   |   |-- libfdk-aac.la
   |   |-- libmp3lame.a
   |   |-- libmp3lame.la
(( |   |-- libx265.a                )) ## Expected and Exists
   |   `-- pkgconfig
   |       |-- fdk-aac.pc
   |       `-- x264.pc
(( |       `-- x265.pc              )) ## Expected and Exists
   `-- share
       |-- doc
       |   ... <only lame>
       `-- man
           ... <only lame>

Другая, возможно, полезная информация о построить структуру каталогов.

me@MACHINE ~/programs/ffmpeg
$ tree --charset=ascii -L 1 .
.
|-- bin
|-- ffmpeg_build
`-- ffmpeg_sources

3 directories, 0 files

Для этого следующего, ffmpeg_sources dir, я показываю после (которое и ожидаемо, и реально / существует), окруженное двойными круглыми скобками, то есть двойными круглыми скобками , (( <after> )).

   me@MACHINE ~/programs/ffmpeg
   $ tree --charset=ascii -L 1 ffmpeg_sources
   ffmpeg_sources
   |-- fdk-aac.zip
   |-- lame-svn
   |-- mstorsjo-fdk-aac-e7d8591
   |-- x264-snapshot-20191217-2245
   |-- x264-snapshot-20191217-2245.tar.bz2
   `-- x264-snapshot-20191218-README.txt
(( `-- x265                         ))

   3 directories, 3 files
(( 4 directories, 3 files ))

ТЕПЕРЬ, ПОДРОБНЕЕ

Что я делаю

Я работаю над сборкой Cygwin (а ​​не сборкой Windows / mingw) ffmpeg. Я следую более старому руководству koohiimaster ( в архиве ). В этом руководстве говорится:

[W] e не выполняет кросс-компиляцию для Windows; мы компилируем для Cygwin.

В этом руководстве 2014 года нет всех кодеков, которые мне нужны - я хочу максимально полную сборку - поэтому я также имел в виду это ffmpeg-for-Ubuntu руководство ( в архиве ), которое, я надеюсь, постоянно обновляется. Об этом говорит koohiimaster.

Кроме того, чтобы убедиться, что я получаю все нужные кодеки, я просмотрел это FFmpeg для Windows руководство от SuperUser

Я дам основные шаги ниже. Более подробная информация, а также весь вывод находятся на pastebin.com / suL1nU6Z .

Взгляните на структуру каталогов для сборки

me@MACHINE ~/programs/ffmpeg
$ cd $HOME/programs/ffmpeg

me@MACHINE ~/programs/ffmpeg
$ tree --charset=ascii -d -L 1
.
|-- bin
|-- ffmpeg_build
`-- ffmpeg_sources

3 directories

Получение исходного кода. Обратите внимание, что мне пришлось apt-cyg install mercurial, хотя (с моим графическим интерфейсом установки Cygwin / EXE в моем каталоге Cygwin root, т.е. C:\cygwin64\setup-x86_64.exe) я также мог бы сделать /setup-x86_64.exe install -q -P mercurial.

cd ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265

Выполнение команд cmake и make

cd x265/build/linux
PATH="$HOME/programs/ffmpeg/bin:$PATH" \
  cmake -G "Unix Makefiles" \
        -DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg/ffmpeg_build" \
        -DENABLE_SHARED=OFF \
        -DCMAKE_EXE_LINKER_FLAGS="-static" \
            ../../source
PATH="$HOME/programs/ffmpeg/bin:$PATH" make -j $(nproc)
make install

Меня беспокоила последняя часть (фактически самая последняя строка) вывода make install. Вот весь результат - он не очень длинный.

make[1]: Entering directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
make[2]: Entering directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
make[2]: Leaving directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
[ 20%] Built target encoder
make[2]: Entering directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
make[2]: Leaving directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
[ 83%] Built target common
make[2]: Entering directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
make[2]: Leaving directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
[ 84%] Built target x265-static
make[2]: Entering directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
make[2]: Leaving directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
[100%] Built target cli
make[1]: Leaving directory '/home/me/programs/ffmpeg/ffmpeg_sources/x265/build/linux'
Install the project...
-- Install configuration: "Release"
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/lib/libx265.a
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/include/x265.h
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/include/x265_config.h
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/lib/pkgconfig/x265.pc
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/bin/x265.exe

Как обсуждалось в разделе TL; DR , я ожидал увидеть x265.exe at

home/me/programs/ffmpeg/bin/x265.exe

, а не путь, указанный в последней строке вывода,

/home/me/programs/ffmpeg/ffmpeg_build/bin/x265.exe

Меня это беспокоит, особенно потому, что первая часть команды ffmpeg install что мои инструкции сообщают мне о запуске:

PATH="$HOME/programs/ffmpeg/bin:$PATH" \
PKG_CONFIG_PATH="$HOME/programs/ffmpeg/ffmpeg_build/lib/pkgconfig" \
  ./configure \
    --prefix="$HOME/programs/ffmpeg/ffmpeg_build" \
    --extra-cflags="-I$HOME/programs/ffmpeg/ffmpeg_build/include" \
    --extra-ldflags="-L$HOME/programs/ffmpeg/ffmpeg_build/lib" \
    --bindir="$HOME/programs/ffmpeg/bin" \

... and on it goes ...

Мне кажется, что сценарий .configure для ffmpeg не найдет исполняемый файл x265 , поскольку его нет в bindir.

Я повторю свой вопрос, состоящий из двух частей:

  1. Как я могу изменить мою команду cmake, чтобы мой файл x265.exe заканчивался в $HOME/programs/ffmpeg/bin с правильной привязкой , а не $HOME/programs/ffmpeg/ffmpeg_build/bin?

Я ищу что-то похожее на флаг --bindir из make ./confiure.

Сможет ли сборка / компоновщик / что-то выяснить для сборки ffmpeg?

Я хочу знать ответ на вопрос номер 1 независимо от ответа на вопрос номер 2. Я не знаю Раньше не использовал cmake с флагами -DVAR=var, и я хотел бы воспользоваться этой возможностью, чтобы научиться.

Где я смотрел и что пробовал

Сначала я начал со страницы man и --help для cmake. Это было страшно. Я надеялся, что найду что-нибудь полезное в материалах CMAKE_INSTALL_PREFIX, но не знал, что с этим делать.

Я пробовал grep через cmake --help-full (с 50 строками до и после того, что я искал), но запутался из-за сложности. Раньше я использовал только базовые c cmake вещи, и я многое потерял.

Даже с --help, я не знаю, нужно ли мне смотреть на help-manual, help-command, help-module, help-policy, help-variable или что-то другое.

При чтении мне показалось, что «двоичный каталог» - это верх «сборки», тогда как я думал, что это будет каталог с именем bin ... Я не мог сказать, что вещи предназначались для использования человеком, создающим пакет, а не мной, который пытается создать / собрать пакет из командной строки.

Я просмотрел то, что казалось cmake вики Страница полезных переменных ( в архиве ), а также в в этой ветке на cmake.org ( в архиве ), которая вместе с этот источник SO и this и this и this и this источники SO, казалось, предлагали использовать CMAKE_RUNTIME_OUTPUT_DIRECTORY переменная (так как переменная EXECUTABLE_OUTPUT-DIRECTORY была заменена ею). Между прочим, я не мог сказать, какие вещи должны использоваться создателем пакета, а что потребителем пакета - потребителем является я. Я пробовал с

PATH="$HOME/programs/ffmpeg/bin:$PATH" \
  cmake -G "Unix Makefiles" \
        -DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg/ffmpeg_build" \
        -DCMAKE_RUNTIME_OUTPUT_DIRECTORY="$HOME/programs/ffmpeg/bin" \
        -DENABLE_SHARED=OFF \
        -DCMAKE_EXE_LINKER_FLAGS="-static" 
            ../../source
PATH="$HOME/

и думал о примерно пятидесяти других переменных -DVAR, но с любыми, которые я пробовал, я все равно получил тот же результат. Я по-прежнему получаю исполняемый файл не в том месте.

Сведения о системе

$ date && date +'%s'
Tue, May  5, 2020 11:14:40 AM
1588698880
$ uname -a
CYGWIN_NT-10.0 MACHINE 3.1.4(0.340/5/3) 2020-02-19 08:49 x86_64 Cygwin
$ cmake --version
cmake version 3.14.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ bash --version | head -n 1
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
$ gcc --version | head -n 1
gcc (GCC) 9.3.0
$ g++ --version | head -n 1
g++ (GCC) 9.3.0
$ make --version | head -n 2
GNU Make 4.3
Built for x86_64-pc-cygwin

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Чтобы иметь файл x286.exe в $ HOME / programs / ffmpeg / bin

    --prefix="$HOME/programs/ffmpeg" \
    --extra-cflags="-I$HOME/programs/ffmpeg/include" \
    --extra-ldflags="-L$HOME/programs/ffmpeg/lib" \

Для cmake:

-DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg"
0 голосов
/ 12 мая 2020

ОЧЕНЬ близко с @ Philippe

Ответ @Philippe указал мне в правильном направлении. Мой комментарий к этому ответу с некоторыми изменениями показывает, насколько он мне близок.

Это полезно - с

-DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg"

Я прошел весь путь make install. Так я оказался довольно близко. Последняя часть вывода make install была

-- Installing: /home/me/programs/ffmpeg/lib/libx265.a
-- Installing: /home/me/programs/ffmpeg/include/x265.h
-- Installing: /home/me/programs/ffmpeg/include/x265_config.h
-- Installing: /home/me/programs/ffmpeg/lib/pkgconfig/x265.pc
-- Installing: /home/me/programs/ffmpeg/bin/x265.exe

x265.exe находится там, где я хочу, но теперь остальные пять файлов (libx265.a, x265.h, x265_config.h и x265.pc) не там, где кажется, что они нравятся шаблону других установок, например, я хотел бы /home/me/programs/ffmpeg/ffmpeg_build/lib/libx265.a - похоже, конечная сборка ffmpeg хочет их там.

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

-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/lib/libx265.a
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/include/x265.h
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/include/x265_config.h
-- Installing: /home/me/programs/ffmpeg/ffmpeg_build/lib/pkgconfig/x265.pc
-- Installing: /home/me/programs/ffmpeg/bin/x265.exe

Ответ, соответствующий «Желаемому результату»

Комбинация идей в ответе от @Philippe привел меня туда, где мне нужно было быть. Во-первых, необходимо внести несколько небольших изменений в CMakeLists.txt. Клонированный файл уже настроен, чтобы разрешить изменение расположения файлов «* .exe» (в любом каталоге bin) из командной строки. То же самое и с файлами библиотеки (lib). Вместо того, чтобы жестко указывать расположение файлов заголовков (include), я вношу это изменение.

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ cp CMakeLists.txt CMakeLists.txt.$(date +'%s').bak

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ cat -n CMakeLists.txt.1588732600.bak | head -n 386 | tail -16   ### BEFORE
   371
   372  # Build options
   373  set(LIB_INSTALL_DIR lib CACHE STRING "Install location of libraries")
   374  set(BIN_INSTALL_DIR bin CACHE STRING "Install location of executables")
   375  set(EXTRA_LIB "" CACHE STRING "Extra libraries to link against")
   376  set(EXTRA_LINK_FLAGS "" CACHE STRING "Extra link flags")
   377  if(EXTRA_LINK_FLAGS)
   378      list(APPEND LINKER_OPTIONS ${EXTRA_LINK_FLAGS})
   379  endif()
   380  if(EXTRA_LIB)
   381      option(LINKED_8BIT  "8bit libx265 is being linked with this library" OFF)
   382      option(LINKED_10BIT "10bit libx265 is being linked with this library" OFF)
   383      option(LINKED_12BIT "12bit libx265 is being linked with this library" OFF)
   384  endif(EXTRA_LIB)
   385  mark_as_advanced(EXTRA_LIB EXTRA_LINK_FLAGS)
   386

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ vim CMakeLists.txt   ### Making the change

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ cat -n CMakeLists.txt | head -n 389 | tail -19   ### AFTER
   371
   372  # Build options
   373  set(LIB_INSTALL_DIR lib CACHE STRING "Install location of libraries")
   374  set(BIN_INSTALL_DIR bin CACHE STRING "Install location of executables")
   375  # Start DWB insert 2020-05-05
   376  set(INCLUDE_INSTALL_DIR include CACHE STRING "Install location of headers")
   377  #   End DWB insert 2020-05-05
   378  set(EXTRA_LIB "" CACHE STRING "Extra libraries to link against")
   379  set(EXTRA_LINK_FLAGS "" CACHE STRING "Extra link flags")
   380  if(EXTRA_LINK_FLAGS)
   381      list(APPEND LINKER_OPTIONS ${EXTRA_LINK_FLAGS})
   382  endif()
   383  if(EXTRA_LIB)
   384      option(LINKED_8BIT  "8bit libx265 is being linked with this library" OFF)
   385      option(LINKED_10BIT "10bit libx265 is being linked with this library" OFF)
   386      option(LINKED_12BIT "12bit libx265 is being linked with this library" OFF)
   387  endif(EXTRA_LIB)
   388  mark_as_advanced(EXTRA_LIB EXTRA_LINK_FLAGS)
   389

Видно через diff

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ diff CMakeLists.txt CMakeLists.txt.1588732600.bak
375,377d374
< # Start DWB insert 2020-05-05
< set(INCLUDE_INSTALL_DIR include CACHE STRING "Install location of headers")
< #   End DWB insert 2020-05-05
599,604c596,597

Следующее изменение:

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ cat -n CMakeLists.txt.1588732600.bak | head -n 602 | tail -9   ### BEFORE
   594
   595  if(SVTHEVC_FOUND)
   596      install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION include)
   597      install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION include)
   598      install(FILES "${SVT_HEVC_LIBRARY}" DESTINATION ${LIB_INSTALL_DIR})
   599  endif()
   600
   601  install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION include)
   602  if((WIN32 AND ENABLE_CLI) OR (WIN32 AND ENABLE_SHARED))

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ vim CMakeLists.txt   ### Making the change

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ cat -n CMakeLists.txt | head -n 611 | tail -15   ### AFTER
   597
   598  if(SVTHEVC_FOUND)
   599      # DWB change 2020-05-05, original is next (cmt) line, new is the line after
   600      #install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION include)
   601      install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION ${INCLUDE_INSTALL_DIR})
   602      # DWB change 2020-05-05, original is next (cmt) line, new is the line after
   603      #install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION include)
   604      install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION ${INCLUDE_INSTALL_DIR})
   605      install(FILES "${SVT_HEVC_LIBRARY}" DESTINATION ${LIB_INSTALL_DIR})
   606  endif()
   607
   608  # DWB change 2020-05-05, original is next (comment) line, new is the line after
   609  #install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION include)
   610  install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION ${INCLUDE_INSTALL_DIR})
   611  if((WIN32 AND ENABLE_CLI) OR (WIN32 AND ENABLE_SHARED))

Или, опять же, как показано через diff (с внесенными обоими изменениями),

me@MACHINE ~/programs/ffmpeg/ffmpeg_sources/x265/source
$ diff CMakeLists.txt CMakeLists.txt.1588732600.bak
375,377d374
< # Start DWB insert 2020-05-05
< set(INCLUDE_INSTALL_DIR include CACHE STRING "Install location of headers")
< #   End DWB insert 2020-05-05
599,604c596,597
<     # DWB change 2020-05-05, original is next (cmt) line, new is the line after
<     #install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION include)
<     install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION ${INCLUDE_INSTALL_DIR})
<     # DWB change 2020-05-05, original is next (cmt) line, new is the line after
<     #install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION include)
<     install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION ${INCLUDE_INSTALL_DIR})
---
>     install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbApi.h" DESTINATION include)
>     install(FILES "${SVT_HEVC_INCLUDE_DIR}/EbErrorCodes.h" DESTINATION include)
608,610c601
< # DWB change 2020-05-05, original is next (comment) line, new is the line after
< #install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION include)
< install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION ${INCLUDE_INSTALL_DIR})
---
> install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION include)

Команда cmake и команды make

Давайте войдем в правильный каталог сборки и запустим cmake

cd $HOME/programs/ffmpeg/ffmpeg_sources/x265/build/linux

PATH="$HOME/programs/ffmpeg/bin:$PATH" \
  cmake -G "Unix Makefiles" \
        -DCMAKE_INSTALL_PREFIX="$HOME/programs/ffmpeg" \
        -DBIN_INSTALL_DIR="bin" \
        -DLIB_INSTALL_DIR="ffmpeg_build/lib" \
        -DINCLUDE_INSTALL_DIR="ffmpeg_build/include" \
        -DENABLE_SHARED=OFF \
        -DCMAKE_EXE_LINKER_FLAGS="-static" \
            ../../source

Это дает некоторые предупреждения об устаревании, о которых нам не нужно беспокоиться. Теперь для make частей.

PATH="$HOME/programs/ffmpeg/bin:$PATH" make -j $(nproc)

make install

, которые привели к желаемому результату. Последние несколько строк вывода make install были

-- Installing: /home/13852/programs/ffmpeg/ffmpeg_build/lib/libx265.a
-- Installing: /home/13852/programs/ffmpeg/ffmpeg_build/include/x265.h
-- Installing: /home/13852/programs/ffmpeg/ffmpeg_build/include/x265_config.h
-- Installing: /home/13852/programs/ffmpeg/ffmpeg_build/lib/pkgconfig/x265.pc
-- Installing: /home/13852/programs/ffmpeg/bin/x265.exe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...