使用 FFMPEG 生成用于 MPEG-DASH 自适应流媒体的 MPD 文件

CMO*_*MOS 5 php ffmpeg http-live-streaming ffmpeg-php mpeg-dash

所以我正在尝试设置自适应流,我认为已经解决了 80-90% 的问题。现在,我提取源视频,将其转码为 5 种分辨率,每种分辨率具有 3 种比特率(低、中、高),然后将所有这些视频分成 5 秒的块,以便用户始终能够获得最佳观看效果。现在我需要生成/创建我的 MPD 清单文件,但我很难弄清楚如何生成/创建我的 MPD 清单文件。几乎每个人都说要使用 MP4Box,但他们的许可证对于我的项目来说限制太多。

当我分割视频时,是否可以使用 FFMPEG 生成 MPD 文件?或者也许生成一个 HLS,然后我可以将其转换为 MPD 清单?任何信息都会很棒,这是我当前的 FFMPEG 命令(工作)

请注意,$变量是 bash 脚本的输入,用于设置输入文件、比特率和比例。

/usr/bin/ffmpeg \
  -re \
  -i $1 \
  -an \
  -c:v libx264 \
  -b:v $7 \
  -b:a 196k \
  -strict -2 \
  -movflags faststart \
  -pix_fmt yuv420p \
  -vf "scale='$4:trunc(ow/a/2)*2'" \
  -flags -global_header \
  -map 0 \
  -f segment \
  -segment_time 5 \
  -segment_list test.m3u8 \
  -segment_format mpegts \
  $2%05d.mp4
Run Code Online (Sandbox Code Playgroud)

Mur*_* S. 2

ffmpeg \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_360.hdr \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_171.hdr \
  -c copy \
  -map 0 -map 1 \
  -f webm_dash_manifest -live 1 \
    -adaptation_sets "id=0,streams=0 id=1,streams=1" \
    -chunk_start_index 1 \
    -chunk_duration_ms 2000 \
    -time_shift_buffer_depth 7200 \
    -minimum_update_period 7200 \
  /var/www/webm_live/glass_live_manifest.mpd
Run Code Online (Sandbox Code Playgroud)