FFmpegCommand icon indicating copy to clipboard operation
FFmpegCommand copied to clipboard

我想将其他格式的音频转成spx格式的,但是日志提示我自动选择编码器失败

Open FFFmark opened this issue 3 years ago • 10 comments

FFFmark avatar Aug 01 '20 07:08 FFFmark

Automatic encoder selection failed for output stream #0:0. Default encoder for format spx (codec speex) is probably disabled. Please choose an encoder manually.

FFFmark avatar Aug 01 '20 07:08 FFFmark

我改转码去手动选择,或者去添加这个编码器,在这个框架下面

FFFmark avatar Aug 01 '20 07:08 FFFmark

我改转码去手动选择,或者去添加这个编码器,在这个框架下面

确认一下,你使用的是哪一个?第一个全部编码都包含

// 全部编解码-体积较大
implementation 'com.coder.command:ffmpeg:${latestVersion}'
// 部分常用编解码-体积较小,比上面引入减少大约6M
implementation 'com.coder.command:ffmpeg-mini:${latestVersion}'

AnJoiner avatar Aug 01 '20 07:08 AnJoiner

implementation 'com.coder.command:ffmpeg:1.1.5' 应用的是这个包,因为他说这个全部编解码,考虑到spx不一定常见,所以我引用了这个

FFFmark avatar Aug 03 '20 00:08 FFFmark

implementation 'com.coder.command:ffmpeg:1.1.5' 应用的是这个包,因为他说这个全部编解码,考虑到spx不一定常见,所以我引用了这个

把你使用的命令发我一下

AnJoiner avatar Aug 03 '20 01:08 AnJoiner

implementation 'com.coder.command:ffmpeg:1.1.5' 应用的是这个包,因为他说这个全部编解码,考虑到spx不一定常见,所以我引用了这个

把你使用的命令发我一下

val src = obtainSoundFile()?.listFiles()?.get(0)?.absolutePath ?: "" val target = obtainSoundFile()?.absolutePath + "/test.spx"

            FFmpegCommand.runAsync(FFmpegUtils.transformAudio(src,target), object : IFFmpegCallBack {

                override fun onComplete() {

                }

                override fun onCancel() {

                }

                override fun onProgress(progress: Int) = Unit

                override fun onError(t: Throwable?) {
                    t?.printStackTrace()
                }

                override fun onStart() {

                }
            })

FFFmark avatar Aug 03 '20 01:08 FFFmark

implementation 'com.coder.command:ffmpeg:1.1.5' 应用的是这个包,因为他说这个全部编解码,考虑到spx不一定常见,所以我引用了这个

把你使用的命令发我一下

val src = obtainSoundFile()?.listFiles()?.get(0)?.absolutePath ?: "" val target = obtainSoundFile()?.absolutePath + "/test.spx"

            FFmpegCommand.runAsync(FFmpegUtils.transformAudio(src,target), object : IFFmpegCallBack {

                override fun onComplete() {

                }

                override fun onCancel() {

                }

                override fun onProgress(progress: Int) = Unit

                override fun onError(t: Throwable?) {
                    t?.printStackTrace()
                }

                override fun onStart() {

                }
            })

刚刚查询了一下ffmpeg编译源码,spx的音频编解码库没有加入,所以无法找到执行自动转这种格式的编解码

AnJoiner avatar Aug 03 '20 01:08 AnJoiner

implementation 'com.coder.command:ffmpeg:1.1.5' 应用的是这个包,因为他说这个全部编解码,考虑到spx不一定常见,所以我引用了这个

把你使用的命令发我一下

val src = obtainSoundFile()?.listFiles()?.get(0)?.absolutePath ?: "" val target = obtainSoundFile()?.absolutePath + "/test.spx"

            FFmpegCommand.runAsync(FFmpegUtils.transformAudio(src,target), object : IFFmpegCallBack {

                override fun onComplete() {

                }

                override fun onCancel() {

                }

                override fun onProgress(progress: Int) = Unit

                override fun onError(t: Throwable?) {
                    t?.printStackTrace()
                }

                override fun onStart() {

                }
            })

刚刚查询了一下ffmpeg编译源码,spx的音频编解码库没有加入,所以无法找到执行自动转这种格式的编解码

😀,那我要怎么弄呢,或者我要往那个方向研究一下呢,刚刚接触转码这个领域

FFFmark avatar Aug 03 '20 01:08 FFFmark

那我要怎么弄呢,或者我要往那个方向研究一下呢,刚刚接触转码这个领域

可以自己编译一个,如果你只是想使用编码为.spx后缀的文件,建议你只需要编译【speex】,可以参考这篇文章《Android Speex编译及使用》

AnJoiner avatar Aug 03 '20 05:08 AnJoiner

@AnJoiner 你好,我想再次问一下这个框架能支持那些音频转码,就是说 能转成什么格式的音频呢?

FFFmark avatar Aug 04 '20 02:08 FFFmark