m3u8 cache bust

closes #81
main
Joost Wooning 2022-02-17 18:17:28 +01:00
parent a7be1cf2ef
commit 0279d930ec
6 changed files with 19 additions and 14 deletions

View File

@ -1,2 +1 @@
BROWSER=none
REACT_APP_VIDEO_CDN=https://cabana-video-development.azureedge.net

View File

@ -1,2 +1 @@
BROWSER=none
REACT_APP_VIDEO_CDN=https://cabana-video.azureedge.net

View File

@ -1,2 +1 @@
BROWSER=none
REACT_APP_VIDEO_CDN=https://cabana-video-staging.azureedge.net

View File

@ -186,13 +186,16 @@ export default class CanExplorer extends Component {
);
} else if (dongleId && name) {
const routeName = `${dongleId}|${name}`;
let urlPromise;
let routePromise;
let logUrlsPromise;
if (this.props.url) {
urlPromise = Promise.resolve(this.props.url);
routePromise = Promise.resolve({
maxqcamera: null,
url: this.props.url,
});
} else {
urlPromise = DrivesApi.getRouteInfo(routeName).then((route) => route.url);
routePromise = DrivesApi.getRouteInfo(routeName);
}
if (this.props.sig && this.props.exp) {
@ -203,15 +206,16 @@ export default class CanExplorer extends Component {
} else {
logUrlsPromise = RawDataApi.getLogUrls(routeName);
}
Promise.all([urlPromise, logUrlsPromise])
Promise.all([routePromise, logUrlsPromise])
.then((initData) => {
const [url, logUrls] = initData;
const [route, logUrls] = initData;
const newState = {
route: {
fullname: routeName,
proclog: logUrls.length - 1,
start_time: Moment(name, 'YYYY-MM-DD--H-m-s'),
url
url: route.url.replace('chffrprivate.blob.core.windows.net', 'chffrprivate.azureedge.net'),
maxqcamera: route.maxqcamera ? route.maxqcamera : logUrls.length - 1,
},
currentParts: [
0,
@ -227,7 +231,7 @@ export default class CanExplorer extends Component {
exp: shareSignature.exp,
sig: shareSignature.sig,
max: logUrls.length - 1,
url
url: route.url.replace('chffrprivate.blob.core.windows.net', 'chffrprivate.azureedge.net'),
},
remove: [GITHUB_AUTH_TOKEN_KEY]
})
@ -1360,6 +1364,7 @@ export default class CanExplorer extends Component {
}
videoOffset={ (this.state.firstFrameTime && this.state.routeInitTime) ? this.state.firstFrameTime - this.state.routeInitTime : 0 }
partsCount={route ? route.proclog : 0}
maxqcamera={route ? route.maxqcamera : 0}
/>
) : null}
</div>

View File

@ -460,6 +460,7 @@ export default class Explorer extends Component {
<RouteVideoSync
message={messages[this.props.selectedMessage]}
segment={this.state.segment}
maxqcamera={this.props.maxqcamera}
startTime={startTime}
seekIndex={this.props.seekIndex}
userSeekIndex={this.state.userSeekIndex}
@ -518,6 +519,7 @@ Explorer.propTypes = {
autoplay: PropTypes.bool.isRequired,
currentParts: PropTypes.array.isRequired,
partsCount: PropTypes.number,
maxqcamera: PropTypes.number,
startTime: PropTypes.number,
startSegments: PropTypes.array
};

View File

@ -62,11 +62,11 @@ export default class RouteVideoSync extends Component {
}
componentDidMount() {
let videoApi = VideoApi(this.props.url, process.env.REACT_APP_VIDEO_CDN);
let videoApi = VideoApi(this.props.url);
videoApi.getQcameraStreamIndex().then(() => {
this.setState({source: videoApi.getQcameraStreamIndexUrl()});
}).catch(() => {
this.setState({source: videoApi.getRearCameraStreamIndexUrl()});
this.setState({source: videoApi.getQcameraStreamIndexUrl() + `?s=${this.props.maxqcamera}`});
}).catch((err) => {
console.log(err);
})
}
@ -226,6 +226,7 @@ export default class RouteVideoSync extends Component {
RouteVideoSync.propTypes = {
segment: PropTypes.array.isRequired,
maxqcamera: PropTypes.number,
thumbnails: PropTypes.array,
url: PropTypes.string.isRequired,
playing: PropTypes.bool.isRequired,