我正在开发一个视频分析应用程序,我必须解码RTSP流以提供IplImage帧,然后将其输入我的分析管道.现在,OpenCV VideoCapture结构允许我从RTSP流中提取帧(我认为它使用ffmpeg这样做),但性能不是那么好.它需要实时工作.
我也继续编写了自己的ffmpeg解码器.但就像OpenCv一样,使用RTSP流的性能并不好.丢弃了很多帧.但是,从本地文件解码工作正常.我仍然在努力改进代码.
我需要帮助的是这个.首先,我可以在这里使用硬件加速解码来提高性能吗?我的应用程序应该是跨平台的,所以我可能需要使用Directx VA(windows)和VAAPI(linux).如果是的话,那么在那里我可以学习如何在代码中实现硬件加速,特别是对于ffmpeg解码H264?
我正在为Windows Phone 8寻找一个mp4/h264解码器,它允许我访问解码的视频帧数据(在I/P/B帧处理之后).Afaik Windows Phone 8本身不提供访问已解码的h264数据以进行进一步处理的方法.
你能推荐一个优先用C/C++编写的库,是独立于平台的,可以在WP8上编译吗?我们欢迎免费和商业建议.
问候,
我正在寻找从MediaCodec解码器接收图像帧并将其绘制到Android设备屏幕的最快方法.重要的限制和解释是:
无法使用MediaPlayer.不允许使用中间应用.
必须尽快将MediaCodec解码器的输出帧绘制到屏幕上(最小化延迟).
可用的解码器输出格式如下:
ColorFormat [0] 0x00000013 COLOR_FormatYUV420Planar 
ColorFormat [1] 0x00000015 COLOR_FormatYUV420SemiPlanar 
ColorFormat [2] 0x7F000001 OMX_SEC_COLOR_FormatNV12TPhysicalAddress 
ColorFormat [3] 0x7FC00002 OMX_SEC_COLOR_FormatNV12Tiled  
视频分辨率以及每个输出帧的分辨率为960x720.
目标平台是Galaxy Note II,该方法可以特定于该平台(例如,利用可用的硬件功能).这不需要在其他平台上工作或者是通用解决方案.
一种不到66毫秒的方法会很好.不到33毫秒会很棒.我目前的方法需要80-90毫秒,这很糟糕.(我不打算去描述它,因为我不想在任何特定的方向上扭曲答案.)
如果我有一个标记的联合类型,就像Shape这里一样,我将如何在Elm中为它构建一个JSON解码器?
type alias Rectangle = { width : Int, height : Int }
type alias Circle = { radius: Int }
type Shape 
    = ShapeRectangle Rectangle 
    | ShapeCircle Circle
我遇到了一个问题,不幸的是,我没有找到正确的解决方案:我需要解码使用 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场景:
我正在编写一个iOS 应用程序来尝试解码videoFile.mp4. 我使用AVAssetReaderTrackOutput和AVAssetReader来解码视频文件中的帧。这非常有效。videoFile.mp4我基本上使用以下核心逻辑来获取每一帧。
代码:
AVAssetReader * videoFileReader;
AVAssetReaderTrackOutput * assetReaderOutput = [videoFileReader.outputs objectAtIndex:0];
CMSampleBufferRef sampleBuffer = [assetReaderOutput copyNextSampleBuffer];
sampleBuffer这里是每个视频帧的缓冲区。
问题:
sampleBuffer获得每个返回的时间戳copyNextSampleBuffer?PS:请注意,我需要以毫秒
为单位的时间戳。
我目前正在 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";
发现者还给出了
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 …首先,我为我所犯的任何英语错误道歉,但是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;
}
输出为"ë",表示ascii表中的137.好,它匹配第一个字节.
但是,当我这样做时int ascii_value = line[0];,输出值是-119,这不是正确的ascii值.
当我用另一个字符"e"尝试同样的事情时,它会输出正确的ascii值.
有人可以解释我做错了什么,解决方案是什么?我个人认为这是扩展的ascii表的一个问题,但我不确定.
谢谢大家 !我会将我签名的字符转换为未签名的字符!
它是一个古老的二进制文件扩展名,实际上是由 Inter-Tel Web Conference 软件创建的视频文件。它包含屏幕录制视频和语音音频,还可以捕获会议期间的键盘聊天记录、与会者和文档管理器窗口。它可以通过 Inter-Tel Collaboration Player 来播放,这是一个包含在网络会议软件包中的独立应用程序。
我现在想做的是找到一种在移动设备上播放这些文件的方法,尽管 Inter-Tel Collaboration Player 提供以 AVI 格式导出文件,但我想知道如何为此制作一个命令行脚本,因为该应用程序有很多Windows 7、8、10 的问题,没有 Mac OS 版本。
为这种扩展创建新播放器的方法是什么?
由于某些原因,我必须在 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”时收到以下消息。
现在,我如何为exoplayer(在Windows 10操作系统下)嵌入ffmpeg扩展,使其能够解码并解决这些问题?我的编程语言是java。谢谢。
注意:如果您有任何其他(除了将 Ffmpeg 嵌入到 exoplayer 之外)建议来解决我的问题,请告诉我。
decoder ×10
android ×2
c++ ×2
ffmpeg ×2
h.264 ×2
ascii ×1
audio-player ×1
cp1251 ×1
decode ×1
elm ×1
exoplayer ×1
gstreamer ×1
ios ×1
java ×1
javascript ×1
json ×1
libav ×1
mediacodec ×1
mp4 ×1
objective-c ×1
opencv ×1
png ×1
surfaceview ×1
windows-1251 ×1
yuv ×1