以编程方式裁剪MP3文件

3

嗨 <> 我需要在我的应用程序中修剪/切割/编辑音频文件,我尝试使用ffmpeg,但我不知道如何安装该库或如何使用它...所以,有人可以给我一个好的指南,如何在windows 7 64位中使用android ndk r10和ffmpeg 2.3?或者有其他建议如何切割mp3文件吗?

当我将ffmpeg库添加到我的项目中时,在控制台上出现以下错误:

    [2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] C:\Users\David\Workspace\RecordTheLast20Minutes\res\values\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] C:\Users\David\Workspace\RecordTheLast20Minutes\res\values-v14\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] C:\Users\David\Workspace\RecordTheLast20Minutes\res\values\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
[2014-07-29 00:04:06 - RecordTheLast20Minutes] C:\Users\David\Workspace\RecordTheLast20Minutes\res\values-v14\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:28 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:29 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:32 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:50 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:07:52 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:18 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-hdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-mdpi\ic_launcher.jpg:0: Originally defined here.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
[2014-07-29 00:10:19 - RecordTheLast20Minutes] res\drawable-xhdpi\ic_launcher.jpg:0: Originally defined here.

所有类似R.raw.musicR.menu.actionbarmenuR.layout.activity的内容现在都是错误:R无法解析为变量,而且这一行ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3也是错误的:

Multiple markers at this line
    - Syntax error on token "copy", @ expected
    - Syntax error on token "inputfile", delete this 
     token
    - Syntax error on token(s), misplaced 
     construct(s)
    - Syntax error on token(s), misplaced 
     construct(s)
    - Syntax error on token "30", delete this token

感谢您的帮助:)

在 Stack Overflow 上,询问我们推荐或寻找工具、库或喜爱的外部资源的问题是不被允许的,因为它们往往会吸引带有个人观点的答案和垃圾信息。相反,请描述问题以及已经采取的解决方案。 - AStopher
@zyboxinternational 我还没有做任何事情,我不知道如何使用工具或库,所以我来这里了。 - DAVIDBALAS1
Stack Overflow 不是用来让人们寻求库的地方。 - AStopher
@zyboxinternational,你能看到我在Mick回答下面的评论吗? - DAVIDBALAS1
当然需要。你需要准确地评论你遇到了什么错误,因为“我遇到了一个错误”并没有什么帮助。 - AStopher
1
@zyboxinternational 已编辑 :) - DAVIDBALAS1
1个回答

2
有许多开源的Android ffmpeg项目,其中似乎最常用或讨论的是:

https://github.com/guardianproject/android-ffmpeg

这提供了在Android平台上使用ffmpeg的方法,同时相关项目提供了一个Java包装器(使用Runtime.getRuntime().exec方法,而不是我最初想到的JNI)来允许您从常规Java Android应用程序中使用它:

https://github.com/guardianproject/android-ffmpeg-java

上面的顶级项目包括构建说明和一些示例以测试安装。
以下是使用ffmpeg二进制文件的Java Wrapper项目方法声明的一些示例。您可以在下载的android-ffmpeg-java项目中的文件“android-ffmpeg-java/src/org/ffmpeg/android/FfmpegController.java”中查看完整代码:
public void extractAudio (Clip mdesc, String audioFormat, File audioOutPath, ShellCallback sc) throws IOException, InterruptedException 
    { ...

public void concatAndTrimFilesMPEG (ArrayList<Clip> videos,Clip out, boolean preConvert, ShellCallback sc) throws Exception
{ ...

public Clip convertToMPEG (Clip mediaIn, String outPath, ShellCallback sc) throws Exception
{ ...

如果您查看这些内容,应该能够看到如何添加一个完全符合您要求的方法。基本上,这些方法使用 Runtime.getRuntime().exec 函数调用 cmd 行 ffmpeg 并使用特定任务所需的参数。
从过去在 Android 上使用 Runtime.getRuntime().exec 的经验中需要注意以下几点:

好的,我下载了这个:https://github.com/guardianproject/android-ffmpeg-java。将其导入到`Eclipse`中,进入我的项目属性,在`Android`部分下添加了库(现在我有android-ffmpeg-library和appcompat_v7_2),但是当我尝试运行此代码时:`ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3`,仍然出现错误。 - DAVIDBALAS1
查看你更新的问题中的“R无法解析错误”:这是在Android开发中常见的错误,可能有多种原因/解决方案。请参阅此问题以获取更多信息/帮助:https://dev59.com/PHE85IYBdhLWcg3wejfn - Mick
从ffmpeg的错误来看,我认为根据您在其他地方的问题,您可能正在尝试以某种方式执行命令而没有使用Java包装器? 我看不到任何示例或文档,但是如果您查看您下载的项目中的“android-ffmpeg-java / src / org / ffmpeg / android / FfmpegController.java”中的代码,您可以看到如何通过Java包装器调用ffmpeg的示例,这就是我认为您想要的。 我已更新答案以显示此内容。 - Mick
谢谢,我太蠢了,在开始创建我的应用程序之前我没有检查如何修剪mp3文件,我想我会放弃。 - DAVIDBALAS1
FFmpeg库在Windows 32位操作系统中未构建。 - Ajay
你可以使用SoxController来解决你的问题。目前我也在这部分工作中。 - sonida

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接