Я хочу играть видео, формат которого video.h264как играть .h264 в прошивкой
Я попытался с AVPlayer
и MPMoviePlayerViewController
Но, я не смог играть. Есть ли способ сделать это. Любая другая библиотека для достижения той же
Я хочу играть видео, формат которого video.h264как играть .h264 в прошивкой
Я попытался с AVPlayer
и MPMoviePlayerViewController
Но, я не смог играть. Есть ли способ сделать это. Любая другая библиотека для достижения той же
Вот код, который делает только что:
- (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-интерфейсами, и в этом нет ничего.
Мне нужно воспроизвести видео в формате .h264. –
Файл .m4v содержит видео кодека H.264. – MoDJ
Если что-то недавно не изменилось (что всегда возможно в мире видео ...) iOS не поддерживает воспроизведение «сырого» видео h264 - например, MyVideoFile.h264.
Ее стоит отметить, что видео, как правило, завернутые как это, когда он попадает в устройство IOS, если он идет в потоковом:
Если ваше видео короткое, вам просто нужно его упаковать в контейнер 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. (Прогрессивная загрузка может использоваться для небольших клипов.)
Сначала прочитайте это сообщение. Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream
Файл .h264 находится в формате приложения b. Далее прочитать:
https://developer.apple.com/reference/videotoolbox/vtdecompressionsession
Преобразовать из приложения б к AVCC, установите ExtraData при открытии декомпрессионных сессий. Декодирование кадров -> отображение кадров.
Очень хороший связанный ответ в первой ссылке! Вторая ссылка тоже интересна - на данный момент это похоже на функциональность бета-версии iOS - это правильно?Учитывая сложность кодирования и упаковки видео, полезно иногда использовать существующие библиотеки. ffmpeg будет поддерживать упаковку h.264-файла в контейнер mp4, который, по моему мнению, iOS-плееры найдут более приемлемым - это правда? В Android существует надежная и хорошо используемая fmmpeg-обертка, если конверсии должны выполняться на мобильном телефоне (конечно, конечно, на стороне сервера), и я думаю, что они доступны и в iOS. – Mick
Нет, это не бета-версия, она была в iOS с версии 8. И тогда не была бета-версия. Если вы собираетесь обернуть es в mp4, сделайте это на стороне сервера, а не на клиенте. Ваш вопрос состоял в том, как играть в файл h264, а не как преобразовать его в другой формат. – szatmary
Хорошо. Бета-вопрос был вызван тем, что на странице связанного яблочного разработчика выше есть заметка внизу, которая, по-видимому, подразумевает, что это может быть бета-версия. Возможно, именно так, как у них установлена страница. Не мой вопрос, btw :) Согласитесь с комментарием на стороне сервера. – Mick
Люди начинают чрезмерно использовать систему «голосовать за закрытие». Это совершенно правильный вопрос; поправьте меня если я ошибаюсь. –