标签: decoder

硬件使用ffmpeg,OpenCV加速h264解码

我正在开发一个视频分析应用程序,我必须解码RTSP流以提供IplImage帧,然后将其输入我的分析管道.现在,OpenCV VideoCapture结构允许我从RTSP流中提取帧(我认为它使用ffmpeg这样做),但性能不是那么好.它需要实时工作.

我也继续编写了自己的ffmpeg解码器.但就像OpenCv一样,使用RTSP流的性能并不好.丢弃了很多帧.但是,从本地文件解码工作正常.我仍然在努力改进代码.

我需要帮助的是这个.首先,我可以在这里使用硬件加速解码来提高性能吗?我的应用程序应该是跨平台的,所以我可能需要使用Directx VA(windows)和VAAPI(linux).如果是的话,那么在那里我可以学习如何在代码中实现硬件加速,特别是对于ffmpeg解码H264?

opencv ffmpeg decoder h.264 hardware-acceleration

6
推荐指数
1
解决办法
3309
查看次数

适用于Windows Phone 8的MP4/h264解码库

我正在为Windows Phone 8寻找一个mp4/h264解码器,它允许我访问解码的视频帧数据(在I/P/B帧处理之后).Afaik Windows Phone 8本身不提供访问已解码的h264数据以进行进一步处理的方法.

你能推荐一个优先用C/C++编写的库,是独立于平台的,可以在WP8上编译吗?我们欢迎免费和商业建议.

问候,

c++ mp4 decoder h.264 windows-phone-8

6
推荐指数
1
解决办法
1153
查看次数

将MediaCodec解码视频帧绘制到屏幕的最快方法?

我正在寻找从MediaCodec解码器接收图像帧并将其绘制到Android设备屏幕的最快方法.重要的限制和解释是:

  1. 无法使用MediaPlayer.不允许使用中间应用.

  2. 必须尽快将MediaCodec解码器的输出帧绘制到屏幕上(最小化延迟).

  3. 可用的解码器输出格式如下:
    ColorFormat [0] 0x00000013 COLOR_FormatYUV420Planar
    ColorFormat [1] 0x00000015 COLOR_FormatYUV420SemiPlanar
    ColorFormat [2] 0x7F000001 OMX_SEC_COLOR_FormatNV12TPhysicalAddress
    ColorFormat [3] 0x7FC00002 OMX_SEC_COLOR_FormatNV12Tiled

  4. 视频分辨率以及每个输出帧的分辨率为960x720.

  5. 目标平台是Galaxy Note II,该方法可以特定于该平台(例如,利用可用的硬件功能).这不需要在其他平台上工作或者是通用解决方案.

一种不到66毫秒的方法会很好.不到33毫秒会很棒.我目前的方法需要80-90毫秒,这很糟糕.(我不打算去描述它,因为我不想在任何特定的方向上扭曲答案.)

android yuv decoder surfaceview mediacodec

6
推荐指数
1
解决办法
4525
查看次数

如何解码Elm中标记的联合类型?

如果我有一个标记的联合类型,就像Shape这里一样,我将如何在Elm中为它构建一个JSON解码器?

type alias Rectangle = { width : Int, height : Int }

type alias Circle = { radius: Int }

type Shape 
    = ShapeRectangle Rectangle 
    | ShapeCircle Circle
Run Code Online (Sandbox Code Playgroud)

json decoder elm

6
推荐指数
1
解决办法
2030
查看次数

使用 JavaScript 解码 url 编码的 windows-1251 (cp1251) 字符串

我遇到了一个问题,不幸的是,我没有找到正确的解决方案:我需要解码使用 windows-1251 (cp1251) 编码的 url-slice。

\n\n

我知道有这些方法-decodeURI()decodeURIComponent(),但它们仅适用于UTF-8(据我所知)。我发现的解决方案使用已弃用的方法 escape() 和 unescape()。

\n\n

例如有一个序列:

\n\n

%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5 (\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb3\ xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5)

\n\n

方法decodeURI() 和decodeURIComponent() 将导致异常。

\n\n

将不胜感激的帮助。

\n

javascript decode decoder cp1251 windows-1251

6
推荐指数
1
解决办法
6559
查看次数

如何在解码 video.mp4 时获取 iOS 中每个视频帧的时间戳

场景:
我正在编写一个iOS 应用程序来尝试解码videoFile.mp4. 我使用AVAssetReaderTrackOutputAVAssetReader来解码视频文件中的帧。这非常有效。videoFile.mp4我基本上使用以下核心逻辑来获取每一帧。

代码:

AVAssetReader * videoFileReader;
AVAssetReaderTrackOutput * assetReaderOutput = [videoFileReader.outputs objectAtIndex:0];
CMSampleBufferRef sampleBuffer = [assetReaderOutput copyNextSampleBuffer];
Run Code Online (Sandbox Code Playgroud)

sampleBuffer这里是每个视频帧的缓冲区。

问题:

  • 如何在这里获取每个视频帧的时间戳?
  • 换句话说,更详细的是,我如何sampleBuffer获得每个返回的时间戳copyNextSampleBuffer

PS:请注意,我需要以毫秒
为单位的时间戳。

objective-c decoder ios avassetreader cmsamplebufferref

6
推荐指数
1
解决办法
2037
查看次数

Gstreamer 缺少解码器元/x-gst-fourcc-mebx

我目前正在 Linux 环境中使用 GStreamer,从 GStreamer 1.18 升级到 1.22 后遇到了问题。在尝试处理视频文件时,我收到以下错误消息:

[hevc @ 0x7f26101eba00] Skipping NAL unit 62 
[hevc @ 0x7f26100fcd40] Skipping NAL unit 62 
[hevc @ 0x7f2610113e00] Skipping NAL unit 62 
missing-plugin, type=(string)decoder, detail=(GstCaps)meta/x-gst-fourcc-mebx, name=(string)"meta/x-gst-fourcc-mebx\ decoder";

Run Code Online (Sandbox Code Playgroud)

发现者还给出了 Missing plugins (gstreamer|1.0|gst-discoverer-1.0|meta/x-gst-fourcc-mebx decoder|decoder-meta/x-gst-fourcc-mebx)

源视频是 I420_10LE 格式的 .MOV 视频(由 iPhone 制作)且未损坏。还有数据(流):

 Stream #0:0(und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/arib-std-b67), 1920x1080, 8455 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 600 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2022-02-12T07:53:40.000000Z
      handler_name    : Core …
Run Code Online (Sandbox Code Playgroud)

ffmpeg decoder gstreamer libav

6
推荐指数
0
解决办法
2012
查看次数

C++ - 不正确的ASCII值("ë")

首先,我为我所犯的任何英语错误道歉,但是15岁和法语没有帮助......

我正在尝试使用文件格式规范(http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html)编写PNG解码器,但我遇到了一个奇怪的问题.

规范说PNG文件的前八个字节总是包含以下(十进制)值:137 80 78 71 13 10 26 10.

当我测试这个简单的程序时:

int main() 
{
    ifstream file("test.png");

    string line;
    getline(file, line);

    cout << line[0] << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出为"ë",表示ascii表中的137.好,它匹配第一个字节.

但是,当我这样做时int ascii_value = line[0];,输出值是-119,这不是正确的ascii值.

当我用另一个字符"e"尝试同样的事情时,它会输出正确的ascii值.

有人可以解释我做错了什么,解决方案是什么?我个人认为这是扩展的ascii表的一个问题,但我不确定.

谢谢大家 !我会将我签名的字符转换为未签名的字符!

c++ png ascii decoder

5
推荐指数
2
解决办法
1499
查看次数

创建适用于移动设备的二进制文件扩展名读取器

它是一个古老的二进制文件扩展名,实际上是由 Inter-Tel Web Conference 软件创建的视频文件。它包含屏幕录制视频和语音音频,还可以捕获会议期间的键盘聊天记录、与会者和文档管理器窗口。它可以通过 Inter-Tel Collaboration Player 来播放,这是一个包含在网络会议软件包中的独立应用程序。

我现在想做的是找到一种在移动设备上播放这些文件的方法,尽管 Inter-Tel Collaboration Player 提供以 AVI 格式导出文件,但我想知道如何为此制作一个命令行脚本,因为该应用程序有很多Windows 7、8、10 的问题,没有 Mac OS 版本。

为这种扩展创建新播放器的方法是什么?

video-processing decoder audio-player

5
推荐指数
1
解决办法
1718
查看次数

Windows下如何将Ffmpeg扩展嵌入到Exoplayer中?

由于某些原因,我必须在 Windows 10 操作系统下使用 Android-Studio 作为 IDE 工作。我的问题是,exoplayer 使用 Android-TV 设备的软件和硬件解码器来解码视频流。显然,大多数 Android-TV 设备没有内置解码器来解码 mpeg-2 声音,因此 mpeg-2 流的声音是静音的,但 mpeg-2 视频播放良好。为了解决这样的问题,我相信我必须将 Ffmpeg 扩展嵌入到 exoplayer 中。为此,我按照建议在 Windows PowerShell 下遵循此处的说明,但存在一些问题。

第一:使用 PowerShell 时,Windows 的 HOST_PLATFORM 变量的值应该是多少?第二:由于未知原因,我在执行 Shell 脚本“build_ffmpeg.sh”时收到以下消息。

执行 shell 脚本时收到的信息

现在,我如何为exoplayer(在Windows 10操作系统下)嵌入ffmpeg扩展,使其能够解码并解决这些问题?我的编程语言是java。谢谢。

注意:如果您有任何其他(除了将 Ffmpeg 嵌入到 exoplayer 之外)建议来解决我的问题,请告诉我。

java android decoder exoplayer encoder-decoder

5
推荐指数
1
解决办法
894
查看次数