Объединение двух файлов транспортного потока mpeg-2 в один медиафайл на iOS

#iphone #ios #avfoundation #mpeg2-ts #avurlasset

#iPhone #iOS #avfoundation #mpeg2-ts #avurlasset

Вопрос:

Media file segmenter — это инструмент, предоставляемый Apple. Он может разделить один медиафайл на серию небольших файлов транспортного потока mpeg-2 для прямой трансляции по HTTP

Теперь я хотел бы выполнить обратную работу: объединить все файлы транспортного потока mpeg-2 в один медиафайл (mp4) для воспроизведения на iPhone

Я пытался использовать классы AVFoundation — AVURLAsset , AVMutableComposition , AVMutableCompositionTrack и т.д. Я кодирую что-то вроде:

 AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:mpeg2tsMediaURL];
NSLog("duration: %lld", [asset duration].value); // shows empty duration here
  

Я пытаюсь напечатать другие свойства, такие как AudioTrack, VideoTrack
Все свойства пусты, ресурс представляет собой пустой объект
Когда я переключаю mpeg2tsMediaURL на обычный URL файла mp4, он может правильно отображать свойства.
Итак, это неспособность использовать классы AVFoundation для выполнения работы.

Приветствуются любые предложения. Спасибо.

Ответ №1:

Вы можете объединить файлы транспортного потока MPEG с помощью tsMuxeR.

Объединить TS-файлы с помощью графического интерфейса:

  1. Нажмите кнопку «Добавить», чтобы добавить первый файл.
  2. Нажмите кнопку «присоединиться» и выберите второй файл. Нажмите кнопку «присоединиться» еще раз, чтобы выбрать третий файл и т.д. (К сожалению, начиная с версии 2.6.12, вам придется объединять каждый файл по отдельности. Возможно, вам захочется использовать инструмент командной строки, если файлов много.)
  3. Для вас должно быть автоматически выбрано выходное имя файла, но вы можете изменить путь к выходному файлу в разделе «Вывод».
  4. Нажмите кнопку «Начать мультиплексирование».

Комментарии:

1. Я только что использовал это для успешного объединения файлов 21 .ts, я, вероятно, создам свой собственный графический интерфейс, поскольку кнопка объединения довольно раздражает