Я пытаюсь воспроизвести видео из приложения с помощью Flash Builder 4.7, AIRSDK 31.0 и ios 12.
private function init():void{
holder.addChild(video);
this.addElement(holder);
nc.connect(null);
ns = new NetStream(nc);
ns.client = {};
ns.client.onMetaData = ns_onMetaData;
ns.client.onCuePoint = ns_onCuePoint;
video.attachNetStream(ns);
ns.play("Videos/video.mp4");
ns.addEventListener(NetStatusEvent.NET_STATUS, statusNet);
}
Это работает на симуляторах и на устройствах Android, но не на устройствах iOS. Я видел пару похожих вопросов, но они пытаются передать mp4 с адреса «http», где мой использует локальный файл.
Меня попросили придерживаться формата mp4, хотя я читал, что использование файла FLV должно работать.
Special considerations for H.264 video in AIR 3.0 for iOS For H.264 video, the iOS APIs for video playback accept only a URL to a file or stream. You cannot pass in a buffer of H264 video data to be decoded.
Так что мне нужно найти новый способ воспроизведения видео, отличный от netStream, или мне лучше переключиться на другой тип файла?
В качестве примечания Adobe рекомендует писать URL-адреса в формате mp4 следующим образом:
("mp4:samples/myvideo.mp4");
Мое приложение не может найти файл с "mp4:" перед URL-адресом.
Спасибо, но я видел это. Похоже, он использует ссылку «http:», а не внедренный файл. Судя по тому, что я читал, это имеет значение.
Это в значительной степени объясняет, почему видео не воспроизводится, а также предоставляет ряд решений. StageVideo выглядит многообещающе. Вы их пробовали и каков результат?
Меня попросили не использовать форматирование FLV. Я изо всех сил пытаюсь найти хороший урок на сцене видео.
О, посмотрите, что я нашел: AIR 3 для iOS использует объект StageVideo для видео H.264 с аппаратным декодированием с ограниченной поддержкой функций NetStream. Это из официальной документации: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… Вам действительно нужен учебник по этому поводу? Класс не кажется слишком сложным.
Выяснил, почему у меня возникли проблемы со StageVideo. У меня есть фоновое изображение, которое накладывается на видео, поскольку StageVideo всегда находится сзади. : s
Итак, я полагаю, вы, наконец, освоили это? Хороший.





Если вы хотите воспроизводить видео, упакованные с вашим приложением для iOS, важно убедиться, что вы действительно включаете их при компиляции приложения.
Не проверено, но что-то вроде этого должно работать.
var _dFile:File;
var _ns:NetStream;
var _nc:NetConnection;
var _customClient:Object;
var _video:Video;
_customClient = new Object();
_customClient.onMetaData = metaDataHandler;
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_ns.client = _customClient;
//this is the important bit for finding files within the .ipa bundle.
_dFile = File.applicationStorageDirectory.resolvePath("nameOfYourVideoDirectory/nameOfVideo.mp4");
_ns.play(_dFile.url);
_video = new Video(480, 340);
_video.attachNetStream(_ns);
_ns.addEventListener(NetStatusEvent.NET_STATUS, onNSComplete, false, 0, true);
private function metaDataHandler(infoObject:Object):void {
trace("Length of video",infoObject.duration);
}
private function onNSComplete(e:NetStatusEvent):void{
if (e.info.code == "NetStream.Buffer.Empty") {
//do something
}
}
Однако я настоятельно рекомендую использовать ANE для воспроизведения видео на мобильных устройствах через собственный медиаплеер. Взгляните на Distriqt MediaPlayer ANE.
Спасибо. Итак, с моим старым кодом 'ns.play ("Videos / video.mp4");' e.info.code даст мне Netstream.Play.Start, затем NetStream.Play.Failed и, наконец, NetStream.Play.Stop. С вашим кодом я получаю NetStream.Play.StreamNotFound. 'File.applicationStorageDirectory.resolvePath ("Videos / video. mp4");' Вот как я написал путь. Похоже, он не может его найти.
Вы уверены, что видео упакованы в .ipa?
да. Удалось получить версию, работающую со StageVideo, и она находит файл в порядке. Тем не менее, хотелось бы знать, возможно ли это с видеокомпонентом.
Этот? stackoverflow.com/questions/16010572/…