DirectX против FFmpeg

// import paper-input-error
<dom-module id="element-name">

      <template>
        <style>
          /* CSS rules for your element */
        </style>

        <!-- local DOM for your element -->

        <paper-input-error ng-if="isError">{{errorMessage}}
           <iron-icon icon="icons:warning"</iron-icon>
        </paper-input-error>
      </template>

      <script>
        // element registration
        Polymer({
          is: "my-input-error",

          // add properties and methods on the element's prototype

          properties: {
            // declare properties for the element's public API
            isError: {
              type: Boolean,
              value: false
            },
            errorMessage: {
              type: String,
              value: 'Error!'
            }
          }
        });
      </script>

    </dom-module>
0
задан hamidi 19 January 2019 в 07:04
поделиться

1 ответ

Для простого подхода и простого кода, использующего только GPU, взгляните на мой проект с использованием DirectX: H264Dxva2Decoder

Если вы готовы писать код, вы можете использовать мой подход. [ 112]

Если нет, вы можете использовать MediaFoundation или FFMPEG, оба могут сделать эту работу.

MediaFoundation ориентирован на C ++ и COM. FFMPEG ориентирован на C. Это может иметь значение для вас.

РЕДАКТИРОВАТЬ

Вы можете использовать мою программу, потому что у вас есть кадры, закодированные в H264 или H265. Для h265 вам придется добавить дополнительный код.

Конечно, вам нужно внести изменения. И да, вы можете отправлять кадры в DirectX без использования файла. В этом проекте используется только формат видеофайлов avcc, но его можно изменить для других случаев.

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

Я могу вам помочь, если вы предоставите образцы кадров, закодированные в H264.

Что касается Ffmpeg, он имеет меньше ограничений, чем моя программа, согласно спецификациям h264, но не предоставляет механизм рендеринга. Например, вам придется смешать Ffmepg и мой механизм рендеринга.

Или изучите такую ​​программу, как MPC-HC, которая показывает сочетание. Я не могу здесь больше помочь.

РЕДАКТИРОВАТЬ 2

Одна вещь, которую нужно знать, вы не можете декодировать закодированные пакеты напрямую в графический процессор. Вы должны разобрать их раньше. Вот почему есть анализатор nalu (см. DXVA_PicParams_H264).

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

Также важно знать, какой из них дает лучший результат, потребляет меньше ресурсов (CPU, GPU, RAM (как системная память, так и память графической карты), поддерживает более широкий диапазон форматов и т. д.

Вы запрашиваете реальную экспертизу ...

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

Вы говорите, что будете использовать камеры Bosch. Обычно все закодированное видео будет в том же формате. Так что, как только ваш код в состоянии декодировать его, вам не нужны все функции Ffmpeg.

0
ответ дан mofo77 19 January 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: