我想从 YouTube 下载一些视频并将它们转换为 3gp,以便在手机上播放。我想知道如何使用 ffmpeg 来实现这一点。
我尝试了网上的各种结果,但只得到以下错误。
我用了:
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)
我用了:
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 3gp
或mp4 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