#iphone #ios #image #cocoa-touch #video
#iPhone #cocoa-touch
Вопрос:
Я наткнулся на несколько примеров кодов, в которых набор изображений добавляется для создания QTMovie.
Я ориентируюсь на платформу OS X без каких-либо фреймворков QT. У меня возникла идея создать файл с расширением и внедрить в него соответствующие метаданные, а также найти способ вставки изображений и аудио в требуемом формате. Таким образом, когда файл создан, его можно просто воспроизвести.
Я не уверен, какой формат / расширение лучше. указатели очень ценятся.
Ответ №1:
Без QuickTime (или эквивалентной мультимедийной платформы) то, что вы описываете, представляет собой довольно много работы. Обычно для кодирования изображений в видео используется алгоритм сжатия видео (например, H.264), а для кодирования звуковой дорожки — алгоритм сжатия аудио (например, AAC). Затем вы должны записать эти потоки в файл-контейнер, такой как файл MPEG-4, который чередует потоки для воспроизведения, содержит метаданные и индексы и так далее. Затем для воспроизведения вы анализируете файл, декодируете видео- и аудиоданные и планируете их воспроизведение, заботясь о том, чтобы они были синхронизированы.
QuickTime делает все это (и не только) за вас, и было бы огромным усилием написать все это самостоятельно. Есть ли какая-то причина, по которой вы работаете на OS X, но не можете использовать QuickTime?
Учитывая, что вопрос помечен iPhone, почему вы не можете просто использовать QTKit?
Если бы вам пришлось делать это с нуля, вы могли бы принять очень простое решение, при котором вы сохраняете последовательность изображений в виде набора файлов JPEG (но тогда вам потребуется libjpeg
; используйте raw RGB или PPM, если необходимо), звуковую дорожку в виде необработанных данных WAV, а затем иметь другой файл (текстовый файл, который вы определяете), в котором хранится информация о времени, так что вы могли бы просто транслировать аудио и сохранять номера кадров изображений с соответствующим временным кодом / смещением выборки. Это очень простое решение, которое можно заставить работать без особых усилий.
Если вы дадите нам некоторое представление о том, чего вы пытаетесь достичь, мы могли бы предложить несколько более конкретных предложений.
Комментарии:
1. Спасибо за быстрый ответ. У меня есть набор изображений из приложения, и приложение позволяет пользователю выбирать аудиофайл. Моя задача — просто создать из них видеофайл. Затем файл загружается. этот файл должен быть совместим с другими видеопроигрывателями (базовый формат). Я не хочу внедрять свой собственный проигрыватель для файлов. И да, это для мобильных телефонов (приоритет отдается iPhone)
2. Использование H.264 для видео, AAC для аудио и M4V (MPEG-4) для контейнера должно обеспечить вам самую широкую поддержку. Это предпочтительный формат для QuickTime и iPhone, а также поддерживается последними версиями Flash. Если вы можете использовать QuickTime для их создания, взгляните на QTKit API, где вы можете создать
QTTrack
и добавить свои изображения с помощью addImage:forDuration:withAttributes:, добавить свой звук в качестве другой дорожки, а затем сохранить его.3. Отлично! Я думаю, мне нужно изучить это более подробно. спасибо за руководство. Доступна какая-либо онлайн-справка?
4. Конечно, ссылка на QTKit является developer.apple.com/mac/library/documentation/QuickTime / … и вы, вероятно, захотите прочитать некоторые вводные документы, такие developer.apple.com/quicktime/qtkit.html
5. привет, я тоже хочу разработать что-то подобное на iphone. изображения у меня с собой, у меня также есть аудио. Но я не могу понять, как объединить их оба и создать из них видеофайл. ? И QuickTime отсутствует для iphone : (
Ответ №2:
Если вы хотите написать программу для этого, вы могли бы использовать Xuggler на Java, чтобы сделать это. Это позволит вам сохранить ваше окончательное видео в формате, воспроизводимом практически любым медиаплеером.
Начните с понимания того, как видеофайлы (например, MP4, Quicktime) на самом деле представляют аудио и видео с помощью этого чрезмерно упрощенного руководства по интернет-видео.
Затем поиграйте с руководствами MediaTool. Вы можете написать программы, которые преобразуют изображения raw в видеофайлы (смотрите Этот пример кода). Наконец, чтобы написать программу, которая синхронизирует аудио и видео, смотрите это руководство; она генерирует набор изображений и издает некоторый звуковой шум, который изменяется по времени, когда мяч ударяется о край коробки.
Надеюсь, это поможет.
Рисунки
Комментарии:
1. Спасибо, Кларк, теперь я ориентируюсь на это приложение для iPhone. таким образом, Java не подходит. кодирование и создание видеофайлов должно осуществляться на самом устройстве, чтобы оно было совместимо с настольными компьютерами и т.д., Поэтому я выбираю H.264. Существуют ли какие-либо библиотеки C или фреймворки, которые я могу использовать в Xcode для достижения этой цели?
2. FFmpeg — это путь на C (ничего другого даже близко нет).