首页 > 解决方案 > 带有缩略图块的 FFMPEG Dash

问题描述

从 DASH-IF IOP 4.2 版开始,第 6.2.6 节定义了 DASH 中基于图像的轨道的概念: https ://dashif.org/docs/DASH-IF-IOP-v4.3.pdf 。

这是一种由 mime 类型图像组成的适应集的能力,这些图像本身就是一条低分辨率的缩略图。当用户将鼠标悬停在视频时间线上时,播放器将使用这些缩略图,并在该近似时间码处获得帧的预览。

Theo播放器网站有一个专门用于播放此功能的页面: https ://www.theoplayer.com/blog/in-stream-thumbnail-support-dvr-dash-streams

我需要使用 ffmpeg 生成一个破折号流(非实时),其中还包含这些缩略图。我已经有一个 ffmpeg 命令,它将生成 jpgs 的电影片段,它每 5 秒输入一个视频输出一个缩略图,并将其中的 5 个连接到一个 jpg 中:

ffmpeg -i INPUT -q:v 20 -vf "select=not(mod(n\,125)),scale=480:270,tile=5x1" -vsync vfr output%d.jpg

和 mpeg 破折号本身:

ffmpeg -i INPUT -y -map 0 -acodec aac -ac 2 -ar 48000 -s 960x540 -vcodec libx264 -f dash -preset veryfast -b:v:2 1500k -seg_duration 2 output.mpd

但是我在 ffmpeg 中找不到将缩略图包含在 dash mpd 文件中的方法。

标签: ffmpegmpeg-dashmpd

解决方案


我已经使用这种精确的方法来生成平铺缩略图,但我必须手动将适配集注入到 output.mpd 中。BaseURL 指向存储平铺图像的静态图像服务器,视频/音频/字幕由流服务器提供。您需要确保 Adaptation set id 不会与清单中的任何其他值发生冲突。

这是我添加到 DASH 期间的适配集示例。

<AdaptationSet contentType="image" id="5" mimeType="image/jpeg">
  <BaseURL>
    http://origin.yourdomain.com/storage/thumbs/video_id/
  </BaseURL>
  <SegmentTemplate duration="120" media="$RepresentationID$/number/tile$Number%03d$.jpg" startNumber="1"/>
  <Representation bandwidth="12895" height="432" id="thumbnails_256x144" width="1024">
    <EssentialProperty schemeIdUri="http://dashif.org/guidelines/thumbnail_tile" value="4x3"/>
  </Representation>
</AdaptationSet>

推荐阅读