我正在尝试为我的项目制作视频上传功能。但我有一个问题ffmpeg部分。ffmpeg已经安装在我的服务器上。但我无法获得任何缩略图。我尝试使用以下代码创建缩略图:
$videoa = exec("/usr/bin/ffmpeg -i $videoUrlp.flv -f flv -s 650x390 $videoUrlp.mp4 2>&1");
$videob = exec("/usr/bin/ffmpeg -i $videoUrlp.mp4 -vcodec png -ss 00:00:5 -s 650x390 -vframes 1 -an -f rawvideo $videoUrlp.png");
但我在使用时得到这个var_dump();
for var_dump($videoa);
and var_dump($videob);
字符串(74)“https://mywebsite.com/uploads/video/ey1kXNew_video.flv https://mywebsite.com/uploads/video/ey1kXNew_video.flv:
输入/输出错误“字符串(0)”
另外,如果我使用shell_exec
像这样:
$videoa = shell_exec("/usr/bin/ffmpeg -i $videoUrlp.flv -f flv -s 650x390 $videoUrlp.mp4");
$videob = shell_exec("/usr/bin/ffmpeg -i $videoUrlp.mp4 -vcodec png -ss 00:00:5 -s 650x390 -vframes 1 -an -f rawvideo $videoUrlp.png");
and the var_dumps()
给我NULL
NULL
.
请帮助我我哪里错了。
这是我的完整视频上传代码:
$valid_formats = array("mp4","MP4","flv");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_FILES['uploading']['name'];
$size = $_FILES['uploading']['size'];
if(strlen($name)) {
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
$name = alphaID(microtime(true) * 10000).'_video';
if(in_array($ext,$valid_formats)) {
if($size<(50024*50024)) {
$GetVideoName = $name;
$video_ext=$ext;
$tmp = $_FILES['uploading']['tmp_name'];
if(move_uploaded_file($tmp, $videoPath.$GetVideoName.'.'.$video_ext)) {
$videoUrlp = $base_url.'uploads/video/'.$GetVideoName;
$videoa = exec("/usr/bin/ffmpeg -i $videoUrlp.flv -f flv -s 650x390 $videoUrlp.mp4 2>&1");
$videob = exec("/usr/bin/ffmpeg -i $videoUrlp.mp4 -vcodec png -ss 00:00:5 -s 650x390 -vframes 1 -an -f rawvideo $videoUrlp.png");
echo var_dump($videoa);
echo var_dump($videob);
} else {
echo "Fail upload folder with read access.";
}
} else
echo "Image file size max 1 MB";
} else
echo "invalidvieo";
} else
echo "Please select image..!";
exit;
}
我也这样测试过:
echo exec("/usr/bin/ffmpeg -i $videoUrlp.flv -ar 22050 -ab 32 -f flv -s 780x400 $videoUrlp.$video_ext");
echo exec("/usr/bin/ffmpeg -i $videoUrlp.$video_ext -deinterlace -an -ss 1 -t 00:00:05 -r 1 -y -vcodec mjpeg -f mjpeg $videoUrlp.png 2>&1");
我看到以下回声
video:71kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
再一次尝试然后我得到这个注释:https://mywebsite.com/uploads/video/1547892356_video.flv https://mywebsite.com/uploads/video/1547892356_video.flv: 连接被拒绝
echo exec("/usr/bin/ffmpeg -i $videoUrlp.flv -ar 22050 -ab 32 -f flv -s 780x400 $videoUrlp.$video_ext");
echo exec("/usr/bin/ffmpeg -i $videoUrlp.$video_ext -deinterlace -an -ss 1 -t 00:00:05 -r 1 -y -vcodec mjpeg -f mjpeg $videoUrlp.png 2>&1");
这是最后一个 shell_exec 输出:
$local = 'https://website.com/uploads/video/'.$GetVideoName.'.'.$video_ext;
$localTumb = 'https://website.com/uploads/video/'.$GetVideoName.'.png';
echo shell_exec("/usr/bin/ffmpeg -i $local -deinterlace -an -ss 1 -t 00:00:05 -r 1 -y -vcodec mjpeg -f mjpeg $localTumb 2>&1");
ffmpeg 版本 2.8.15 版权所有 (c) 2000-2018 FFmpeg 开发人员使用 gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36) 构建
配置: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags ='-Wl,-z,relro' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable- gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56。40.101 / 56。
40.101 libavdevice 56.4.100 / 56.4.100 libavfilter 5.40.101 / 5.40.101 libavresample 2.1.0 / 2.1.0 libswscale 3.1.101 / 3.1.101 libswresample 1.2.101 / 1.2.101 lib后处理 53. 3.100 / 53. 3.100 输入 #0, mov,mp4,m4a,3gp,3g2,mj2, 来自 'https://website.com/uploads/video/e0J6HwtK_video.mp4 https://website.com/uploads/video/e0J6HwtK_video.mp4':元数据:
主要_品牌:mp42 次要_版本:0 兼容_品牌:isommp42
创建时间:2018-01-01 12:09:49 持续时间:00:00:41.49,开始:
0.000000,比特率:230 kb/s 流 #0:0(und):视频:h264(约束基线)(avc1 / 0x31637661)、yuv420p、240x360 [SAR 1:1 DAR 2:3]、158
kb/s、9.73 fps、9.73 tbr、19462 tbn、19.46 tbc(默认)元数据:
handler_name :VideoHandler Stream #0:1(und):音频:aac (LC) (mp4a /
0x6134706D)、44100 Hz、单声道、fltp、71 kb/s(默认)元数据:
创建时间 : 2018-01-01 12:09:49 handler_name : IsoMedia 文件
由 Google 制作,2011 年 5 月 11 日 [swscaler @ 0xc8c580] 已弃用像素
使用的格式,确保您正确设置范围输出#0,mjpeg,
到 'https://website.com/uploads/video/e0J6HwtK_video.png https://website.com/uploads/video/e0J6HwtK_video.png':元数据:
主要_品牌:mp42 次要_版本:0 兼容_品牌:isommp42
编码器:Lavf56.40.101 Stream #0:0(und):视频:mjpeg、yuvj420p(pc)、
240x360 [SAR 1:1 DAR 2:3],q=2-31,200 kb/s,1 fps,1 tbn,1 tbc
(默认)元数据:handler_name:VideoHandler编码器:
Lavc56.60.100 mjpeg 流映射:流 #0:0 -> #0:0(h264(本机)
-> mjpeg (native)) 按 [q] 停止,按 [?] 获取帮助帧= 5 fps=0.0 q=1.6 Lsize= 100kB 时间=00:00:05.00 比特率= 163.9kbits/s dup=0
drop=32 视频:100kB 音频:0kB 字幕:0kB 其他流:0kB 全局
标头:0kB 复用开销:0.000000%