如何使用 ffmpeg 将 .mp4 文件转换为 .3gp?

如何使用 ffmpeg 将 .mp4 文件转换为 .3gp?

我想从 YouTube 下载一些视频并将它们转换为 3gp,以便在手机上播放。我想知道如何使用 ffmpeg 来实现这一点。

我尝试了网上的各种结果,但只得到以下错误。

  1. 我用了:

    ffmpeg -i dil.mp4 -sameq -ab 64k -ar 44100 dilenada.3gp
    

我有:

Unsupported codec for output stream #0.1

似乎流 0 编解码器帧速率与容器帧速率不同:2000.00(2000/1)-> 29.92(359/12)

  1. 我用了:

    ffmpeg -y -i dil.mp4 -r 20 -s 352x288 -b 400k -acodec libfaac -ac 1 -ar 2000 -ab 24k dilenada.3gp
    

我有:

Seems stream 0 codec frame rate differs from container frame rate: 2000.00 (2000/1) -> 29.92 (359/12)

Unknown encoder 'libfaac'

我究竟做错了什么?

答案1

使用以下命令:

ffmpeg  -y -i movie.mp4 \
        -r 20 -s 352x288 -vb 400k \
        -acodec aac -strict experimental -ac 1 -ar 8000 -ab 24k \
        movie.3gp

答案2

您可能只需要安装非免费/受限制的 ffmpeg 软件包之类的libavcodec-extra-53 libavformat-extra-53 libavutil-extra-51

调用 ffmpeg--list-encoders将显示可用的编码器。

答案3

您做的一切都是正确的 :)。您必须进行安装才能进行转换。

Ubuntu 受限附加组件,即 libavcodec-extra-53

您可以从软件中心获取它或使用以下命令

sudo apt-get 安装 ffmpeg libavcodec-unstripped-52

答案4

为了解决这个问题,唯一的选择可能是。这解决了我的所有问题。我卸载了系统上我尝试使用的build from source所有软件包,然后ffmpeg使用这个优秀的 Ubuntu 编译指南。这是我能够编码为 mp4 和 mp3 等专有格式的唯一方法。

此外,我修改过的以下脚本(感谢原作者)可以再次进行进一步修改并用于转换mp4 to 3gpmp4 to mp3(提取音频)或任何其他操作。它还会在新转换的文件中保留文件的原始名称:但是,正确填写选项非常重要。

您可以对 3gp 使用不同的选项;例如,您可能需要不同于qcif(176x144) 的分辨率,但我发现这些设置最初对我的compiled版本有效ffmpeg。(转换可能需要一段时间,具体取决于您的 CPU 有多强大,因为将其转换为 3gp 会大大减小文件大小:我的一次转换从 314mb 变为 13 mb!)

将下面的脚本保存到新文档并使其可执行(chmod +x),将其放在所需的文件夹中并执行;或者使用终端选择脚本所在的文件夹和包含文件的目标文件夹;例如~/Scripts/script ~/Downloads

#!/bin/bash
for f in *.mp4
do
    name="${f/.mp4/.3gp}"
    ffmpeg -i "$f" -vcodec h263 -s qcif -r 15 -b 100k -acodec libfaac -ac 1 -ar 32000 -ab 64k -f 3gp "$name"
done

相关内容