ffmpeg - 带有缩略图块的 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 文件中的方法。
解决方案
我已经使用这种精确的方法来生成平铺缩略图,但我必须手动将适配集注入到 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>
推荐阅读
- r - 如何将计数函数应用于R中列表中的每个元素?
- javascript - 移动设备上的画布 javascript 事件
- python - 如何在 igraph python 中绘制边缘权重
- r - R data.table:有条件地在特定日期数内更改变量的值
- apache-spark - Spark parquet 模式演变
- ruby-on-rails - 如何消除使用关联的 rails n+1 查询
- c# - 读取 WAV 文件时,MS SpeechRecognitionEngine 并不总是返回
- javascript - 需要为 React JS 制作的简单计算器添加一个简单的功能
- video - 是否可以更改 Google Meet 配置,例如让用户无法禁用麦克风/视频?
- regex - Excel VBA RegEx 替换函数替换文字 $1