{video}
is a package that utilises the video.js library to play video on the modern web.
This package is not yet available on CRAN. To install the latest version:
install.packages("devtools") devtools::install_github("ashbaldry/video")
The HTML way to include an audio file in any shiny application/web page is to use the <audio>
tag. This cannot (easily) be manipulated from the server.
tags$video(src = "https://vjs.zencdn.net/v/oceans.mp4", type = "video/mp4", controls = NA)
video.js is a flexible video player that is more robust than the basic HTML5 video player, and can easily be manipulated from the server side of shiny applications.
library(shiny) library(video) ui <- fluidPage( title = "video Example", h1("Video Example"), video( "https://vjs.zencdn.net/v/oceans.mp4", elementId = "video" ), tags$p( "Currently playing:", textOutput("video_playing", container = tags$strong, inline = TRUE) ) ) server <- function(input, output, session) { output$video_playing <- renderText({ if (isTRUE(input$video_playing)) "Yes" else "No" }) observe({ req(input$video_seek) if (round(input$video_seek) == 10) { pauseVideo("video") } else if (round(input$video_seek) == 20) { stopVideo("video") } }) } shinyApp(ui, server)
Whilst the buttons below the video aren't required for playing/pausing the video, they are linked to observeEvent
s that send messages from the server to the video to update.
For those who want more from video.js and isn't currently available within {video}, then the API is very flexible (https://docs.videojs.com/), and any video can be retrieved in JavaScript using const player = videojs("id")
and manipulated from there.
All examples are available in the Examples directory and can be run locally by installing the {video}
package:
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.