2012-03-28 106 views
113

音频我想下面的命令从视频中提取音频:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3的ffmpeg以从视频中提取

,但我得到的

libavutil  50.15. 1/50.15. 1 
libavcodec 52.72. 2/52.72. 2 
libavformat 52.64. 2/52.64. 2 
libavdevice 52. 2. 0/52. 2. 0 
libavfilter 1.19. 0/1.19. 0 
libswscale  0.11. 0/0.11. 0 
libpostproc 51. 2. 0/51. 2. 0 
SamplE.avi: Invalid data found when processing input 

输出谁能帮助吗?

回答

8

ffmpeg -i sample.avi会给你的文件的音频/视频格式信息。确保你有正确的库配置来解析输入流。另外,确保文件没有损坏。

+0

现在,我得到了正确的结果,当我尝试与.mkv视频相同的评论。为什么它没有为.avi工作,是否有任何ffmpeg命令来转换.avi – user1269669 2012-03-29 15:44:18

+1

AVI或MKV是指容器格式,它可以容纳许多不同的音频/视频格式。您不想转换AVI音频,您正在转换AVI文件中的音轨,但您尚未指定它。使用上面列出的命令查看AVI文件中的音频轨道。 如果是MP3,你需要编译一个MP3库,如LAME http://lame.sourceforge.net/ – smp 2012-03-29 21:00:07

10

命令行是正确的,并在有效的视频文件上工作。我会确保你已经安装了正确的库来处理mp3,用另一个音频编解码器安装lame o probe。让你了解更多

通常

ffmpeg -formats 

ffmpeg -codecs 

将给予足够的信息。

2

只是一个猜测:

-ab 192 

应该

-ab 192k 

好像这可能是一个问题,但也许ffmpeg的是足够聪明的纠正。

+1

有效的评论,我编辑了OP的问题来改变它,但这并没有改变任何东西(在大多数情况下,这会产生警告)。 – 2014-06-22 10:19:35

1

如果包装到avi中的音频不是以mp3格式开头的,则可能需要指定-acodec mp3作为附加参数。或者不管你的mp3编解码器是什么(在Linux系统上它可能是-acodec libmp3lame)。您也可以通过指定-f mp3将格式强制为mp3来获得相同的效果(与平台无关),但不是所有版本的ffmpeg都支持该开关。你的旅费可能会改变。

208

如果你只是想无需重新编码提取音频流只是做:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac 
  • -vn是没有视频。
  • -acodec copy说使用相同的音频流已经在那里。

读取输出以查看它是什么编解码器,以设置正确的文件扩展名。

+19

而不是首次运行ffmpeg来检查它是哪个音频流,请使用ffprobe input-video.avi – FlorianB 2016-12-02 06:45:12

+1

如果您只从视频流中提取音频,则音频的长度可能会短于视频的长度。为确保不会发生这种情况,请使用与ffmpeg相同的呼叫提取音频和视频,例如“ffmpeg -i vid.avi -map 0:a audio.wav -map 0:v onlyvideo.avi – BlenderBender 2017-08-11 14:01:32

+0

这对我有用 – Sam 2017-10-20 01:40:44

62

使用-q:a对可变比特率编码来自AVI的高质量MP3。

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 

如果你想从视频中提取音频的一部分使用-ss选项来指定起始时间戳和-t选项,从3分钟指定编码持续时间,例如和中5秒45秒

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 
  • 时间戳需要在HH:MM:SS.xxx格式或秒。

  • 如果您未指定-t选项,它将结束。

+0

以下是'-q:a'值的指南:https://trac.ffmpeg .org/wiki/Encode/MP3 Zero是最高质量的VBR设置,通常会导致CBR范围上限的平均比特率(其中320 kbit/s是最大值,可能稍微超过了无损压缩变得更合适)。 – 2016-09-15 08:32:16

3

为了编码mp3音频ffmpeg.org示出了以下示例:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3 

我只由与所述视频文件名替换input.wav提取从视频音频。 2表示190kb /秒。您可以在我上面的链接中看到其他质量级别。

0

使用-b:a而不是-ab因为-ab已过时。请确保您的输入文件路径正确。

从视频中提取音频我已经使用下面的命令,它的工作正常。

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath}; 

这里,

-y

覆盖输出文件没有要求。

-i

的ffmpeg从输入“文件”

-vn

禁用视频记录

-ar

任意数量由-i选项指定的读取设置音频流的采样率(如果编码的话)

-ac

设置音频通道的数量。

-b:一

设置音频比特率

-f

格式

退房this用于在github我的完整样本ffmpeg的Android项目。