FFmpeg, videotoolbox и avplayer в iOS

У меня вопрос, как эти вещи связаны и что они конкретно делают.

К вашему сведению, у меня есть небольшой опыт работы с видеоплеером, кодированием и декодированием.

В своей работе я занимаюсь потоковой передачей udp с сервера, беру ее с помощью ffmpeg, декодирую и рисую с помощью openGL. А также использование ffmpeg для видеоплеера.

Вот вопросы...

<сильный>1. Только ffmpeg может декодировать потоковую передачу UDP (закодированную с помощью ffmpeg с сервера) или нет?

Я нашел полезную информацию о videotoolbox, который может декодировать потоковую передачу с аппаратным ускорением в iOS. так что могу ли я также декодировать потоковую передачу с сервера с помощью videotoolbox?

<сильный>2. Если можно декодировать с помощью videotoolbox (я имею в виду, может ли videotoolbox заменить ffmpeg), то каков исходный код videotoolbox в ffmpeg? зачем он там?

В моем декодере я создаю AVCodecContext из потоковой передачи, и у него есть поля hwaccel и hwaccel_context, которые устанавливают для них значение null. Я думал, что этот videotoolbox — это своего рода API, который может помочь ffmpeg использовать hwaccel для iOS. Но пока это выглядит не так...

<сильный>3. Если videotoolbox может декодировать потоковую передачу, декодирует ли он также H264 в локальном режиме? или возможна только потоковая передача?

AVPlayer — хороший инструмент для воспроизведения видео, но если videotoolbox может заменить этот AVPlayer, то какая от него польза? или невозможно?

<сильный>4. FFmpeg использует только CPU для декодирования (программный декодер) или hwaccel тоже?

Когда я воспроизводю видео с помощью проигрывателя ffmpeg, загрузка ЦП превышает 100%. Означает ли это, что этот ffmpeg использует только программный декодер? или есть способ использовать hwaccel?

Пожалуйста, поймите мой плохой английский, и любой ответ будет оценен.

Спасибо.


person Hwangho Kim    schedule 07.07.2016    source источник
comment
об оборудовании && ffmpeg см. trac.ffmpeg.org/wiki/HWAccelIntro.   -  person Robert Rowntree    schedule 07.07.2016


Ответы (1)


<сильный>1. Только ffmpeg может декодировать потоковую передачу UDP (закодированную с помощью ffmpeg с сервера) или нет?

Я так не думаю, так как videotoolbox тоже так может.

<сильный>2. Если можно декодировать с помощью videotoolbox (я имею в виду, может ли videotoolbox заменить ffmpeg), то каков исходный код videotoolbox в ffmpeg? зачем он там?

Существует решение, которое может использовать ffmpeg для чтения данных из tcp socket и передачи их в videotoolbox.

Это решение позволяет избежать высокой загрузки ЦП при использовании только ffmpeg, а также позволяет избежать некоторых ошибок при использовании только vdeotoolbox, таких как задержки при чтении данных из сокета.

<сильный>3. Если videotoolbox может декодировать потоковую передачу, декодирует ли он также H264 в локальном режиме? или возможна только потоковая передача?

videotoolbox мог играть как по локалке, так и по стримам. (поправьте меня если я ошибаюсь)

<сильный>4. FFmpeg использует только CPU для декодирования (программный декодер) или hwaccel тоже?

Да, ffmpeg использует только процессор, который равен software codec, а videotoolboxhardware codec.

person Boris    schedule 09.01.2017