2017-02-21 116 views
1

Я хочу играть видео, формат которого video.h264как играть .h264 в прошивкой

Я попытался с AVPlayer и MPMoviePlayerViewController

Но, я не смог играть. Есть ли способ сделать это. Любая другая библиотека для достижения той же

+1

Люди начинают чрезмерно использовать систему «голосовать за закрытие». Это совершенно правильный вопрос; поправьте меня если я ошибаюсь. –

ответ

-1

Вот код, который делает только что:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIView *view = self.view; 
    NSString *resourceName = @"SunSpot_1080p_main.m4v"; 
    NSString* movieFilePath = [[NSBundle mainBundle] 
    pathForResource:resourceName ofType:nil]; 
    NSAssert(movieFilePath, @"movieFilePath is nil"); 
    NSURL *fileURL = [NSURL fileURLWithPath:movieFilePath]; 

    AVPlayerViewController *playerViewController = 
    [[AVPlayerViewController alloc] init]; 
    playerViewController.player = 
    [AVPlayer playerWithURL:fileURL]; 
    self.avPlayerViewcontroller = playerViewController; 
    [self resizePlayerToViewSize]; 
    [view addSubview:playerViewController.view]; 
    view.autoresizesSubviews = TRUE; 
} 

Полный исходный код и GitHub ссылку можно найти на моем blog post по этому вопросу. Этот новый контроллер просмотра игроков очень прост по сравнению с предыдущими API-интерфейсами, и в этом нет ничего.

+0

Мне нужно воспроизвести видео в формате .h264. –

+0

Файл .m4v содержит видео кодека H.264. – MoDJ

-1

Если что-то недавно не изменилось (что всегда возможно в мире видео ...) iOS не поддерживает воспроизведение «сырого» видео h264 - например, MyVideoFile.h264.

Ее стоит отметить, что видео, как правило, завернутые как это, когда он попадает в устройство IOS, если он идет в потоковом:

  • необработанные пиксели растровые
  • необработанные пиксели закодированные (egh264 кодированные)
  • кодированного видео потока упакованный в контейнер с аудио потоков, субтитры и т.д. (например, контейнер MP4)
  • контейнера разбивается на куски «» или сегменты для потоковой передачи (на прошивке с использованием HLS формата потокового)

Если ваше видео короткое, вам просто нужно его упаковать в контейнер mp4, и он должен воспроизводиться тогда - т. Е. Создать MyVideoFile.mp4 из вашего исходного файла.

Если он больше, и вы потоковое, вы, как правило, должны также использовать формат потокового HLS, поскольку это один из правил Аппель (см https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW5):

Если ваше приложение обеспечивает видео по сотовым сетям, и видеоролик превышает продолжительность 10 минут или 5 МБ данных за пять минут, вам необходимо использовать HTTP Live Streaming. (Прогрессивная загрузка может использоваться для небольших клипов.)

0

Сначала прочитайте это сообщение. Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

Файл .h264 находится в формате приложения b. Далее прочитать:

https://developer.apple.com/reference/videotoolbox/vtdecompressionsession

Преобразовать из приложения б к AVCC, установите ExtraData при открытии декомпрессионных сессий. Декодирование кадров -> отображение кадров.

+0

Очень хороший связанный ответ в первой ссылке! Вторая ссылка тоже интересна - на данный момент это похоже на функциональность бета-версии iOS - это правильно?Учитывая сложность кодирования и упаковки видео, полезно иногда использовать существующие библиотеки. ffmpeg будет поддерживать упаковку h.264-файла в контейнер mp4, который, по моему мнению, iOS-плееры найдут более приемлемым - это правда? В Android существует надежная и хорошо используемая fmmpeg-обертка, если конверсии должны выполняться на мобильном телефоне (конечно, конечно, на стороне сервера), и я думаю, что они доступны и в iOS. – Mick

+0

Нет, это не бета-версия, она была в iOS с версии 8. И тогда не была бета-версия. Если вы собираетесь обернуть es в mp4, сделайте это на стороне сервера, а не на клиенте. Ваш вопрос состоял в том, как играть в файл h264, а не как преобразовать его в другой формат. – szatmary

+0

Хорошо. Бета-вопрос был вызван тем, что на странице связанного яблочного разработчика выше есть заметка внизу, которая, по-видимому, подразумевает, что это может быть бета-версия. Возможно, именно так, как у них установлена ​​страница. Не мой вопрос, btw :) Согласитесь с комментарием на стороне сервера. – Mick