【问题标题】:FFMpeg Error av_interleaved_write_frame():FFMpeg 错误 av_interleaved_write_frame():
【发布时间】:2011-02-16 18:27:37
【问题描述】:

这是我的代码。运行php代码后

FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include --enable-libamr-nb --enable-libamr-wb --enable-libdirac --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-x11grab
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Nov  6 2009 19:05:03, gcc: 4.1.2 20080704 (Red Hat 4.1.2-46)

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 25.00 (25/1)
Input #0, flv, from 'demo.flv':
  Duration: 00:00:30.83, start: 0.000000, bitrate: 546 kb/s
    Stream #0.0: Video: h264, yuv420p, 640x360 [PAR 1:1 DAR 16:9], 546 kb/s, 25 tbr, 1k tbn, 50 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16
Output #0, image2, to 'demo.jpg':
    Stream #0.0: Video: mjpeg, yuvj420p, 640x360 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 1 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
av_interleaved_write_frame(): I/O error occurred
Usually that means that input file is truncated and/or corrupted.

【问题讨论】:

  • 当我执行控制台时它工作正常
  • # ffmpeg -i 'demo.flv' -an -ss 00:00:05 -r 1 -vframes 1 -y 'demo.jpg'

标签: php ffmpeg


【解决方案1】:

当我不小心这样做时,我得到了这个错误

ffmpeg -i vid.mp4 '%05.jpg'

而不是下面的

ffmpeg -i vid.mp4 '%05d.jpg'

这是顺序文件名的正确格式(注意添加的d)。

【讨论】:

    【解决方案2】:

    你必须先建立一个目录来存放ffpmeg解压出来的文件,因为ffmpeg没有建立目录的权限。

    【讨论】:

      【解决方案3】:

      我遇到了同样的错误消息并发现了我的(愚蠢的)错误。

      就像我尝试 FFMPEG 创建一个新目录一样愚蠢。收到错误消息。在这里阅读。自己创建了文件夹。重新运行命令提示符,瞧,没有更多错误消息了。

      世界上最愚蠢的错误。 以防万一有人遇到同样的错误。

      【讨论】:

      • 正如@Pekka 所指出的,当您运行 PHP 代码时,PHP 用户的权限没有足够的权限来创建所需的文件或文件夹,而当您在控制台,它是一个不同的用户,可能是管理员,其权限允许他创建所需的文件或文件夹。这就是为什么您在通过 PHP 执行命令而不是在控制台中执行命令时会出错的原因。
      【解决方案4】:
      av_interleaved_write_frame(): I/O error occurred
      Usually that means that input file is truncated and/or corrupted.
      

      这不是一个足够清晰的错误信息吗?您是否尝试过使用不同的输入文件?

      更新:可能是您的 PHP 脚本没有读取文件的必要权限。尝试将文件的权限设置为777,看看是否是这个原因。

      【讨论】:

      • 解决我的问题谢谢
      • 777 为我工作,谢谢@Pekka
      猜你喜欢
      • 1970-01-01
      • 2016-11-04
      • 2013-08-18
      • 1970-01-01
      • 2016-01-22
      • 2017-09-13
      • 2013-10-18
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多