带有缩略图块的 FFMPEG Dash

Posted

技术标签:

【中文标题】带有缩略图块的 FFMPEG Dash【英文标题】:FFMPEG Dash with tiles of thumbnail images 【发布时间】:2020-02-27 08:43:58 【问题描述】:

从 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 命令,它将生成 jpg 的电影片段,每 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 文件中的方法。

【问题讨论】:

【参考方案1】:

我已经使用这种精确的方法来生成平铺缩略图,但我必须手动将适配集注入到 output.mpd 中。 BaseURL 指向存储平铺图像的静态图像服务器,视频/音频/字幕由流服务器提供。您需要确保 Adaptation 集 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 band  id="thumbnails_256x144" >
    <EssentialProperty schemeIdUri="http://dashif.org/guidelines/thumbnail_tile" value="4x3"/>
  </Representation>
</AdaptationSet>

【讨论】:

以上是关于带有缩略图块的 FFMPEG Dash的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 在 GPU 上生成缩略图

时间戳未打印在 FFMPEG 的缩略图上

如何使用带有缩略图滑块的光滑滑块创建自定义滑块?

如何在 ffmpeg 中居中裁剪视频缩略图(方形缩略图)?

利用FFmpeg生成视频缩略图

ffmpeg 生成缩略图的替代方法是啥