videoplayer fix

This commit is contained in:
tapframe 2025-07-30 01:18:56 +05:30
parent 7bae3be975
commit 8cf3508e22

View file

@ -713,15 +713,25 @@ const AndroidVideoPlayer: React.FC = () => {
const handleError = (error: any) => { const handleError = (error: any) => {
logger.error('AndroidVideoPlayer error: ', error); logger.error('AndroidVideoPlayer error: ', error);
// Check for specific AVFoundation server configuration errors
const isServerConfigError = error?.error?.code === -11850 ||
error?.code === -11850 ||
(error?.error?.localizedDescription &&
error.error.localizedDescription.includes('server is not correctly configured'));
// Format error details for user display // Format error details for user display
let errorMessage = 'An unknown error occurred'; let errorMessage = 'An unknown error occurred';
if (error) { if (error) {
if (typeof error === 'string') { if (isServerConfigError) {
errorMessage = 'Stream server configuration issue. This may be a temporary problem with the video source.';
} else if (typeof error === 'string') {
errorMessage = error; errorMessage = error;
} else if (error.message) { } else if (error.message) {
errorMessage = error.message; errorMessage = error.message;
} else if (error.error && error.error.message) { } else if (error.error && error.error.message) {
errorMessage = error.error.message; errorMessage = error.error.message;
} else if (error.error && error.error.localizedDescription) {
errorMessage = error.error.localizedDescription;
} else if (error.code) { } else if (error.code) {
errorMessage = `Error Code: ${error.code}`; errorMessage = `Error Code: ${error.code}`;
} else { } else {
@ -1175,12 +1185,25 @@ const AndroidVideoPlayer: React.FC = () => {
style={[styles.video, customVideoStyles, { transform: [{ scale: zoomScale }] }]} style={[styles.video, customVideoStyles, { transform: [{ scale: zoomScale }] }]}
source={(() => { source={(() => {
// Use headers from route params if available, otherwise no headers // Use headers from route params if available, otherwise no headers
const sourceWithHeaders = headers ? { let processedHeaders = headers;
// For iOS and Xprime streams, filter out potentially problematic headers
if (Platform.OS === 'ios' && headers && (streamProvider === 'xprime' || streamProvider === 'Xprime')) {
// Remove headers that might cause AVFoundation issues
const { 'Sec-Fetch-Dest': _, 'Sec-Fetch-Mode': __, 'Sec-Fetch-Site': ___, 'DNT': ____, ...filteredHeaders } = headers;
processedHeaders = {
'User-Agent': headers['User-Agent'] || 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15',
'Referer': headers['Referer'] || headers['Origin'] || 'https://xprime.tv/',
'Accept': 'video/mp4,video/*;q=0.9,*/*;q=0.8'
};
}
const sourceWithHeaders = processedHeaders ? {
uri: currentStreamUrl, uri: currentStreamUrl,
headers: headers headers: processedHeaders
} : { uri: currentStreamUrl }; } : { uri: currentStreamUrl };
console.log('[AndroidVideoPlayer] Using headers from route params:', headers); console.log('[AndroidVideoPlayer] Using headers from route params:', processedHeaders);
return sourceWithHeaders; return sourceWithHeaders;
})()} })()}