I am trying to make a video upload feature for my project. But I have a problem with ffmpeg section. ffmpeg is already installed on my server. But i can not get any thumbnail. I have try to create thumbnail using the following code:
$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");
But i ge this when use var_dump();
for var_dump($videoa);
and var_dump($videob);
string(74) "https://mywebsite.com/uploads/video/ey1kXNew_video.flv: Input/output error" string(0) ""
Also if i use the shell_exec
like this:
$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()
giving me NULL
NULL
.
Please help me where am I wrong.
And here is my full video upload code:
$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;
}
I have tested also like this way:
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");
and I see the following echo
video:71kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
and another try then I get this note: https://mywebsite.com/uploads/video/1547892356_video.flv: Connection refused
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");
Here is last shell_exec Output:
$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 version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36) configuration: --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 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://website.com/uploads/video/e0J6HwtK_video.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2018-01-01 12:09:49 Duration: 00:00:41.49, start: 0.000000, bitrate: 230 kb/s Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 240x360 [SAR 1:1 DAR 2:3], 158 kb/s, 9.73 fps, 9.73 tbr, 19462 tbn, 19.46 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 71 kb/s (default) Metadata: creation_time : 2018-01-01 12:09:49 handler_name : IsoMedia File Produced by Google, 5-11-2011 [swscaler @ 0xc8c580] deprecated pixel format used, make sure you did set range correctly Output #0, mjpeg, to 'https://website.com/uploads/video/e0J6HwtK_video.png': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 encoder : Lavf56.40.101 Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 240x360 [SAR 1:1 DAR 2:3], q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default) Metadata: handler_name : VideoHandler encoder : Lavc56.60.100 mjpeg Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help frame= 5 fps=0.0 q=1.6 Lsize= 100kB time=00:00:05.00 bitrate= 163.9kbits/s dup=0 drop=32 video:100kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
If you are using https, your ffmpeg has to be configured with ssl support (ffmpeg over https fails).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With