问题标签 [xuggler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
676 浏览

java - Xuggler 读取某些 FLV 文件

我正在尝试使用 Xuggler 库在 Java 中对 FLV 文件进行转码,该库有两个流:
流 0:视频、H264 avc1
流 1:音频、AAC、mp4a

现在,getNumStreams()对输入容器的调用返回 2 个正确的流。
出现我的问题是因为两个流都有类型CODEC_TYPE_UNKNOWN而不是CODEC_TYPE_VIDEO/AUDIO。

因此我的代码在这里:
stream.getStreamCoder().getCodecType().equals(ICodec.Type.CODEC_TYPE_AUDIO)
从不真正匹配特定的流。

我试图手动为流 2 分配一个流,但是当我从 中查询编解码器时IStreamCoder,它为空。CodecID相同的IStreamCoder是正确CODEC_ID_AAC的,编解码器类型CODEC_TYPE_UNKNOWN正如我上面提到的。

现在我的问题是,为什么这些流被标记为未知而不是正确的音频/视频?这段代码完美地适用于大多数其他格式,例如 mp4 容器。我的总体目标是提取音频流进行转码。

请告知您是否需要一个示例代码段来更好地回答这个问题,因为我必须剪掉很多我必须制作的东西。


编辑:我认为这不是 Xuggler 问题,因为我尝试使用 VLC 转换有问题的 FLV,并且 VLC 在转换时崩溃,而我尝试将一个已知的工作 mp4 文件转换为 mp3 并且它通过了

0 投票
1 回答
2045 浏览

ffmpeg - 使用 xuggler 对音频进行转码

我正在尝试使用标题转换音频文件

我想将此文件转码为 mp3 格式。我有以下代码片段,但效果不佳。我使用XUGGLER 代码片段编写了它,用于对音频和视频进行转码

音频解码器是

音频编码器是

这是编码方法,我发送 32 字节的数据包进行转码

我得到一个输出文件,但它没有被播放。我对音频编码和采样的经验很少。提前致谢。

0 投票
2 回答
6760 浏览

eclipse - 设置 Xuggler 的初学者指南

要与 Xuggler 合作,您需要xuggle-xuggler-5.4.jar. 据制作这个的人说,大多数用户只需要上面提到的 JAR 文件。然而,这就是他们所说的在没有Maven 或 Ivy 的情况下使用 Xuggler:

在没有 Apache Maven 或 Apache Ivy 的情况下使用 Xuggler

你是什​​么……困在 2003 年?无论如何,如果你坚持这一点,Xuggler 的预编译二进制文件(包括本机版本)可以在这里找到。确保 xuggle-xuggler.jar 及其依赖项包含在您的 Java 类路径中。查看与 Xuggler 版本一起分发的xuggle-xugger-*.pom文件,您可以使用它来查找(小)依赖 jar 集,并下载它们。

我下载了xuggle-xuggler.jar最新版本 5.4 的文件,但我不理解它的 pom 文件。

  • 他在谈论什么依赖关系?
  • 接下来,如何下载这些依赖项
  • 获得这些依赖项后,如何开始在 Eclipse 中工作?



  • 下载依赖后更新

    我有以下目录结构:
    在此处输入图像描述

  • xuggle-xuggler-5.4.jar存储在E:\xuggle
  • 在此处输入图像描述
  • 各种xuggler dependencies存储在E:\xuggle\xuggle-dependencies
  • 问题:

  • 如何开始在 Eclipse 中使用 Xuggler?我必须设置哪些路径以及这些路径具有哪些值?
  • 0 投票
    2 回答
    668 浏览

    java - Xuggler 生成错误消息

    我正在创建我的第一个 Xuggler 媒体应用程序。我通过观看他们关于如何创建第一个媒体应用程序的视频进行编码。

    代码

    错误

    我有依赖吗?

    是的,我愿意!我有所有的依赖项。我在创建项目时导入了它们。
    图片:
    在此处输入图像描述

    是什么导致了该错误,我该如何解决?

    0 投票
    1 回答
    3072 浏览

    java - TargetDataLine 和 Xuggler 用屏幕视频录制音频

    TargetDataLine到目前为止,对我来说,这是在 Java 中捕获麦克风输入的最简单方法。我想用屏幕视频[在屏幕录像机软件中]对我捕获的音频进行编码,以便用户可以创建教程、幻灯片等。
    Xuggler用来编码视频。
    他们确实有一个关于用视频编码音频的教程,但他们从文件中获取音频。就我而言,音频是实时的。



    对我使用的视频进行编码com.xuggle.mediaTool.IMediaWriter。IMediaWriter 对象允许我添加一个视频流,并且
    encodeAudio(int streamIndex, short[] samples, long timeStamp, TimeUnit timeUnit)
    如果我可以从目标数据行获取样本作为short[]. 它返回byte[]
    所以两个问题是:

    如何使用视频对实时音频进行编码?

    如何保持音频数据包的正确时序,以便在正确的时间对其进行编码?

    参考
    1. TargetDataLine 的DavaDoc:http: //docs.oracle.com/javase/1.4.2/docs/api/javax/sound/sampled/TargetDataLine.html
    2. Xuggler 文档:http://build.xuggle。 com/view/Stable/job/xuggler_jdk5_stable/javadoc/java/api/index.html



    更新

    我用于捕获视频的代码

    0 投票
    3 回答
    777 浏览

    java - Xuggler 中的 BigEndian、LittleEndian 混淆

    以前我提出了一个关于将 a 转换为byte[]的问题,我遇到的一个新问题是将数据从BigEndianshort[]转换/不转换。 这是发生了什么:byte[]

  • 我正在使用TargetDataLine将数据读入byte[10000].
  • AudioFormat对象已任意BigEndian设置为true
  • byte[]需要转换为,short[]以便可以使用 Xuggler 对其进行编码
  • 我不知道AudioFormat应该将 BigEndian 设置为 true 还是 false。
    我已经尝试了这两种情况,并且在这两种情况下都得到了异常。
    要转换byte[]short[],我这样做:

    其中:
    fromMic是 我得到 TargetDataLine
    tempBufferbyte异常byte[10000]
    tempBufferShortshort[10000]


    可能需要的其他信息:

  • 我如何设置流以在 Xuggler 中添加音频:
  • 我如何执行编码
  • 关于音频格式的 Java 文档

    ...除了编码之外,音频格式还包括其他属性,这些属性进一步指定了数据的确切排列。这些包括通道数、采样率、样本大小、字节顺序、帧速率和帧大小......

    对于 16 位样本(或任何其他大于一个字节的样本大小),字节顺序很重要;每个样本中的字节以“小端”或“大端”样式排列。

    问题:

  • 我需要在对象中保持BigEndianas true吗?javax.sound.sampled.AudioFormat

  • 是什么导致了错误?是格式吗?



  • 我想我得到了由 AudioFormat 对象预先格式化的 BigEndian 数据。

    0 投票
    1 回答
    1449 浏览

    java - 无法将音频文件编码为 Vorbis

    我试图使用 Xuggler 将音频格式转换为 ogg ( vorbis ) 文件。

    首先,我已经尝试了非常基本的方法,

    目标文件以 .ogg 结尾。这实际上有效,但是它编码为 ogg FLAC 而不是 ogg vorbis。

    然后我尝试手动完成它的一些部分,

    首先 - 获取原始采样率和通道号,其次 - 添加音频流,使用这些采样率、通道号和 vorbis 的编解码器 ID。

    /* 这些是用于获取采样率和通道,我认为它们不相关,但我*/复制它只是为了以防万一

    当我尝试运行它时,它给了我一个错误“错误 org.ffmpeg - [libvorbis @ 0436F300] 不支持指定的 sample_fmt。” “警告 com.xuggle.xuggler - 错误:无法打开编解码器 (../../../../../../../csrc/com/xuggle/xuggler/StreamCoder.cpp:831) "

    旁注 = 它适用于 mp3、wav 和 flac ogg 文件。另外,我尝试将扩展名更改为 .vorbis 而不是 .ogg。还是同样的错误。

    然后当然,我用谷歌搜索了它。关于这个问题只有 1 个相关的 q/a https://groups.google.com/forum/?fromgroups=#!topic/xuggler-users/18hsI_LGxI4

    但是,我不明白答案=)。

    非常感谢您的回答。

    0 投票
    1 回答
    2307 浏览

    java - 如何从 Java 中获取 Acoustid (Chromaprint) 以识别 mp3/m4a/etc

    有没有人设法在 Java 应用程序中使用 acoustid (http://acoustid.org/chromaprint)?访问 chromaprint clib 应该很容易,但我不能只传入音频文件。我需要原始未压缩的音频数据。

    我尝试使用 xuggler 来获取未压缩的音频,但没有得到任何结果。基本上我不知道如何从 mp3/m4a/etc 等编码文件中获取原始音频

    有没有人设法完成这项工作?有人介意分享他们的代码吗?

    0 投票
    1 回答
    10254 浏览

    java - 如何下载和安装 xuggler?

    我对如何下载 xuggler 有点困惑,我进入以下链接下载它:

    http://xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler/5.4/

    我下载了 xuggle-xuggler-5.4.jar,现在对从这里去哪里有点困惑。

    我下载 xuggler 的目的是为了可以按照本教程进行操作: http ://www.youtube.com/watch?v=wdW6tUql154

    并需要以下文件 xuggle/share/java/jar 才能遵循教程。

    0 投票
    1 回答
    375 浏览

    java - Xuggler NoClassDefFoundError

    我正在尝试使用以下教程制作一个简单的媒体播放器: http ://www.youtube.com/watch?v=9aJvPPzhyik

    首先,我将解释我到目前为止所做的事情,我在没有使用 Apache Maven 或 Apache Ivy 的情况下下载了 xuggler,我进入了 5.1 版并且只下载了 xuggle-xuggler-5.4.jar,我将它导入到eclipse 并且它起作用了,因为我开始编写我的代码并且所有媒体类都没有错误。

    我需要一个 flv 文件,所以我只是将任何随机 youtube 链接放入该网站http://keepvid.com/?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DvNoKguSdy4Y并获得了我的 flv 视频下载到我的桌​​面,现在这是我认为问题所在,在教程中显示他必须将此flv视频放入 Xuggle/Workspace/MediaToolsIntro1 但由于我刚刚下载了一个 jar 文件,所以我没有 xuggle 文件夹,只有我的桌面上有一个 jar 文件,所以我把它放到了 Users/Me/Workspace/Myjavaproject 中。我运行代码并收到以下错误:

    线程“主”java.lang.NoClassDefFoundError 中的异常:org/slf4j/LoggerFactory

    我做错了什么,当指南视频中的程序员这样做时,他会在他的 flv 旁边创建一个 QT 文件,但我得到一个错误,我和他之间的唯一区别是 flv 文件位置。