sul-dlss / media

placeholder (currently) for media team work
1 stars 0 forks source link

Determine recommended specs for video and audio deposits #159

Open andrewjbtw opened 12 months ago

andrewjbtw commented 12 months ago

Wowza supports a range of codecs and formats but experience has shown that some work better than others in our media player. This ticket is for working out a general recommendation to give to depositors who are considering depositing their own video.

Currently, we route almost all video and audio through the Media Preservation Lab for transcoding, even video that that is nominally in a compatible format because depositors present a range of qualities and formats/codecs. There's a limit to how much we can influence input formats but it would be great to be able to present a set of recommended specs nevertheless.

andrewjbtw commented 12 months ago

This might be Wowza's full list of supported formats: https://www.wowza.com/docs/wowza-video-technical-specifications

michaelangeletti commented 12 months ago

Thanks, @andrewjbtw ! Here are what I think are the most relevant pieces of documentation regarding the creation of video for Wowza streaming:

https://www.wowza.com/docs/how-to-encode-source-video-for-wowza-video

https://www.wowza.com/docs/how-to-encode-vod-using-ffmpeg-with-wowza-streaming-engine

If I had to provide a spec for people who don't like video specs (or reading... or explanations), I would just say, "H264 video in an mp4 container with the smallest acceptable width/height and bitrate". In their documentation, the matrix under "Recommended encoding presets" provide frame sizes and bitrates. Curiously, they only have 16:9 pixel sizes, as if nobody cares about 4:3 video. Trying to communicate this stuff to depositors can be challenging and annoying for people who don't want to or can't transcode their content, which is why we have been running derivative creation through the lab.

mjgiarlo commented 11 months ago

The goal of this issue is to answer the following questions:

It's already the case that the Wowza docs say stuff works that we find do not work in practice (e.g., mp3 files).

michaelangeletti commented 10 months ago

If there are formats that would work other than what's documented by Wowza, would we need to discover that through testing ourselves? The most common streaming video formats today include mp4 (the most common and widely-adopted by far), WebM, QuickTime video (mov), Adobe Flash, LL-HLS, and MPEG-DASH. Current Wowza documentation says that for video on-demand streaming (I presume that's what we're doing with our Wowza server), they support: mp4 video, SMIL, and FLV. Weird that they mention support SMIL and FLV still... not sure why/where those formats are relevant in 2023. If QuickTime video (mov) works to stream, it might be because the internal structure of mp4 is based on the earlier QuickTime file format (MPEG-4 Part 12 (ISO/IEC 14496-12:2004).

The bitrates we use for creating video derivatives at SMPL are typically: 1000-1200 kbps for 4:3 SD video streams -- usually output to 640x480 pixel aspect (from 720x486 sources or similar), and 2500-2900 kbps for 16:9 HD video streams -- always output to 1280x720 pixel aspect. We never create 1920x1080 or higher resolutions (i.e., UHD or 4K) for streaming derivatives because it's uncalled for.

For audio, I think it's m4a (mp4 audio), AAC LC codec, 320 kbps, 48 kHz.

andrewjbtw commented 10 months ago

Thanks, @michaelangeletti. I thought differences between Wowza documentation and our viewer might be in the other direction: specs that Wowza says are supported but aren't for us. For example, Wowza says "H.264 encoding presets can be contained in any of a number of formats (.MOV, .MP4, .F4V, etc.)" but I'm not sure those other formats would actually play back in our viewer. I think we would need to determine that on our own.

I moved this ticket out of "ready" because the current workcycle is ending and we're also planning to upgrade Wowza. It seems like for testing (post-upgrade) we could accession files encoded to non-MP4 if we really want to know.