0

我正在使用 avconv 将 .mov 文件转换为 .mpg 文件。我的 php 应用程序正在运行的命令如下:

avconv -y -i '$finalvideo' -target ntsc-dvd -aspect 4:3 '$mpgvideo' > $logs

我能够毫无问题地将小的 .mov 文件转换为 .mpg。但是,我无法转换超过十分钟或十五分钟的视频。日志文件完全为空。当我直接运行命令时,无论我选择哪个视频,帧都会在 34000 左右停止。

cpu 显示此进程的使用率为 97%,但是,什么也没有发生。

操作系统 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发布了我的错误

谢谢你的帮助。

4

2 回答 2

2

尝试使用更高的日志级别运行 avconv -loglevel debug:. 这应该会给你更多的数据。另外,尝试-dump-debug.

你确定不是因为你达到了存储上限吗?

于 2011-11-03T21:16:15.830 回答
0

我最近在使用 ffmpeg 将一些奇怪大小的视频剪辑转换为 mp4 容器内的“标准”16:9 x264 和 AAC 流时遇到了这个问题。当“编解码器'ac3'的样本格式's16'不兼容,自动选择格式'flt'”消息出现时,我的ffmpeg进程经常会在100%的CPU使用率下无限期挂起。

我终于发现,至少在我的情况下,问题在于由于我正在进行的转换(转码为中间格式,然后转码为最终所需的输出),实际上是音频流通道的数量导致了编码挂起的过程。通过告诉 ffmpeg 将音频流转换为 2 通道,我能够永久解决此问题。

相同的解决方案可能适用于 avconv。在 ffmpeg 世界中(并且因为我坚持使用过时的版本),我只需要添加-ac 2到我的 ffmpeg 命令中,一切都运行良好!

希望有帮助:)

于 2015-07-09T03:19:11.407 回答