FLV.js
c
var ipcVideo = document.getElementById('ipcVideo');
var triggerPredict = function() {
var flvPlayer = null, url = '', metaArrived = false;
var initializePlayer = function() {
url = $('#ipcFlv').val();
if (url && flvjs.isSupported()) {
flvPlayer = flvjs.createPlayer({
isLive: true,
type: 'flv',
url: url
}, {
isLive : true
});
flvPlayer.attachMediaElement(ipcVideo);
flvPlayer.load();
//
metaArrived = false;
flvPlayer.on(flvjs.Events.ERROR, (errorType, errorDetail, errorInfo) => {
console.dir('ERROR:', errorType, errorDetail, errorInfo);
if (errorDetail.includes('SourceBuffer')) {
recoverPlayer();
}
});
flvPlayer.on(flvjs.Events.METADATA_ARRIVED, ()=>{
console.dir('METADATA_ARRIVED', arguments)
if (metaArrived) {
// 第二次发来Meta信息 => 断线后重连了 => 重新初始化控件
}
metaArrived = true;
});
//
flvPlayer.play().catch(e => {
console.dir('AutoPlay Failed', e);
});
}
}
var destroyPlayer = function() {
if (flvPlayer) {
try {
flvPlayer.pause();
flvPlayer.unload();
flvPlayer.detachMediaElement();
flvPlayer.destroy();
} catch (e) {
console.dir('ERROR:', e);
}
flvPlayer = null;
}
}
var restartPlayer = function() {
destroyPlayer();
initializePlayer();
};
restartPlayer();
};
PyAV
c
import av
import cv2
def play(token = ''):
url = ('http://localhost:9999/flv?port=1935&app=live&stream=%s' % (token))
container = av.open(url)
for frame in container.decode(video=0):
img = frame.to_ndarray(format='bgr24')
cv2.imshow('PyAV-http-flv', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if __name__ == '__main__':
token = '1744010889050'
play(token)
