gpt4 book ai didi

c++ - 视频播放器问题

转载 作者:行者123 更新时间:2023-11-30 17:26:58 27 4
gpt4 key购买 nike

鉴于 FFmpeg 是领先的多媒体框架,并且大多数视频/音频播放器都使用它,我想知道使用 FFmpeg 作为中间体的音频/视频播放器的一些情况。

我正在学习,我想知道音频/视频播放器是如何工作的,并且我有一些问题。

我正在阅读 ffplay 源代码,我看到 ffplay 处理字幕流。我尝试使用带有字幕的 mkv 文件,但不起作用。我尝试使用 -sst 等参数,但什么也没发生。 - 我正在阅读有关字幕以及视频文件如何使用它的内容(或者我可以说容器吗?)。我看到有两种放置字幕的方法:硬字幕和软字幕 - 粗略地说,硬字幕模式会被刻录并成为视频的一部分,而软字幕会变成字幕流(我可能是错的 - 请纠正我)。

  • 问题是:他们如何处理这个问题?我的意思是,当字幕是视频的一部分时,无需执行任何操作,视频流本身会显示字幕,但是软字幕呢?它们是如何处理的? (我也听说过一些关于文本字幕的事情)。 - 字幕如何显示在屏幕上,并且可以配置更改字体、大小、颜色,而无需再次对所有内容进行编码?

  • 我正在研究一些视频播放器源代码,其中一些或大部分使用 OpenGL 作为帧的渲染器,其他使用(例如 Qt 的 QWidget)(某种或肯定) Canvas 。 - 什么是最常用的,哪一个最快更好?带有着色器和其他东西的 OpenGL?处理YUV或RGB等?这是如何运作的?

  • 这可能是一个转储问题,但是 AVFrame 返回的格式是什么?例如,当我们想首先将帧保存为图像时,我们需要帧,然后进行转换,我们要从哪种格式转换?它会根据视频编解码器而变化还是始终相同?

  • 我一直在尝试处理的大多数视频都使用 YUV720P,我尝试将帧保存为 png,并且需要先转换为 RGB。我和玩家们做了一个测试,我把它们放在同一帧上,我还截图并进行了比较。视频播放器显示的帧更加丰富多彩。我尝试使用 SDL (OpenGL) 的 ffplay 进行相同的操作,并且帧的颜色(质量)似乎非常低。可能是什么?他们做什么?是着色器(还是一种魔法?哈哈)。

嗯,我想现在就这样了。我希望你能帮助我。

如果这不是正确的位置,请告诉我位置。我还没有在 Stack Exchange 社区中找到其他地方。

最佳答案

一篇文章中有很多问题:

How are 'soft subtitles' handled

与任何其他流的方式相同:

  1. 将数据包从流读取到容器
  2. 将数据包交给解码器
  3. 根据需要使用解码后的帧。大多数支持字幕的容器都会显示演示时间。此时您所需要的就是获取文本并在演示的同时将其刻录到图像上。有很多方法可以使用 ffmpeg 或其他库来打印视频上的文本

What is the most used renderer and which one is fastest and better?

  1. 大多数使用取决于底层系统。例如 Qt 只包装原生渲染器,甚至还有 openGL 版本
  2. 您的速度只能达到底层系统允许的速度。支持双缓冲吗?它可以以您解码的像素格式渲染吗?或者您必须先执行颜色转换吗?这个话题太宽泛
  3. 最好仅取决于用例。这太宽泛了

what is the format that AVFrame returns? It is a raw format (enum AVPixelFormat), and depends on the codec. There is a list of YUV and RGB FOURCCs which cover most formats in ffmpeg. Programmatically you can access the table AVCodec::pix_fmts to obtain the pixel format a specific codec support.

关于c++ - 视频播放器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com