Current
LIVE BROADCAST
YouTube Live Test
Free live streaming.
Embed w/ Javascript for Analytics
<!-- 1. The <iframe> (and video player) will replace this <div> tag.
Source:
https://developers.google.com/youtube/iframe_api_reference
https://megalytic.com/blog/tracking-youtube-videos-using-google-analytics
-->
<div id="player"></div>
<script>
// PWC: This grabs the Live Stream ID
// Code from https://wordpress.org/plugins/youtube-live-stream-auto-embed/
// Instructions: Channel ID from https://www.youtube.com/account_advanced
// API ID from https://console.developers.google.com/project
// Create a Project, Add YouTube Data v3 API, Create Credentials
// Use Public access, limit credentials to website
var YtChannelId = 'UCjddNuxZRxX3Xor7VLa8D2g';
var Yt_API_KEY = 'AIzaSyA92FxePp2Gp5M6yJk-SBRzPrtXjJE9a7g';
var videoId;
var refreshID;
var firstRequest = true;
var request;
var json;
var videoPlaceholder;
var videoPlayerMade = false;
function init() {
gapi.client.setApiKey(Yt_API_KEY);
gapi.client.load('youtube', 'v3').then(makeRequest);
}
function startRequest() {
refreshID = setInterval(makeRequest, 30000);
}
function makeRequest() {
request = gapi.client.youtube.search.list({
part: 'snippet',
channelId: YtChannelId,
maxResults: 1,
type: 'video',
eventType: 'live'
});
request.then(function(response) {
processResult(response);
}, function(reason) {
console.log('Error: ' + reason.result.error.message);
}
);
}
function processResult(result){
console.log(result);
json = JSON.parse(result.body);
if(json.pageInfo.totalResults == 0){
videoId = 'nu6ZX2xHpCc'; // Placeholder
console.log('Error: No Results from Search');
if (!videoPlaceholder && videoPlayerMade) {
player.loadVideoById (videoId)
}
videoPlaceholder = true;
}
else {
videoId = json.items[0].id.videoId;
if (videoPlaceholder && videoPlayerMade) {
player.loadVideoById(videoId);
}
videoPlaceholder = false;
}
if (!videoPlayerMade) {
createIframe();
startRequest();
}
}
function createIframe() {
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
videoPlayerMade = true;
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '560',
width: '100%',
videoId: videoId,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
// Embed Live Chat
// https://support.google.com/youtube/answer/2524549?hl=en
document.getElementById('chat').src = "https://www.youtube.com/live_chat?v=" +videoId+ "&embed_domain=www.tjcsj.org";
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
// do nothing, no tracking needed
}
// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var pauseFlag = false;
function onPlayerStateChange(event) {
// track when user clicks to Play
if (event.data == YT.PlayerState.PLAYING) {
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Test Video']);
pauseFlag = true;
}
// track when user clicks to Pause
if (event.data == YT.PlayerState.PAUSED && pauseFlag) {
_gaq.push(['_trackEvent', 'Videos', 'Pause', 'Test Video']);
pauseFlag = false;
}
// track when video ends
if (event.data == YT.PlayerState.ENDED) {
_gaq.push(['_trackEvent', 'Videos', 'Finished', 'Test Video']);
}
}
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>Live Streams:
Pacific TimeIrvine, CA [11:00 am]
Glendale, CA [11:00 am]
Garden Grove, CA [10:00 am]
Vancouver, Canada [11:00 am]
Central TimeHouston, TX [10:45 am]
Dallas, TX [11:00 am]
Chicago, IL [11:00 am]
Eastern TimeElizabeth, NJ [10:30am]
Hillsborough, NJ [10:30am]
Flushings, NY [10:30am]
Ontario, Canada [11:00 am]
Toronto, Canada [11:00 am]
InternationalLondon Central, UK
Newcastle, UK
Dublin, Ireland
Hong Kong
Taipei, Taiwan
Christchurch, New Zealand
Pre-Recorded Sermons:
USGA e-library
Taiwan GA WebTV (Chinese only)
Podcast (audio only)
Simple Embedding
Not used because lacks analytics and no alternative video.
<iframe class="iframe-youtube" src="https://www.youtube.com/embed/live_stream?channel=UCjddNuxZRxX3Xor7VLa8D2g" frameborder="0" width="100%" height="640" allowfullscreen=""></iframe>
Chatroom
YouTube Embed Chat
Javascript above (full version) will update this iframe with the live stream chat when live stream is available and loads
// https://codepen.io/HanyHeikal/pen/ZQmKZK // http://www.tagindex.net/css/frame/border.html <iframe id="chat" src="https://www.youtube.com/live_chat?v=nu6ZX2xHpCc&embed_domain=www.tjcsj.org" width="100%" height="640" style="border: 4px solid #0084EF;" frameborder="1" scrolling="no"></iframe>
Chatango
<script id="cid0020000130301083043" data-cfasync="false" async src="//st.chatango.com/js/gz/emb.js" style="width: 100%;height: 640px;">{"handle":"tjcsj","arch":"js","styles":{"a":"0084EF","b":100,"c":"FFFFFF","d":"FFFFFF","k":"0084EF","l":"0084EF","m":"0084EF","n":"FFFFFF","p":"10","q":"0084EF","r":100,"cnrs":"0.35","fwtickm":1}}</script> <!-- <iframe src="http://tjcsj.chatango.com/" width="100%" height="480" --frameborder="0" scrolling="0"></iframe> -->
YouTube and Chatango Side by Side
<iframe id="chat" src="https://www.youtube.com/live_chat?v=nu6ZX2xHpCc&embed_domain=www.tjcsj.org" width="49%" height="640" style="border: 4px solid #0084EF;" frameborder="1" scrolling="no" align="left">></iframe> <script id="cid0020000130301083043" data-cfasync="false" async src="//st.chatango.com/js/gz/emb.js" style="width: 49%;height: 640px;align:right">{"handle":"tjcsj","arch":"js","styles":{"a":"0084EF","b":100,"c":"FFFFFF","d":"FFFFFF","k":"0084EF","l":"0084EF","m":"0084EF","n":"FFFFFF","p":"10","q":"0084EF","r":100,"cnrs":"0.35","fwtickm":1}}</script>