Actionscript netStream играть в mp4 с IOS - PullRequest
       58

Actionscript netStream играть в mp4 с IOS

0 голосов
/ 22 октября 2018

Я пытаюсь воспроизвести видео из приложения, используя 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-файла должно работать.

Особые замечания по видео H.264 в AIR 3.0 для iOS Для видео H.264 API-интерфейсы iOS для воспроизведения видео принимают только URL-адрес файла илипоток.Вы не можете передать буфер видеоданных H264 для декодирования.

Так что мне нужно найти новый способ воспроизведения видео, отличный от netStream, или я лучше переключаюсь на другой тип файла?

В качестве дополнительного примечания Adobe предлагает написать ваши mp4 URL-адреса следующим образом:

("mp4: samples / myvideo.mp4");

Мое приложение не может найти файл с «mp4:» в начале URL.

1 Ответ

0 голосов
/ 22 октября 2018

Если вы хотите воспроизводить видео, которые упакованы с вашим приложением для 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.

...