标签: lame

在包含下划线的Android包名称中调用JNI函数

我正在尝试使用LAME库在Android中实现MP3编码,遵循以下指南: Lame MP3 Encoder编译为Android http://developer.samsung.com/android/technical-docs/Porting-and-using-LAME-MP3-on -Android与- JNI

但是我得到了一个java.lang.UnsatisfiedLinkError,我认为可能是因为我的包名包含一个下划线,它将其解释为句号.

看下面我的代码可能是这个问题,我该如何解决这个问题.或者是否有其他原因导致这种情况.在此先感谢您的帮助.

Record.java:

package co.uk.ing_simmons.aberdeensoundsites;

public class Record extends Activity implements OnClickListener {

static {
    System.loadLibrary("mp3lame");
}

private native void initEncoder(int numChannels, int sampleRate, int bitRate, int mode, int quality);

private native void destroyEncoder();

private native int encodeFile(String sourcePath, String targetPath);

[.....]
}
Run Code Online (Sandbox Code Playgroud)

wrapper.c:

void Java_co_uk_ing_simmons_aberdeensoundsites_Record_initEncoder(JNIEnv *env,
        jobject jobj, jint in_num_channels, jint in_samplerate, jint in_brate,
        jint in_mode, jint in_quality) {
[....]
Run Code Online (Sandbox Code Playgroud)

完整日志cat错误:

04-17 20:58:36.009: E/AndroidRuntime(26768): FATAL EXCEPTION: main
04-17 20:58:36.009: …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface android lame

19
推荐指数
2
解决办法
6677
查看次数

从命令行创建一个静音mp3

我正在尝试使用命令行创建(x)秒的静音/空mp3.我认为这是一项非常简单的任务!

看起来很蹩脚的是能够像这样做一些事情,但我无法找到任何导致实现这一目标的东西.

有没有人能够做到这样的事情?

windows mp3 command-line ffmpeg lame

18
推荐指数
3
解决办法
1万
查看次数

iOS Swift - 将.wav文件合并并转换为.mp3

我想将两个或多个.wav文件合并为一个,然后将其转换为.mp3,我想在Swift中完成(或者至少可以选择将它包含在swift项目中).

在swift中合并两个.wav文件不是问题.这是我的例子现在我不知道如何将lame库添加到swift项目以及如何使用它(如何更改客观的蹩脚代码使用语法以在swift中使用它).

我坚持使用swift,所以我尝试了使用Objective C的Lame库.我找到了将.caf转换为.mp3的示例代码,所以我试了一下.这是我尝试过的:

- (void) toMp3
{
    NSString *cafFilePath = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"caf"];

    NSString *mp3FileName = @"Mp3File";
    mp3FileName = [mp3FileName stringByAppendingString:@".mp3"];
    NSString *mp3FilePath = [[NSHomeDirectory() stringByAppendingFormat:@"/Documents/"] stringByAppendingPathComponent:mp3FileName];

    NSLog(@"%@", mp3FilePath);

    @try {
        int read, write;

        FILE *pcm = fopen([cafFilePath cStringUsingEncoding:1], "rb");  //source
        fseek(pcm, 4*1024, SEEK_CUR);                                   //skip file header
        FILE *mp3 = fopen([mp3FilePath cStringUsingEncoding:1], "wb");  //output

        const int PCM_SIZE = 8192;
        const int MP3_SIZE = 8192;
        short int pcm_buffer[PCM_SIZE*2];
        unsigned char mp3_buffer[MP3_SIZE];

        lame_t lame = lame_init();
        lame_set_in_samplerate(lame, 44100); …
Run Code Online (Sandbox Code Playgroud)

audio mp3 lame ios swift

18
推荐指数
2
解决办法
8686
查看次数

我如何编译lame作为iPhone的armv6和armv7的静态库(.a)?

LAME(http://lame.sourceforge.net/)是一个用c语言编写的库.它可以将PCM声音文件转换为MP3文件.我用它将声音文件转换为iPhone上的MP3文件.源PCM声音文件由麦克风录制.

为了将LAME包含到我的XCode项目中,我需要将LAME编译为3个静态库(.a),i386(IOS模拟器),armv6和armv7.

经过大量搜索,我成功地为i368版本(iOS模拟器)编写了一个静态库.这是命令:

./configure \
    CFLAGS="-isysroot  /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk" \
    CC="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386" \
    --prefix=/Volumes/Data/test/i386 \
    --host="arm-apple-darwin9"

make && make install
Run Code Online (Sandbox Code Playgroud)

问题是我无法编译armv6和armv7.我试过这个命令,但报告错误.有人有解决方案吗?

./configure \
    CFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk" \
    CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv6" \
    --prefix=/Volumes/Data/test/arm6 \
    --host="arm-apple-darwin9"

make && make install
Run Code Online (Sandbox Code Playgroud)

错误是:

console.c:25:21: error: curses.h: No such file or directory
console.c:27:20: error: term.h: No such file or directory
console.c: In function ‘get_termcap_string’:
console.c:92: warning: implicit declaration of function ‘tgetstr’
console.c:92: warning: assignment makes pointer from integer without a cast
console.c: In function ‘get_termcap_number’:
console.c:102: warning: …
Run Code Online (Sandbox Code Playgroud)

iphone mp3 static lame

13
推荐指数
2
解决办法
7653
查看次数

有没有LAME c ++ wraper\simplifier(在Linux Mac上工作,从纯代码中获胜)?

所以我想创建简单的pcm到mp3 C++项目.我希望它使用LAME.我喜欢LAME,但它真的是biiig.所以我需要某种OpenSource,使用纯粹的代码和纯粹的蹩脚代码工作流简化器.所以说我用PCM和DEST文件给它文件.打电话给像

LameSimple.ToMP3(file with PCM, File with MP3 , 44100, 16, MP3, VBR);

矿石这样的东西在4-5行(应该存在的例子)和我有我需要的vhat应该是轻,简单,powerfool,opensource,crossplatform.

有这样的事吗?!?

c c++ cross-platform wrapper lame

12
推荐指数
2
解决办法
2万
查看次数

如何在C/C++中使用lame将mp3解码为wav?

我学习了如何使用lame_encode_buffer_interleaved这个问题将wav编码为mp3 :是否有任何LAME c ++ wraper\simplifier(在Linux Mac上工作,从纯代码中获胜)?

现在我想将mp3解码回wav.我知道有,lame_decode但我不知道如何使用它,因为它需要两个pcm缓冲区(pcm_lpcm_r).我不明白如何将它们组合成一个格式良好的wav文件,因为我真的不知道它们是如何工作的.

现在有人可以提供一个简单的工作示例,使用C/C++中的lame将mp3解码为wav吗?

谢谢.

c c++ lame

12
推荐指数
1
解决办法
8784
查看次数

将C++ DLL添加到C#项目中

我正在尝试在C#项目中使用LAME的lame_enc.dll文件,但添加该东西似乎是不可能的.

我一直收到错误消息,指出无法添加引用,请检查是否可以访问,有效的程序集或COM组件.

我没有C++经验,但我想使用这个功能.现在我正在使用Process.NET框架调用lame.exe并做一些事情,但我想知道是否还有其他方法.

c# c++ visual-studio-2010 lame

11
推荐指数
3
解决办法
3万
查看次数

用于将flac文件转换为320位mp3的sox

我已经安装了sox,支持mp3和flac.

以下命令也成功将flac转换为mp3

sox /song_files/Daughter_of_Evil.flac /song_files/Daughter_of_Evil.mp3
Run Code Online (Sandbox Code Playgroud)

我的问题是"Daughter_of_Evil.mp3"不是320位mp3.我试图指定44100的采样率.但这并没有改变比特率.它保持在128kbps.

如何直接为上面的flac文件生成320位mp3文件.

我可以使用LAME将128位mp3转换为320位mp3.但是上面生成的128位mp3文件的质量已经丢失了.因此,我希望它只需一步完成.

谢谢

bitrate sox lame

9
推荐指数
1
解决办法
9592
查看次数

Google Chrome不再播放某些音频文件

自从更新到v45后,Chrome似乎不再播放选择的MP3文件.这不是全面的,其他一些MP3文件仍在播放.Chrome v44没有显示任何问题并播放了所有文件.

这个问题在运行各种版本的Windows(32位和64位)的许多计算机上很常见,回滚将允许文件播放.然而,这对于客户端PC来说不是可行的解决方案,也不适合前进.

在检查文件本身时,我无法记录可播放和不可播放文件之间的任何明显差异(除了持续时间,大小和名称;持续时间和大小在两者中相当分散,因此它不像超过设定大小的文件不工作;有些人做,有些人不做.)

保存文件并使用MediaInfo进行检查会显示以下信息

General
Complete name                            : D:\Desktop\L03-02n.mp3
Format                                   : MPEG Audio
File size                                : 3.41 MiB
Duration                                 : 1mn 29s
Overall bit rate mode                    : Constant
Overall bit rate                         : 320 Kbps
Genre                                    : Abstract
Writing library                          : LAME3.82

Audio
Format                                   : MPEG Audio
Format version                           : Version 1
Format profile                           : Layer 3
Duration                                 : 1mn 29s
Bit rate mode                            : Constant
Bit rate                                 : 320 Kbps
Channel(s)                               : 1 channel
Sampling rate                            : 44.1 KHz …
Run Code Online (Sandbox Code Playgroud)

audio mp3 google-chrome lame

9
推荐指数
1
解决办法
2886
查看次数

HTML5 <audio> LIVE流媒体的糟糕选择?

正如之前的一个问题所讨论的那样,我已经构建了一个原型(使用MVC Web API,NAudio和NAudio.Lame),它将实时低质量音频转换为mp3.源流是PCM:8K,16位,单声道,我正在使用html5的音频标签.

这两种浏览器和IE11存在15-34秒的延迟(高延迟)音频从中,我告诉浏览器听说过,是我们的最终用户无法接受的.理想情况下,延迟不会超过5秒.即使在我的音频标签中使用preload ="none"属性,也会发生延迟.

仔细观察这个问题,似乎两个浏览器在收到~32K的音频数据之前不会开始播放音频.考虑到这一点,我可以通过更改Lame的MP3'比特率'设置来影响延迟.但是,如果我减少延迟(通过向浏览器发送更多数据以获得相同长度的音频),我将在稍后介绍音频丢失.

例子:

  • 如果我使用Lame的V0编码,延迟将近34秒,这需要几乎0.5 MB的源音频.
  • 如果我使用Lame的ABR_32编码,我可以将延迟减少到10-15秒,但我将在整个听力会话中遇到暂停和辍学.

问题:

  1. 任何想法如何最小化启动延迟(延迟)?
  2. 我是否应该继续调查各种Lame'预设'以期选择"正确"的?
  3. 不是 MP3 不是直播的最佳格式?
  4. 切换到Ogg/Vorbis(或Ogg/OPUS)会有帮助吗?
  5. 我们是否需要放弃 HTML5的音频标签并使用Flash或Java小程序?

谢谢.

audio html5 mp3 live-streaming lame

7
推荐指数
1
解决办法
2136
查看次数