问题标签 [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.
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 并且它通过了
ffmpeg - 使用 xuggler 对音频进行转码
我正在尝试使用标题转换音频文件
我想将此文件转码为 mp3 格式。我有以下代码片段,但效果不佳。我使用XUGGLER 代码片段编写了它,用于对音频和视频进行转码。
音频解码器是
音频编码器是
这是编码方法,我发送 32 字节的数据包进行转码
我得到一个输出文件,但它没有被播放。我对音频编码和采样的经验很少。提前致谢。
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 文件。
下载依赖后更新
我有以下目录结构:
xuggle-xuggler-5.4.jar
存储在E:\xuggle xuggler dependencies
存储在E:\xuggle\xuggle-dependencies 问题:
java - Xuggler 生成错误消息
我正在创建我的第一个 Xuggler 媒体应用程序。我通过观看他们关于如何创建第一个媒体应用程序的视频进行编码。
代码
错误
我有依赖吗?
是的,我愿意!我有所有的依赖项。我在创建项目时导入了它们。
图片:
是什么导致了该错误,我该如何解决?
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
更新
我用于捕获视频的代码
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]
tempBufferShort
:short[10000]
可能需要的其他信息:
关于音频格式的 Java 文档
...除了编码之外,音频格式还包括其他属性,这些属性进一步指定了数据的确切排列。这些包括通道数、采样率、样本大小、字节顺序、帧速率和帧大小......
和
对于 16 位样本(或任何其他大于一个字节的样本大小),字节顺序很重要;每个样本中的字节以“小端”或“大端”样式排列。
问题:
BigEndian
as true吗?javax.sound.sampled.AudioFormat
我想我得到了由 AudioFormat 对象预先格式化的 BigEndian 数据。
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
但是,我不明白答案=)。
非常感谢您的回答。
java - 如何从 Java 中获取 Acoustid (Chromaprint) 以识别 mp3/m4a/etc
有没有人设法在 Java 应用程序中使用 acoustid (http://acoustid.org/chromaprint)?访问 chromaprint clib 应该很容易,但我不能只传入音频文件。我需要原始未压缩的音频数据。
我尝试使用 xuggler 来获取未压缩的音频,但没有得到任何结果。基本上我不知道如何从 mp3/m4a/etc 等编码文件中获取原始音频
有没有人设法完成这项工作?有人介意分享他们的代码吗?
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 才能遵循教程。
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 文件位置。