不完全确定我是否应该在 askubuntu 或 stackoverflow 上发布此内容。
我正在建立一个网站,用户可以上传和分享视频。我使用 avconv 来缩小视频大小并将其保存两次,一次保存为 mp4,另一次保存为 webm。
从手机上传 .MOV,视频转换快速且易于管理。
从三星 Galaxy S3 上传 .mp4 时,视频转换为 webm 也很快。但是,转换为另一个 mp4 则需要很长时间 - 实际上是几个小时。为什么?有人能解释一下这个问题吗?
我的 avconv 输出如下。
avconv -i /path/video.mp4 -c:v libx264 -vf transpose=1,transpose=1,transpose=1 -s 640x480 /path/video-out.mp4
avconv version 0.8.17-4:0.8.17-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
built on Mar 16 2015 13:26:50 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/video.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2015-09-04 15:08:21
Duration: 00:00:07.76, start: 0.000000, bitrate: 11756 kb/s
Stream #0.0(eng): Video: h264 (Constrained Baseline), yuv420p, 1280x720, 11967 kb/s, 29.81 fps, 90k tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2015-09-04 15:08:21
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 119 kb/s
Metadata:
creation_time : 2015-09-04 15:08:21
File '/path/video-out.mp4' already exists. Overwrite ? [y/N] y
[buffer @ 0xc3d580] w:1280 h:720 pixfmt:yuv420p
[scale @ 0xc3dac0] w:1280 h:720 fmt:yuv420p -> w:640 h:480 fmt:yuv420p flags:0x4
[transpose @ 0xc3e280] w:640 h:480 dir:1 -> w:480 h:640 rotation:clockwise vflip:0
[transpose @ 0xc3e7c0] w:480 h:640 dir:1 -> w:640 h:480 rotation:clockwise vflip:0
[transpose @ 0xc3ede0] w:640 h:480 dir:1 -> w:480 h:640 rotation:clockwise vflip:0
[libx264 @ 0xc2b100] MB rate (108000000) > level limit (983040)
[libx264 @ 0xc2b100] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0xc2b100] profile Main, level 5.1
[libx264 @ 0xc2b100] 264 - core 120 r2151 a3f4407 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=1 b_bias=0 direct=1 weightb=0 open_gop=1 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 aq=1:1.00
Output #0, mp4, to '/path/video-out.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2015-09-04 15:08:21
encoder : Lavf53.21.1
Stream #0.0(eng): Video: libx264, yuv420p, 480x640, q=-1--1, 180k tbn, 90k tbc
Metadata:
creation_time : 2015-09-04 15:08:21
Stream #0.1(eng): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
Metadata:
creation_time : 2015-09-04 15:08:21
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
Press ctrl-c to stop encoding
以下是帧输出的示例:
frame=124398 fps=142 q=33.0 size= 16885kB time=1.38 bitrate=100110.2kbits/s dup=124356 drop=0
我在写这个问题的整个过程中一直在运行这个过程,到目前为止已经完成......22 帧。
可能是什么问题呢?
编辑:这也不是个大文件。它大约有 11 MB,1280 x 720。
再次编辑:自从发布问题以来,该过程刚刚开始挂起,并且不会超过帧...32 左右。
再次编辑:硬重启服务器,以防 CPU 被其他进程压垮。没用,问题还是一样。
答案1
得到ffmpeg
avconv
并且 Libav 的仿冒品“ ffmpeg
”存在缺陷。获取最新ffmpeg
版本。您有 4 个主要选项:
下载静态构建。简单快捷,但无法自定义,不支持某些编码器等非免费软件。不干扰系统。
编译。您可以按照复制粘贴的分步指南进行操作。它不会干扰系统。
使用 PPA(对于 Trusty 用户)。
升级到 Ubuntu Vivid 15.04 或更新版本。Vivid 包含
ffmpeg
来自 FFmpeg 的 2.5.8。但是,FFmpeg 开发非常活跃,您可能仍想使用静态构建或编译。
静态构建的使用
下载并解压后,您可以像这样使用它(假设它位于Downloads
您主目录中)。
包含完整路径:
/home/user/Downloads/ffmpeg -i …
或者
~/Downloads/ffmpeg -i …
或者导航到包含以下内容的目录
ffmpeg
并运行:./ffmpeg -i …
或者将其移动到 目录中
PATH
。~/bin
目录就是这样一个位置(假设同一个用户将执行ffmpeg
)。bin
在您的主目录中创建一个名为的目录。- 将二进制文件移动
ffmpeg
到~/bin
。 - 运行
source ~/.profile
,或者直接注销然后登录。 - 现在只需
ffmpeg
在任何终端运行命令就可以了。