问题标签 [vorbis]
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.
html - Audio Ogg Vorbis android 默认浏览器
我想知道 Android 设备中音频编解码器的支持是什么。
在这里我发现 2.3 和 4.0 只支持 mp3 编解码器:
http://html5test.com/compare/browser/android23/android40/android22.html
虽然我在 Galaxy S 上测试了 android 2.3,但我发现它也可以播放 ogg vorbis 格式。
4.x 手机也是如此。
这是我做的测试http://twigit.pl/trash/test_mac.html
我在哪里可以找到有关音频编解码器移动支持的可靠资源?
非常感谢您提前。
ios - 是否有任何库可以在 iPhone 中使用 AVCaptureSession 获取 vorbis 格式的音频数据?
我已经捕获了视频帧并使用以下代码将它们转换为 VP8 数据: https ://github.com/chris838/vp8-ios.git
我想根据我可用的 VP8 数据捕获 vorbis 音频数据,以便将 VP8 数据和 vorbis 数据合并到 WebM 文件中。是否有任何可用的 iOS 库来获取 Vorbis 数据?
提前致谢
audio - 在 ffmpeg 构建中启用“vorbis_parser.h”
ffmpeg 构建配置是这样的,我已经禁用了所有内容,并有选择地为我需要的格式启用了解码器、编码器和解复用器。我想使用vorbis_parser.h来解析额外数据,我尝试使用--enable-parser=vorbis但这不起作用。在libavcodec的包含文件夹中,没有显示名为vorbis_parser.h的文件。我应该设置什么选项才能使用vorbis_parser.h
android - 在 Android 上流式传输 Ogg Vorbis 的最佳方式
似乎有几种方法可以在 Android 上播放 Ogg Vorbis 音频流,但到目前为止,我都遇到了各种问题。网上似乎没有太多关于“正确”方法的信息。
首先我的要求:从 Ogg 文件流式传输音乐,存储在我的 res/raw 目录中。我有两个文件,intro.ogg 和 loop.ogg。前奏应该首先播放,然后是循环,然后只要音乐继续播放,就应该重复。流之间应该绝对没有差距,我想支持旧版本的 Android - 至少和 4.0 一样旧,或者如果可能的话 2.x。
我找到了三种方法来做到这一点:
1) 媒体播放器。最常推荐的方式。问题:要对两个流进行排队,我必须使用 setNextMediaPlayer(),它只在 API 级别 16 中引入。此外,流之间存在一个小但明显的差距(至少在我的 N4 运行 4.3 上)。当尝试用自定义完成侦听器替换 setNextMediaPlayer() 时,我似乎也无法获得无缝播放。
2) AudioTrack、MediaExtractor 和 MediaCodec。似乎几乎是 MediaPlayer 在内部所做的。问题:仅从 API 级别 16 开始可用。此外,目前我在流之间存在小的差距。由于下面的#3 可以无缝地工作,我想我应该能够摆脱它(这里的文档似乎很薄)。
3) AudioTrack 和自定义 Ogg 解码。jogg/jorbis JAR 可以很好地用于此目的。播放和排队是无缝的。问题:速度很慢。在我的旧 N1 上,它会导致足够的减速以轻微影响帧速率和强烈的输入响应。
我想#1和#2利用设备可能具有的任何硬件解码支持,而#3显然纯粹在软件中运行。在我的 N1 上播放 Ogg 流时,MediaPlayer 似乎不会导致性能问题,但由于 API 级别较低,我无法排队。
有没有办法解决这个问题?或者我是否坚持跳过介绍提示并尝试在旧设备的循环提示上进行粗略淡入?
(另外,如果有人可以确认我应该能够使用 MediaExtractor 和 MediaCodec 实现真正的无缝播放,或者指出一个好的方法,那将很有帮助)
c - 未找到 vorbis 和 vorbisenc 库
我需要检索 vorbis 和 vorbisenc 库来编译 C 程序。我尝试在http://xiph.org/downloads/中下载 vorbis 库源,但每次编译此库时都会出现问题。你知道我在哪里可以下载这些库(.h 和 .so)吗?
我在 MacOSX 上工作。谢谢
编辑:最后,我通过下载旧版本成功安装了库。但是现在,我在用这个库编译我的程序时遇到了另一个问题:
c++ - FFmpeg 库:webm (vorbis) 音频到 aac 的转换
我编写了一个小程序,使用 FFmpeg 库 - C++(在 Windows 上使用 32 位 Zeranoe FFmpeg 构建)将 webm(vorbis)音频转换为 aac 格式。编写此程序后,我发现它有时会按预期转换文件,有时会导致文件持续时间更长,并且音频播放也会中断/尴尬。
此代码似乎适用于 mp3,它也使用 FLTP 格式(与 vorbis 相同),因此在技术上两者看起来相似。
请参阅下面我正在使用的示例代码:
“test_a.webm”输入文件会导致更长的持续时间(40 秒输出),如果我将其更改为“jet.webm”,它会被很好地转换。
两个输入文件的持续时间约为 18 秒。
作为参考,可以从以下链接下载这些文件:
http://www.filedropper.com/testa , http://www.filedropper.com/jet
或者,它们也被压缩并上传到其他地方:
http://www.files.com/shared/52c3eefe990ea/test_audio_files.zip
有人可以指导我在这里做错了吗?
提前致谢...
ps 这些文件取自/提取自不同的在线资源/演示。
编辑 2-1-14:调试后,我可以看到 audio_pts 变量被错误地填充。它依赖于 audio_st->pts.val,它是在调用 av_interleaved_write_frame() 函数时自动计算的。我无法进入 av_interleaved_write_frame() 函数,因为我在 Windows 上,使用 libav dlls/libs。
所以,
对于 jet.webm 文件(其转换很好),audio_st->pts.val 一直到最大值:1665567,audio_pts 变为:
1665567*1/90000 = 18.5063
对于 test_a.webm 文件(其转换不好),audio_st->pts.val 一直到最大值:3606988,audio_pts 变为:
3606988*1/90000 = 40.0776
- 参考线:audio_pts = (double)audio_st->pts.val * audio_st->time_base.num / audio_st->time_base.den;
由于 PTS 非常偏离,所以它在逻辑上也不应该打得很好。但我不能说 av_interleaved_write_frame() 函数做错了;当然,我可以管理一些更清洁的东西。
编辑 3-1-14:又发现一件事:在读取 jet.webm 文件时,解码帧的 nb_sample 始终为 1024(第一帧除外:576),但对于 test_a.webm 文件,nb_samples 为 1024 或 128 , 576 例外(频率较低)。如果我在 nb_sample 为 128 时忽略帧的写入,我最终会得到大致相同的文件长度,但你可以听到这里和那里缺少点点滴滴。
我该如何处理?
c++ - 使用 FFmpeg 库、C++ 转码为 vorbis
我制作了一个测试应用程序以转码为 vorbis 格式(webm 容器)。
到目前为止,基于 FFmpeg 示例,一切正常,输出文件正常播放,但右声道声音丢失。我尝试寻找不同的可能性,但到目前为止找不到任何答案。
作为参考,这是我正在使用的代码:
在 Windows 7 下工作,Zeranoe FFmpeg 32 位构建:
谁能指出我可能误解的地方?
感谢您提前提供任何指导!
audio - 用 ffmpeg 和 libvorbis 编码 webm 不起作用
我正在尝试运行 ffmpeg 多路复用示例的修改版本,该示例将 vorbis 编码的音频输出到 webm 容器。
如果我将 mp3 指定为格式,代码可以正常工作,只是在我使用 vorbis 时不行
代码类似于http://www.ffmpeg.org/doxygen/2.0/doc_2examples_2muxing_8c-example.html但去掉了视频部分。我在启用视频的情况下进行了测试,示例视频已正确编码,但没有音频。
ffmpeg 编译时带有 libvorbis 和 libvpx 支持。
编译
p>输出
c++ - FFmpeg + OpenAL - 从视频中播放流式声音不起作用
我正在解码 OGG 视频(theora 和 vorbis 作为编解码器),并希望在播放声音时将其显示在屏幕上(使用 Ogre 3D)。我可以很好地解码图像流,并且视频以正确的帧速率完美播放,等等。
但是,我根本无法使用 OpenAL 播放声音。
编辑:我设法使播放声音至少在某种程度上类似于视频中的实际音频。更新了示例代码。
编辑 2:我现在能够获得“几乎”正确的声音。我必须将 OpenAL 设置为使用 AL_FORMAT_STEREO_FLOAT32(在初始化扩展之后),而不仅仅是 STEREO16。现在声音“只有”极高的音调和口吃,但速度正确。
这是我解码音频数据包的方法(在后台线程中,等效的对于视频文件的图像流来说效果很好):
因此,如您所见,我将帧解码,然后将其 memcpy 到我自己的结构 AudioFrame 中。现在,当播放声音时,我会像这样使用这些音频帧:
我给 OpenAL 的格式和频率是 AL_FORMAT_STEREO_FLOAT32(它是一个立体声流,我确实初始化了 FLOAT32 扩展)和 48000(这是音频流的 AVCodecContext 的采样率)。
在播放过程中,我执行以下操作来重新填充 OpenAL 的缓冲区:
如您所见,我进行了非常繁重的错误检查。但是我没有收到任何错误,无论是来自 OpenAL 还是来自 FFmpeg。 编辑:我听到的声音有点类似于视频中的实际音频,但音调非常高,而且非常口吃。此外,它似乎是在电视噪音之上播放的。很奇怪。另外,它的播放速度比正确的音频慢得多。 编辑:2使用 AL_FORMAT_STEREO_FLOAT32 后,声音以正确的速度播放,但仍然非常高音和口吃(虽然比以前少)。
视频本身没有损坏,可以在任何播放器上正常播放。OpenAL 也可以在同一个应用程序中很好地播放 *.way 文件,因此它也可以正常工作。
任何想法这里可能有什么问题或如何正确地做到这一点?
我唯一的猜测是,不知何故,FFmpeg 的解码功能不会产生 OpenGL 可以读取的数据。但这只是 FFmpeg 解码示例的情况,所以我不知道缺少什么。据我了解, decode_audio4 函数将帧解码为原始数据。OpenAL 应该能够处理 RAW 数据(或者更确切地说,不能处理其他任何数据)。
ios - 如何在 iPhone/iOS 中播放 xiph.org 音频编解码器?
我有以 Vorbis 格式编码的音乐,并且还开始将我的一些专辑编码为新的 Opus 格式。有没有办法可以将它们复制并播放到我的 iPhone 上?xiph.org wiki 页面说明了 vorbis 支持,在自由软件方面,它是“正在进行中的工作”,虽然它引用了支持 Vorbis 的无线电流和视频应用程序,但是音频支持呢?
总结一下需求:
- Vorbis 支持
- 作品支持
- 某种方式来复制或使专辑可用
- 免费软件将是一个加分项,因为专有软件采用 Opus 可能会很慢,我什至可以自己通过编写补丁来添加对其他编解码器的支持
[编辑:需要基本的媒体播放器功能]
- 播放列表支持等
- 完美的播放必须是一个强有力的准则(例如,某些播放器每播放 5 分钟就会出现音频解码故障)