将mp4转换为mp3


81

我有一个视频需要转换为mp3(从命令行-而不是GUI): video.mp4

我试过了:

ffmpeg -i -b 192 video.mp4 video.mp3

没有成功。我收到以下错误:

WARNING: library configuration mismatch
Seems stream 0 codec frame rate differs from container frame rate: 59.83 (29917/500) -> 59.75 (239/4)
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s 
Encoder (codec id 86017) not found for output stream #0.0

所以我尝试了la脚:

lame -h -b 192 video.mp4 video.mp3

我得到:

Warning: unsupported audio format

我想念什么吗?


1
将-b更改为-ab
duffydack 2011年

Answers:


115

对于具有恒定比特率编码(CBR)的FFmpeg:

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -ab 160k -ar 48000 \
        audio.mp3

或者如果您想使用可变比特率编码(VBR):

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 \
        audio.mp3

VBR示例的目标比特率为165 Kbit / s,比特率范围为140 ... 185。


7
假设已经安装了la脚。
Darth Egregious

哈,谢谢,这正是我想要的
aki

2
唯一的额外步骤是sudo apt-get install libavcodec-extra-53
Jason Scheirer'4

2
或者因为这是Ubuntu,所以是ubuntu-restricted-extras,其中包括libavcodec-extra-53等。您可能已经按照安装CD的提示进行了安装。
thomasrutter

1
我的编辑内容添加到了VBR示例中,并将固定比特率示例标记为CBR ...
andrew.46 2014年

12

我有一个shell脚本,该脚本使用mplayer(因此它可以转换任何mplayer可以播放的内容)提取音频,然后使用进行编码lame。这是代码:

#! /bin/bash
# any2mp3.sh
# Converts to mp3 anything mplayer can play
# Needs mplayer amd lame installed

[ $1 ] || { echo "Usage: $0 file1.wma file2.wma"; exit 1; }

for i in "$@"
do
    [ -f "$i" ] || { echo "File $i not found!"; exit 1; }
done

[ -f audiodump.wav ] && {
    echo "file audiodump.wav already exists"
    exit 1
}

for i in "$@"
do
    ext=`echo $i | sed 's/[^.]*\.\([a-zA-Z0-9]\+\)/\1/g'`
    j=`basename "$i" ".$ext"`
    j="$j.mp3"
    echo
    echo -n "Extracting audiodump.wav from $i... "
    mplayer -vo null -vc null -af resample=44100 -ao pcm:waveheader:fast \
    "$i" >/dev/null 2>/dev/null || {
        echo "Problem extracting file $i"
        exit 1
    }
    echo "done!"
    echo -n "Encoding to mp3... "
    lame -m s audiodump.wav -o "$j" >/dev/null 2>/dev/null
    echo "done!"
    echo "File written: $j"
done
# delete temporary dump file
rm -f audiodump.wav

首先,您需要apt-get install mplayer lame。之后,将代码放入名为“ any2mp3.sh”的文件中,授予执行权限,并将其放入您的$ PATH中,您将能够执行以下操作:

$ any2mp3.sh file.mp4 another-file.wma yet-another.file.ogg

它将转换每个传递给具有相同名称的mp3的文件。

这有点粗糙,但是可以完成工作。


我做了一切,我得到了:-rw-r--r-- 1 aki aki 7104 2011-12-02 10:41 video.mp3不能播放
aki

太奇怪了……似乎la脚无法转换WAV。尝试>/dev/null 2>/dev/null从代码中删除,以查看错误消息。
elias 2011年

没有运气,这里的输出:pastebin.com/ALrTqCmk都转换
AKI

并能播放audiodump.wav吗?如果没有,则mplayer无法播放video.mp4文件,那么您真的很走运。也许您要转换的文件已损坏,可以用另一个文件测试该过程吗?
elias 2011年

不,WAV不玩了,也不是从MPlayer MP4
AKI

11

声音转换器 安装声音转换器

通过软件中心安装

是GNOME桌面的领先音频文件转换器。它读取GStreamer可以读取的所有内容(Ogg Vorbis,AAC,MP3,FLAC,WAV,AVI,MPEG,MOV,M4A,AC3,DTS,ALAC,MPC,Shorten,APE,SID,MOD,XM,S3M等... ),并写入WAV,FLAC,MP3,AAC和Ogg Vorbis文件,或使用GNOME音频配置文件。

SoundConverter的目标是易于使用且非常快速。由于其多线程设计,它将使用尽可能多的内核来加快转换速度。它还可以从视频中提取音频。

如何使用VLC将MP4转换为MP3

  • 打开VLC Media Player。单击“媒体”>“转换”以进入“打开媒体”窗口。单击屏幕右侧的“添加”按钮以进入Windows资源管理器。在要转换的硬盘上找到MP4。点击屏幕底部的“转换”按钮。

  • 选择目标文件的名称。

  • 单击“音频编解码器”选项卡,然后从“编解码器”下拉框中选择“ MP3”。按下“开始”按钮开始将MP4转换为MP3音频。

  • 点击开始


4
但是OP要求提供命令行解决方案。
内森·奥斯曼

7

我使用这个小脚本将m4a转换为mp3。

#!/bin/bash
for i in *.m4a; do
    avconv -i "$i" -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 "`basename "$i" .m4a`.mp3"
done

如果显示“ avconv找不到”,请安装ffmpeg 并替换为ffmpeg
sanoJ

5

我认为问题出在您ffmpeg命令的语法上。

ffmpeg -i source_filename -vn -ab 192k -acodec libmp3lame -ac 2 output_filename

应该管用。


我得到:期望的交流数,但找到了:liblamemp3
aki

2

首先,您必须了解一些事情。

MP3是一种音频格式。

MP4是一种视频格式。

要从MP4中获取音频(并将其保存为MP3),请使用soundconverter 安装声音转换器


1
+1做得好,可以指出mp4和mp3之间的差异。
fossfreedom

2

Upd_Sanity.mp4转换为Upd_Sanity.mp3

$ sudo apt-get install ffmpeg && sudo apt-get install libavcodec-extra-53

$ ffmpeg -i Upd_Sanity.mp4 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 Upd_Sanity.mp3

或(ffmpeg不推荐使用)

$ avconv -i Upd_Sanity.mp4 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 Upd_Sanity.mp3

描述

   -i        input file name
   -vn       disable video recording
   -acodec   force audio codec to libmp3lame
   -ac       set the number of audio channels
   -ar       set the audio sampling frequency

如果您需要经常使用它,

步骤1:创建执行转换的bash函数

## utilities.sh
convertMP4toMP3(){
echo -n "Enter source mp4 file : "
read sourceFile

echo -n "Enter destination mp3 file : "
read destFile

avconv -i $sourceFile -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 $destFile
}

第2步:获取该bash文件

 $ source utilities.sh

步骤3:开始转换并调用上述功能 convertMP4toMP3

 $ convertMP4toMP3
 Enter source mp4 file : Upd_Sanity.mp4
 Enter destination mp3 file : UPd_sanity.mp3

参考文献

utilities.sh


1

如果使用FFmpeg并将输出通过管道传递给Lame(通过stdout和stdin),则可以直接使用Lame。一个例子:

ffmpeg -i video.mp4 -vn -f wav - | \
       lame -V 3 - audio.mp3

这使您可以使用跛脚的相当大的命令行选项,如果你想探索他们...


0

您可以尝试通过vlc或声音转换器对其进行转换,请转至http://soundconverter.org/声音转换器,或者在软件中心中找到,或使用vlc进行转换。打开vlc媒体转换/保存选择文件,选择输出格式,选择名称和目标,开始蒸



0

尽管它是GUI,但是在进行MP4到MP3的转换时,您可以使用Audacity来控制固定或可变以及输出质量。

打开Audacity,打开目标MP4文件,依次单击“文件”,“导出”,然后选择输出类型(默认为MP3),然后单击“保存”。它会打开MP4的音频通道,将MP3音频导出到任何地方(以及保存为其他内容的任何位置),然后您就不在了(将3赫兹AMD芯片上的400 mb MP4转换为MP3大约需要10分钟,音频采样率为160kb / sec,音频文件的大小约为MP4的一半。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.