3

我将 mp4 视频转码为 5FPS、10FPS .. 30FPS 等多种帧率,并使用 MP4Box 将它们分段以在 DASH IF 播放器中播放。

FFMPEG 命令生成具有相同分辨率的多帧率视频:

ffmpeg -i fball.mp4 -f mp4 -vcodec libx264 -profile:v high -vf scale=1280:-1 -b:v 2000k -minrate 2000k -maxrate 2000k -bufsize 2000k -nal-hrd cbr -g 120 -keyint_min 120 -r 60.0 -flags +cgop -sc_threshold 0 -pix_fmt yuv420p -threads 0 -x264opts keyint=120:min-keyint=120:sps-id=1 -an -y fball_720p_60fps.mp4

ffmpeg -i fball.mp4 -f mp4 -vcodec libx264 -profile:v high -vf scale=1280:-1 -b:v 1000k -minrate 1000k -maxrate 1000k -bufsize 1000k -nal-hrd cbr -g 60 -keyint_min 60 -r 30.0 -flags +cgop -sc_threshold 0 -pix_fmt yuv420p -threads 0 -x264opts keyint=60:min-keyint=60:sps-id=1 -an -y fball_720p_30fps.mp4

FFMPEG 命令提取音频:

ffmpeg -i fball.mp4 -acodec aac -b:a 128k -vn -strict -2 -y fball_audio.mp4

用于分段的 MP4Box 命令:

MP4Box -frag 2000 -dash 2000 -rap -base-url ./segments/ -profile main -segment-name /segments/%s_ -out dash/fball_dash.mpd fball_720p_24fps.mp4 fball_720p_30fps.mp4 fball_720p_60fps.mp4 fball_audio.mp4

  1. 分段持续时间:2 秒

  2. GOP 长度:片段持续时间 x 视频的 FPS

  3. 分辨率:所有视频均为 720p

结果是视频解码错误或在切换帧率时停止。

我在转码时犯了任何错误吗?是否可以使用 MPEG DASH 流式传输多帧率视频?

4

2 回答 2

1

添加命令解决-profile:dashavc264:onDemandMP4Box视频解码错误问题。

MP4Box -dash 2000 -rap -profile dashavc264:onDemand -out dash/fball_dash.mpd fball_30fps.mp4 fball_60fps.mp4 fball_15fps.mp4 fball_5fps.mp4 fball_audio.mp4

于 2018-08-09T01:23:18.337 回答
0

在 MPEG-DASH 中,可以使用具有不同帧速率的表示。我认为这不是解码错误的原因。DASH.js 和其他基于 HTML5/JS 的播放器正在利用底层浏览器的MSE进行解码。因此,您的编码段很可能不符合浏览器解码引擎的要求或已损坏。

可以在此处找到如何使用 MP4Box 和 x264 生成 MPEG-DASH 内容的示例。在这种情况下,还有一些在线服务可用,例如BitmovinWowza

于 2016-03-02T08:01:50.483 回答