Javascript 在React Native的Webview中嵌入youtube视频
我正在尝试在react原生android/ios应用程序中播放Youtube视频。我定义了一个webview:Javascript 在React Native的Webview中嵌入youtube视频,javascript,android,webview,youtube,react-native,Javascript,Android,Webview,Youtube,React Native,我正在尝试在react原生android/ios应用程序中播放Youtube视频。我定义了一个webview: <WebView style={styles.frame} url={this.props.url} renderLoading={this.renderLoading} renderErro
<WebView
style={styles.frame}
url={this.props.url}
renderLoading={this.renderLoading}
renderError={this.renderError}
automaticallyAdjustContentInsets={false}
/>
但这会在webview中显示整个youtube页面,包括评论部分
我只想显示视频部分,不想显示评论部分。url中是否缺少任何内容?我认为您可以将视频从youtube中嵌入的html直接加载到您的react原生网络视图中。与其导航到url,不如将WebView的源属性设置为html,如下所示:
<WebView source={{ html: "HTML here" }}
.../>
根据描述如何将youtube iframe加载到普通android网络视图中,您可以用实际的HTML替换“此处的HTML”,使其看起来像:
<WebView source={{ html: "<html><body>Look Ma' a video! <br /> <iframe width="560" height="315" src="https://www.youtube.com/embed/RJa4kG1N3d0" frameborder="0" allowfullscreen></iframe></body></html>" }}
.../>
您可以获得获取的说明。将YouTube嵌入React本机iOS设备的最简单方法是使用
。您只需将watch?v=
替换为embed
。这不适用于Android
例如:
<WebView
style={{flex:1}}
javaScriptEnabled={true}
source={{uri: 'https://www.youtube.com/embed/ZZ5LpwO-An4?rel=0&autoplay=0&showinfo=0&controls=0'}}
/>
这个代码对我很有用
<WebView
style={{ marginTop: 20, width: 320, height: 230 }}
javaScriptEnabled={true}
domStorageEnabled={true}
source={{ uri: "https://www.youtube.com/embed/-ZZPOXn6_9w" }}
/>
我有你的问题。你想让你的用户通过视频教程作为道具,但一个天真的用户不知道什么是嵌入式链接,他只会复制和粘贴浏览器中的URL并粘贴它,这将不是嵌入式的,但你可以转换它。请参见此示例: 原始视频:-
嵌入式视频:- 让我们看看如何转换它:
const OriginalVideo = "https://www.youtube.com/watch?v=qaiLSpqeBHY"
const SplitedVideo = OriginalVideo.split("watch?v=")
const Embed = SplitedVideo.join("embed/")
console.log(Embed)
这是从原始视频URL转换而来的嵌入式视频
实例:-
componentDidMount() {
const Video = this.props.navigation.getParam("Video");
const MyVideo = Video.split("watch?v=");
const EmbededVideo = MyVideo.join("embed/");
this.setState({
Video: EmbededVideo
});
}
只需一条评论,如果谷歌在youtube之外播放视频,它将阻止你的应用。请确保你在锁定设备时,Android中的视频不会一直在后台播放。否则该应用程序将被谷歌Play商店拒绝。在android emulator和设备(htc desire)中为我工作,仅仅使用flex是不起作用的。(必须指定高度和宽度)我的应用程序被Google Play store使用此方法拒绝,请检查此处以获得替代解决方案--
componentDidMount() {
const Video = this.props.navigation.getParam("Video");
const MyVideo = Video.split("watch?v=");
const EmbededVideo = MyVideo.join("embed/");
this.setState({
Video: EmbededVideo
});
}