Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ashbaldry/video
Shiny extension of video.js
https://github.com/ashbaldry/video
r shiny video
Last synced: about 2 months ago
JSON representation
Shiny extension of video.js
- Host: GitHub
- URL: https://github.com/ashbaldry/video
- Owner: ashbaldry
- License: other
- Created: 2022-06-25T11:50:52.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-02T19:18:46.000Z (almost 2 years ago)
- Last Synced: 2024-09-01T02:15:19.242Z (3 months ago)
- Topics: r, shiny, video
- Language: JavaScript
- Homepage: https://ashbaldry.github.io/video
- Size: 759 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- jimsghstars - ashbaldry/video - Shiny extension of video.js (JavaScript)
README
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)
[![Codecov test coverage](https://codecov.io/gh/ashbaldry/video/branch/main/graph/badge.svg)](https://app.codecov.io/gh/ashbaldry/video?branch=main)
[![R-CMD-check](https://github.com/ashbaldry/video/workflows/R-CMD-check/badge.svg)](https://github.com/ashbaldry/video/actions)# {video} - Interactive Video Player
`{video}` is a package that utilises the [video.js](https://github.com/videojs/video.js) library to play video on the modern web.
## Installation
This package is not yet available on CRAN. To install the latest version:
```r
install.packages("devtools")
devtools::install_github("ashbaldry/video")
```## Usage
The HTML way to include an audio file in any shiny application/web page is to use the `` tag. This cannot (easily) be manipulated from the server.
```r
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.
```r
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.
### Extending video.js
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.
## Examples
All examples are available in the [Examples](https://github.com/ashbaldry/video/tree/main/inst/examples) directory and can be run locally by installing the `{video}` package:
- [Basic Player](https://github.com/ashbaldry/video/tree/main/inst/examples/basic)
- [Server-Side Controls](https://github.com/ashbaldry/video/tree/main/inst/examples/server)