1

私はffmpegを使用して、php経由でビデオをflvファイルに変換しています。私が行ったテストは、mp4変換では機能しません。私は13秒のビデオを持っています(ビデオは15秒に制限されます)、それがアップロードされたとき、私はそれが300秒以上出てくるビデオの「持続時間」をチェックします。ビデオの処理方法を変更してみました。

// original
exec('ffmpeg -i <path>/<filename> 2>&1', $output);

// current
exec('ffmpeg -i <path>/<filename> 2>&1 | grep "Duration" | cut -d \' \' -f 4 | sed s/,//', $output);

元の方法はmpgファイルでは機能しませんでしたが、2番目の方法では機能しますが、どちらもmp4ビデオの「正しい」長さを提供しません。mp4ファイルを処理する「特別な」方法はありますか?

お手数をおかけしますが、よろしくお願いいたします。

アップデート:

コマンドライン

ffmpeg -i ./custom_scraping.mp4 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//
00:05:15.84

完全な出力(可能な限りフォーマットされた)

ffmpeg -i ./custom_scraping.mp4 2>&1
FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
libavutil     50.15. 1 / 50.15. 1
libavcodec    52.72. 2 / 52.72. 2
libavformat   52.64. 2 / 52.64. 2
libavdevice   52. 2. 0 / 52. 2. 0
libavfilter    1.19. 0 /  1.19. 0
libswscale     0.11. 0 /  0.11. 0
libpostproc   51. 2. 0 / 51. 2. 0

Seems stream 1 codec frame rate differs from container frame rate: 5994.00 (5994/1) -> 29.97 (2997/100)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './custom_scraping.mp4':
Metadata:
major_brand     : mp42
minor_version   : 1
compatible_brands: mp42avc1
Duration: 00:05:15.84, start: 0.000000, bitrate: 36 kb/s
Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16, 2 kb/s
Stream #0.1(eng): Video: h264, yuv420p, 480x360, 36 kb/s, 1.04 fps, 29.97 tbr, 2997 tbn, 5994 tbc

少なくとも1つの出力ファイルを指定する必要があります

それが役立つかどうかはわかりませんが、Linuxのファイルのリストから:1432471 May 31 13:33 custom_scraping.mp4

他に何か必要なことがあれば教えてください。

4

1 に答える 1

0

最近の ffmpeg を使用すると、正しい期間が提供されます。

$ ffmpeg -i custom_scraping.mp4
ffmpeg version N-41105-g7a2ae76 Copyright (c) 2000-2012 the FFmpeg developers
  built on May 29 2012 21:41:27 with gcc 4.7.0 20120505 (prerelease)
  configuration: --prefix=/usr --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libutvideo --enable-libvorbis --enable-libx264 --enable-nonfree --enable-x11grab
  libavutil      51. 55.100 / 51. 55.100
  libavcodec     54. 23.100 / 54. 23.100
  libavformat    54.  6.101 / 54.  6.101
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 77.100 /  2. 77.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'custom_scraping.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2011-08-17 21:14:16
  Duration: 00:00:11.11, start: 0.000000, bitrate: 1031 kb/s
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 2 kb/s
    Metadata:
      creation_time   : 2011-08-17 21:14:16
      handler_name    : Apple Sound Media Handler
    Stream #0:1(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 480x360, 36 kb/s, 1.04 fps, 29.97 tbr, 2997 tbn, 5994 tbc
    Metadata:
      creation_time   : 2011-08-17 21:14:16
      handler_name    : Apple Video Media Handler
At least one output file must be specified

予期しない動作に遭遇した場合、最初にすべきことは、最新の FFmpeg を試すことです。そうしないと、すでに解決済みのバグと戦って時間を無駄にする可能性があります。FFmpeg の開発は非常に活発です。最近の FFmpeg でまだバグが発生している場合は、バグ トラッカーで報告してください。

通常、Git から FFmpeg を取得することは、一般ユーザーに好まれます。リリースは、いわゆるリリースを「必要とする」ディストリビューションを対象としています。

FFmpeg Wiki には、 CentOS (したがって Red Hat) およびUbuntuのコンパイル ガイドが含まれています。

于 2012-06-01T18:12:09.017 に答える