Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

One of the primary building blocks used to deliver course content on the edx platform is the Video Module (an XModulexModule).  Course Authors add a video module to a unit in a course and configure it with various metadata such as video URLs, transcript files, and video download settings.  Currently, course authors manually enter URLs of all encodings of their video into the Video Module's Advanced editor.  The various encodings of a video could be a YouTube link, mp4 and webm versions, and various speeds (.75x, 1x, 1.25x, 1.5x).  While they can manually upload transcripts for the videos, the platform also automatically checks for the existence of transcripts at the given YouTube location. 

...

      1. Course PM creates a (shell) course in Studio.
        1. Enables a new "Video Upload Pipeline" Advanced Setting in the course and enters the Institute Name and corresponding Access Token (mutually agreed upon in Configuration step i above).
        2. Adds the Video Producers to the Course Staff role in the new course in Studio.  (LATER: we can create a new "Video Producer" role with limited access to the course.)
        3. Communicate Communicates the Studio URL of the newly created Course to the Course' Video Producers.

      2. Video Producers login and upload their file(s) through Studio into the specific Course.
        PROD NOTE: Having video producers know which video corresponds to which course is a new requirement.  Up until now, they only needed to know the institute for which a video belongs, not the course.  In the future, we should consider using the Content Library feature, which is external to a course.

        1. Studio automatically uploads the Raw Video file(s) to an institute-specific folder in an S3 bucket accessible by Studio and VEDA.
          1. (API:0@B_STUD)The Browser calls the Studio server with the list of filenames that the user wants to upload.

          2. The Studio server
            1. Creates the following metadata information for each of the files:
              1. edx video ID. An ID that uniquely identifies this logical video.
              2. User Supplied File Name.  The user-provided name of the file.
                PROD NOTE: We store the user-provided filename in the metadata instead of using it as the actual name of the uploaded file so (1) we can treat duplicate filenames as completely different videoes and (2) we don't have to worry about unintended name collisions.
              3. Raw Video ID. A unique ID to keep track of the video pipeline status of the file.
                ARCH NOTE: We are introducing a new ID here instead of just using the edx-video-ID because (1) VEDA wants to continue to be the generator of those IDs and owner of its namespace, and (2) Studio and VEDA are independent entities that do not need to communicate directlyInstitute Name and Token.  The previously agreed-upon values as stored in the Studio Advanced Setting.
              4. Course Name.  The 'course' field of the (org, course, run) tuple information for the course that this file was uploaded in.
                ARCH NOTE: Although the Course Name is not really needed by VEDA (it being course-agnostic), it currently uses the Course Name to generate its edx-video-IDs.it for generating its own internal IDs.
            2. The files would be placed in a folder named after the Institute Name and the file's name being the edx video ID.
               
            3. (DBW:1@STUD) Stores the Raw Video IDs the edx-video-ids in the Asset Meta Data Store (newly minted by the Platform team) with category "Raw Videovideo".
            4. (API:1@STUD_S3) Authenticates with S3 and requests upload URLs for each of the Video file(s).

          3. (API:2@STUD_VAL) Calls VAL with the Institute Name and list of Raw Video edx-video-IDs generated for each uploaded file.
            1. (DBW:2@VAL) VAL creates new entries for the Raw Video edx-video-IDs, with VAL status "Uploading".
            2. (API:3@VAL_VEDA) Optionally, VAL notifies VEDA to check the S3 bucket for newly incoming files.

          4. (API:4@B_S3)The Browser uploads the files directly to S3 with the server-supplied one-time-use URLs and corresponding metadata.  Here are examples of how this is done in ORA2:
            1. https://github.com/edx/edx-ora2/blob/master/openassessment/xblock/static/js/src/lms/oa_response.js#L483-483\
            2. https://github.com/edx/edx-ora2/blob/master/openassessment/xblock/submission_mixin.py

        2. VEDA does the following for each new uploaded file found in the S3 bucket:
          Already in Beta: Generates an edx-video-ID as a unique name for the logical video. 
          1. NEW since Beta:(API:5@VEDA_VAL) Notifies VAL with the validity status of the uploaded file, including the file's Raw Video ID edx-video-id (embedded in the meta data of the uploaded file).
            1. (DBW:3@VAL) VAL creates a new updates the entry for the uploaded video, storing the edx-video-ID, Raw Video ID, and video with the status.  VAL status: "File Valid" or "File Invalid"
          2. As before, spawns new processes for creating the various encodings and kicking kicks off transcript translation jobs.
          3. Already in Beta:
            1. (API:6-10@VEDA_VAL) Notifies and updates VAL whenever one of the spawned processes completes.
              1. (DBW:4-8@VAL) VAL creates a new mapping between the video's corresponding edx-video-ID and the S3 URL for each new encoding.  VAL status: "In Progress"
            2. (API:11@VEDA_VAL) Notifies and updates VAL when all processes have completed.
              1. (DBW:9@VAL)  VAL updates the status accordingly.  VAL status: "Complete"

      3. Video Producers can check the status of their previously uploaded files within Studio.
        1. (DBR:1@VAL) Studio retrieves the list of Raw Video IDs edx-video-ids associated with the course from the Asset Meta Data Store.
        2. (API:12@STUD_VAL), (DBR:2@VAL) It queries VAL for the status of each Raw Video ID edx-video-id in the course.
        3. It displays a table with metadata for each uploaded video, including its status, edx-video-ID, user-provided upload file name, date uploaded, and video time duration.

      4. Course Teams can also use the above table to see the list of uploaded videos.  They copy and paste the edX-video-ID from that table into the corresponding Video Module.

...

For example, an edx-Video-ID of "MIT6002XT214-V004100vid-v1:MIT-j3ui8jsdf0" could refer to the following files for its various encodings:

VEDA's Video ID

Currently, the edX Video ID is generated by VEDA, which wants to continue to own its namespaceVEDA generates its own ID for keeping track of videos.  For now, VEDA requires a hard-coded structure of the edx-Video-its ID.


VAL (Video Abstraction Layer)

...

  • Uploading multiple video files to S3, including API:1@STUD_S3 and API:4@B_S3.
  • Database queries by VAL to retrieve data for a given set of Raw Video IDsedx-video-ids: DBR:2@VALAPI:12@STUD_VAL should support pagination.
  • Querying the modulestore for a list of video modules with edx-video-ids in a given course.

...