How can I convert a .mpg video to .mp4 without losing quality? My attempts below:
$INCPATH = dirname(__FILE__).'/';
$id = 99999;
$ext = "MPG";
$input_dir = $INCPATH."../img/videos/".$id.".".$ext ;
$output_dir2 = $INCPATH."../img/videos/".$id.".mp4" ;
$q = '/usr/bin/ffmpeg -i '.$input_dir.' -c:v libx264 -c:a libfaac -r 30 '.$output_dir2." 2>&1" ;
$out = shell_exec($q) ;
$input_dir = $output_dir2 ;
echo var_dump($out);
Output of running that script:
string(5735) "ffmpeg version N-76539-g480bad7-syslint Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
libavutil 55. 5.100 / 55. 5.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mpeg, from '/home/imcajans/public_html/kzmk/../img/videos/99999.MPG':
Duration: 00:00:08.16, start: 0.116600, bitrate: 2955 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 9100 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s
[libx264 @ 0x161e820] using SAR=64/45
[libx264 @ 0x161e820] using cpu capabilities: none!
[libx264 @ 0x161e820] profile High, level 3.1
[libx264 @ 0x161e820] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/home/imcajans/public_html/kzmk/../img/videos/99999.mp4':
Metadata:
encoder : Lavf57.14.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc57.15.100 libx264
Stream #0:1: Audio: aac (libfaac) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, s16, 128 kb/s
Metadata:
encoder : Lavc57.15.100 libfaac
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfaac))
Press [q] to stop, [?] for help
frame= 48 fps=0.0 q=0.0 size= 0kB time=00:00:01.19 bitrate= 0.3kbits/s dup=8 drop=0
frame= 66 fps= 58 q=29.0 size= 20kB time=00:00:01.83 bitrate= 87.2kbits/s dup=11 drop=0
frame= 77 fps= 43 q=29.0 size= 51kB time=00:00:02.17 bitrate= 190.3kbits/s dup=13 drop=0
frame= 89 fps= 38 q=29.0 size= 86kB time=00:00:02.60 bitrate= 272.2kbits/s dup=15 drop=0
frame= 101 fps= 34 q=29.0 size= 124kB time=00:00:02.98 bitrate= 340.6kbits/s dup=17 drop=0
frame= 114 fps= 32 q=29.0 size= 166kB time=00:00:03.39 bitrate= 400.3kbits/s dup=19 drop=0
frame= 126 fps= 31 q=29.0 size= 201kB time=00:00:03.84 bitrate= 428.3kbits/s dup=21 drop=0
frame= 137 fps= 30 q=29.0 size= 236kB time=00:00:04.20 bitrate= 459.6kbits/s dup=23 drop=0
frame= 151 fps= 29 q=29.0 size= 275kB time=00:00:04.65 bitrate= 484.2kbits/s dup=25 drop=0
frame= 165 fps= 29 q=29.0 size= 316kB time=00:00:05.12 bitrate= 505.4kbits/s dup=27 drop=0
frame= 177 fps= 28 q=29.0 size= 350kB time=00:00:05.50 bitrate= 521.3kbits/s dup=29 drop=0
frame= 188 fps= 27 q=29.0 size= 387kB time=00:00:05.93 bitrate= 534.6kbits/s dup=31 drop=0
frame= 198 fps= 27 q=29.0 size= 419kB time=00:00:06.25 bitrate= 548.7kbits/s dup=33 drop=0
frame= 212 fps= 27 q=29.0 size= 461kB time=00:00:06.72 bitrate= 562.4kbits/s dup=35 drop=0
frame= 223 fps= 26 q=29.0 size= 495kB time=00:00:07.04 bitrate= 576.6kbits/s dup=37 drop=0
frame= 240 fps= 26 q=29.0 size= 574kB time=00:00:07.59 bitrate= 618.9kbits/s dup=40 drop=0
frame= 245 fps= 20 q=-1.0 Lsize= 834kB time=00:00:08.17 bitrate= 835.9kbits/s dup=41 drop=0
video:696kB audio:128kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.134396%
[libx264 @ 0x161e820] frame I:2 Avg QP:22.05 size: 10777
[libx264 @ 0x161e820] frame P:187 Avg QP:22.67 size: 3323
[libx264 @ 0x161e820] frame B:56 Avg QP:23.98 size: 1242
[libx264 @ 0x161e820] consecutive B-frames: 54.7% 44.1% 1.2% 0.0%
[libx264 @ 0x161e820] mb I I16..4: 33.5% 63.9% 2.5%
[libx264 @ 0x161e820] mb P I16..4: 1.9% 1.8% 0.0% P16..4: 46.9% 4.7% 6.4% 0.0% 0.0% skip:38.3%
[libx264 @ 0x161e820] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 34.4% 0.5% 0.0% direct: 3.1% skip:61.8% L0:41.1% L1:57.8% BI: 1.1%
[libx264 @ 0x161e820] 8x8 transform intra:51.1% inter:96.1%
[libx264 @ 0x161e820] coded y,uvDC,uvAC intra: 25.1% 86.2% 30.4% inter: 9.5% 38.5% 1.1%
[libx264 @ 0x161e820] i16 v,h,dc,p: 41% 5% 11% 43%
[libx264 @ 0x161e820] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 6% 48% 1% 1% 3% 1% 3% 1%
[libx264 @ 0x161e820] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 54% 10% 15% 3% 3% 8% 2% 5% 2%
[libx264 @ 0x161e820] i8c dc,h,v,p: 66% 12% 18% 3%
[libx264 @ 0x161e820] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x161e820] ref P L0: 66.7% 5.8% 17.5% 10.0%
[libx264 @ 0x161e820] ref B L0: 81.1% 18.9% 0.0%
[libx264 @ 0x161e820] ref B L1: 99.5% 0.5%
[libx264 @ 0x161e820] kb/s:697.87
"
My video with the .mpg extension at its best quality: https://imcajans.com/img/videos/99999.mpg
And the .mp4 video which was coverted from .mpg (bad quality): https://imcajans.com/img/videos/99999.mp4
ffmpeg
. Bear in mind that re-encoding a video using a lossy format will always result in some loss of quality. – Eversole