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 BROWSER=none
REACT_APP_VIDEO_CDN=https://cabana-video-development.azureedge.net

View File

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

View File

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

View File

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

View File

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