Что я делаю:Правильный выбор для воспроизведения аудио и видео контента
Мне нужно проигрывать аудио и видео файлы, которые не поддерживаются Apple, на iPhone/IPad, например MKV/MKA файлов, которые содержат моей несколько аудиоканалов.
Я использую libffmpeg для поиска аудио- и видеопотоков в медиафайле. видео декодируется с avcodec_decode_video2
и аудио с avcodec_decode_audio3
возвращаемые значения следуют для каждой функции являются следующие
avcodec_decode_video2
- возвращаетAVFrame
структуру, которая инкапсулирует информацию о видео видеокадра из Pakcage, в частности, это имеетdata
поле который является указателем на плоскость изображения/канала.avcodec_decode_audio3
- возвращаетsamples
тип int16_t *, который я предполагаю, что это необработанный аудиоданные
Так что в основном я сделал все это и успешное декодирование медиа-контента.
Что мне нужно сделать: Я должен воспроизводить аудио и видео соответственно, используя услуги Apple. Воспроизведение, которое мне нужно выполнить, должно поддерживать смешивание аудиоканалов во время воспроизведения видео, т. Е. Сказать, что файл mkv содержит два аудиоканала и видео канал. Поэтому я хотел бы знать, какая услуга станет для меня подходящим выбором? Мои исследования показали, что услуга AudioQueue может быть полезной для воспроизведения звука и, вероятно, AVFoundation для видео.
Пожалуйста, помогите найти правильную технологию для моего случая, например, видео playeback + воспроизведение звука с возможным смешиванием аудиоканалов.
Спасибо за отзыв Стив, в основном мое приложение делает все, т. Е. Записывает, воспроизводит микширование звуковых дорожек и воспроизведение видео. Так как я понял из вашего ответа, я должен выбрать 1. Audio Queue: для микширования и воспроизведения звука 2. AudioUnits: для записи аудио 3. OpenGL: для показа видео. У меня все получилось? – deimus
Я бы порекомендовал AudioUnits для всего, если вы одновременно записываете и играете. В этом случае вам нужно будет использовать модуль ввода-вывода для голосовой обработки. Если вы этого не сделаете, ваши записи будут содержать вывод динамиков. Блок ввода-вывода VP использует акустическое эхоподавление. Да, OpenGL, скорее всего, сделает все возможное. Я бы тестировал другие API сначала, чтобы узнать, приемлемы ли они (например, CoreImage или CoreGraphics). –