1. ホーム
  2. vue

videojs: エラーです。(CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) このメディアと互換性のあるソースは見つかりませんでした。

2022-02-15 05:05:18
<パス

VIDEOJSの解決方法: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) このメディアと互換性のあるソースは見つかりませんでした。

<template>
	<! -- This component is the m3u8 event stay component -->
	<div class="container">
	   <div class="player">
			<div v-if="src===''">
				Video playback failed
			</div>
			<video-player v-else class="video-player vjs-custom-skin" ref="videoPlayer" :playsinline="true" : options="playerOptions"></video-player>
		</div>
	</div>
</template>

<script>
import 'video.js/dist/video-js.css';
import 'vue-video-player/src/custom-theme.css';
import { videoPlayer } from 'vue-video-player'; //import component

import 'videojs-contrib-hls';
export default {
	props: {
		src: {
			type: String,
			default: ''
		}
	},
	watch: {
		src: {
			handler(newval) {
				// console.log(newval);
				this.playerOptions.sources[0].src = newval;
				// console.log(this.playerOptions.sources[0].src, 'video assignment');
				this.srcvideo = newval;
			}
		}
	},
	created() {
		this.playerOptions.sources[0].src = this.src;
		
	},
	data() {
		return {
			srcvideo: '', //video address
			playerOptions: {
				//playbackRates: [0.7, 1.0, 1.5, 2.0], //playback speed

				autoplay: true, // If true, start playback when browser is ready.
				muted: false, // will eliminate any audio by default.
				loop: false, // cause the video to restart as soon as it ends.
				preload: 'auto', // Suggest whether the browser should start downloading video data after the <video> load element. auto browser selects the best behavior to start loading the video immediately (if the browser supports it)
				language: 'zh-CN',
				aspectRatio: '16:9', // Put the player in smooth mode and use this value when calculating the dynamic size of the player. The value should represent a ratio - two numbers separated by a colon (e.g. "16:9" or "4:3")
				fluid: true, // When true, the Video.js player will have a fluid size. In other words, it will be scaled to fit its container.
				sources: [
					{
						type: 'application/x-mpegURL',
						src: 'http://ivi.bupt.edu.cn/hls/chchd.m3u8' // your m3u8 address (required)
					}
				],
				// poster: 'poster.jpg', // your cover address
				width: document.documentElement.clientWidth
				// notSupportedMessage: 'This video cannot be played at this time, please try again later' // Allow to override the default message displayed when Video.js cannot play the media source.
				// controlBar: {
				// timeDivider: true,
				// durationDisplay: true,
				// remainingTimeDisplay: false,
				// fullscreenToggle: true // fullscreen button
				// }
			}
		};
	},
	components: {
		videoPlayer
	},
	methods: {
		//events
	}
};
</script>

<style scoped></style>



これは、domノードが生成されるときに、srcの値関数が空であるためで、これは1回の判定で可能です

この問題のもう一つの理由は、rtmpストリームでは、現在flashがサポートされていないため、互換性のある再生ツールを見つけることができず、"videojs-flash"をインポートしても、動画を再生する方法がないことです。flvタイプの再生ストリームでは、flv.jsを使うことが推奨されていますが、今のところはhlsストリームで対応する方がよいでしょう。