将 mp4 转换为 mp3

aki*_*aki 93 ffmpeg lame

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

我试过:

ffmpeg -i -b 192 video.mp4 video.mp3
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

所以我尝试了跛脚:

lame -h -b 192 video.mp4 video.mp3
Run Code Online (Sandbox Code Playgroud)

我得到:

Warning: unsupported audio format
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

jah*_*d65 130

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

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -ab 160k -ar 48000 \
        audio.mp3
Run Code Online (Sandbox Code Playgroud)

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

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 \
        audio.mp3
Run Code Online (Sandbox Code Playgroud)

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

  • 假设已经安装了跛脚。 (8认同)
  • 唯一的额外步骤是`sudo apt-get install libavcodec-extra-53` (3认同)
  • 或者因为这是 Ubuntu,[ubuntu-restricted-extras](https://help.ubuntu.com/community/RestrictedFormats),其中包括 libavcodec-extra-53 等。您可能已经安装了它,因为安装 CD 会提示您这样做。 (2认同)

hhl*_*hlp 13

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

通过软件中心安装

是 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 媒体播放器。点击“媒体”>“转换”进入“打开媒体”窗口。单击屏幕右侧的“添加”按钮进入 Windows 资源管理器。在您要转换的硬盘驱动器上找到 MP4。单击屏幕底部的“转换”按钮。

  • 选择目标文件的名称。

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

  • 点击开始

  • 但是 OP 要求提供命令行解决方案。 (4认同)

eli*_*ias 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
Run Code Online (Sandbox Code Playgroud)

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

$ any2mp3.sh file.mp4 another-file.wma yet-another.file.ogg
Run Code Online (Sandbox Code Playgroud)

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

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


kaa*_*aan 8

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

ffmpeg -i source_filename -vn -ab 192k -acodec libmp3lame -ac 2 output_filename
Run Code Online (Sandbox Code Playgroud)

应该管用。


小智 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
Run Code Online (Sandbox Code Playgroud)

  • 如果没有找到“avconv”,请安装“ffmpeg”并将其替换为“ffmpeg” (2认同)