【发布时间】:2012-05-31 15:41:46
【问题描述】:
我正在使用 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 文件,但第二种方法可以,但都没有给我 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
必须至少指定一个输出文件
不知道它是否有帮助,但来自 Linux 中的文件列表: 1432471 5 月 31 日 13:33 custom_scraping.mp4
如果还需要什么,请告诉我。
【问题讨论】:
-
先剪掉PHP垃圾,直接用ffmpeg。一旦它在 ffmpeg 中按预期工作,然后在 PHP 中尝试。还包括实际示例和控制台输出,以便我们可以轻松复制它并准确查看问题所在。
-
ffmpeg 抱怨一些不一致。文件是否正确编码并按预期播放?
-
我在 vlc 和 quicktime 中播放文件,效果很好。这是我出于测试目的从网上下载的通用视频。
-
当您观看视频时,它是 13 秒长还是 ffmpeg 状态的 00:05:15.84?是否同时使用更新的 ffmpeg 报告?只需get the current FFmpeg source,使用普通的
./configure编译,然后运行./ffmpeg(无需安装)。或者,提供一个示例链接,我可以查看。 -
如果我更新 ffmpeg 的版本,最新的(我相信该网站有 0.11)是最好的吗?原始文件的链接:reelcareer.com/_video/files/4/custom_scraping.mp4。需要帮助请叫我。感谢您的帮助。