我正在使用avconv将.mov文件转换为.mpg文件。我的php应用程序运行的命令如下:
avconv -y -i'$ finalvideo'-target ntsc-dvd -aspect 4:3'mp mpvideo'> $日志
我可以将小.mov文件转换为.mpg而不会出现任何问题。但是,我无法转换超过十或十五分钟的视频。日志文件完全为空。当我直接运行命令时,无论我选择哪个视频,帧都会在34000左右停止。
cpu在此过程中显示97%的使用率,但是,没有任何事情发生。
OS Ubuntu 10~
这是冻结输出
avconv version 0.7, Copyright (c) 2000-2011 the Libav developers
built on Nov 3 2011 13:39:09 with gcc 4.3.3
Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 23.98 (24000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/sites/default/files/compiled_videos/573-stream.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.0.3
Duration: 00:18:53.49, start: 0.000000, bitrate: 1430 kb/s
Stream #0.0(eng): Video: h264 (Main), yuv420p, 854x480, 1387 kb/s, 25.60 fps, 23.98 tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 126 kb/s
Metadata:
creation_time : 1970-01-01 00:00:00
[buffer @ 0x9d88820] w:854 h:480 pixfmt:yuv420p
[scale @ 0x9d88b60] w:854 h:480 fmt:yuv420p -> w:720 h:480 fmt:yuv420p flags:0x4
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
Output #0, dvd, to '/var/www/sites/default/files/compiled_videos/573.mpg':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.10.0
Stream #0.0(eng): Video: mpeg2video, yuv420p, 720x480 [PAR 8:9 DAR 4:3], q=2-31, 6000 kb/s, 90k tbn, 29.97 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0.1(eng): Audio: ac3, 48000 Hz, stereo, flt, 448 kb/s
Metadata:
creation_time : 1970-01-01 00:00:00
Stream mapping:
Stream #0.0 -> #0.0 (h264 -> mpeg2video)
Stream #0.1 -> #0.1 (aac -> ac3)
Press ctrl-c to stop encoding
[mpeg2video @ 0x9d8bf20] rc buffer underflow
Input stream #0.1 frame changed from rate:48000 fmt:s16 ch:2 to rate:48000 fmt:flt ch:2
frame=33910 fps= 91 q=2.0 size= 151922kB time=336.58 bitrate=3697.7kbits/s dup=5475 drop=530
有趣的哦。我使用了-loglevel debug -debug。我看到了这个信息
stream #0:
keyframe=0
duration=0.000
dts=1133.449 pts=1133.533
size=103
*** 1 dup!
stream #0:
keyframe=0
duration=0.000
dts=1133.449 pts=1133.449
size=104
直到我收到此消息
*** drop!
我已经用libav发布了我的错误 http://bugzilla.libav.org/show_bug.cgi?id=67
感谢您的帮助。
答案 0 :(得分:2)
尝试运行更高日志级别的avconv:-loglevel debug
。
这应该会给你更多的数据。另外,请尝试-dump
和-debug
。
你确定不是因为你正在购买存储帽吗?
答案 1 :(得分:0)
我最近用ffmpeg遇到了这个问题,同时将一些奇怪大小的视频剪辑转换为“标准”16:9 x264& AAC在mp4容器内流动。当“编解码器'ac3'的”不兼容的样本格式's16',自动选择格式'flt'“消息将显示时,我的ffmpeg进程经常只会在100%CPU使用时无限期挂起。
我终于发现问题,至少在我的情况下,是因为我正在进行的转换(转码为中间格式然后转换为最终的所需输出),实际上是音频流通道的数量导致编码过程挂起。通过告诉ffmpeg将音频流转换为2声道,我能够永久地解决这个问题。
同样的解决方案可能适用于avconv。在ffmpeg世界中(因为我遇到了过时的版本),我只需要将-ac 2
添加到我的ffmpeg命令中,一切运行完美!
希望有所帮助:)