没有可用于类型' video / x-h264的解码器

时间:2016-09-21 04:23:40

标签: video qt5 gstreamer h.264 qtmultimedia

我正在尝试运行其中一个qt示例应用程序而不做任何修改。它被称为player,它是一个多媒体小部件演示。我的系统是Ubuntu 16.04 64bit。当我尝试播放视频时,我在控制台中看到以下错误:

No decoder available for type 'video/x-h264

尝试两个不同的视频后,这是完整的错误:

Starting /home/aras/Qt5.7.0_Sept2016/Examples/Qt-5.7/multimediawidgets/build-player-Sept2016-Debug/player...
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)constrained-baseline, codec_data=(buffer)0142e01eff0100192742e01ea9101405ff2e00d418041adb7a00f480f55ef7c04001000428de09c8, width=(int)640, height=(int)360, framerate=(fraction)2997/125, pixel-aspect-ratio=(fraction)1/1'."
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)constrained-baseline, codec_data=(buffer)0142e01eff0100192742e01ea9101405ff2e00d418041adb7a00f480f55ef7c04001000428de09c8, width=(int)640, height=(int)360, framerate=(fraction)2997/125, pixel-aspect-ratio=(fraction)1/1'."
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)601600/10033'."

我几乎安装了与gstreamer远程相关的所有软件包。当我运行gst-inspect-1.0时,我得到了很多输出,最后一行是:

Total count: 241 plugins (1 blacklist entry not shown), 1388 features

~$ gst-inspect-1.0 |grep x-h264
typefindfunctions: video/x-h264: h264, x264, 264

:~$ gst-inspect-1.0 avdec_h264
Factory Details:
  Rank                     primary (256)
  Long-name                libav H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 decoder
  Klass                    Codec/Decoder/Video
  Description              libav h264 decoder

所以我觉得一切都安装得很好。为什么Qt多媒体示例不能开箱即用?

2 个答案:

答案 0 :(得分:1)

在命令行界面中,运行:

ldd /home/aras/Qt5.7.0_Sept2016/Examples/Qt-5.7/multimediawidgets/build-player-Sept2016-Debug/player
ldd echo $(which gst-inspect-1.0)

查找引用GStreamer的行,例如:

  

libgstreamer-1.0.so.0 =>   /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0

如果两个命令结果中引用GStreamer的行不同,则可能有多个GStreamer安装。然后尝试指定一个新的LD_LIBRARY_PATH环境变量(DYLD_LIBRARY_PATH,如果你运行OS-X),它只指向libgstreamer-1.0.so.0所在的目录,这要归功于第二个GStreamer ldd结果(由ldd echo $(which gst-inspect-1.0)提供)。

例如,运行:

export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib"

答案 1 :(得分:0)

我通过在构建系统上安装 GStreamer多媒体框架ffmpeg 插件来解决此问题:

弓箭

public String getValue(String value1) {
  return getMyValue(value1, 0);
}

public String getValue(String value1, int num) {
  return getMyValue(value1, num);
}

public String getMyValue(String val, int num) {
  return val + String.valueOf(num);
}

Debian

public String getValue(String value1) {
  return getValue(value1, 0);
}

public String getValue(String value1, int num) {
  return value1 + String.valueOf(num);
}