shell - FFMPEG 将 .mpg 视频转换为 .mp4 而不会降低质量

标签 shell video ffmpeg

如何将视频 .mpg 转换为 .mp4 质量不佳。我的代码如下:

 $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);

回应:

            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
            "

我的视频以 .mpg 为后缀,质量最好:https://imcajans.com/img/videos/99999.mpg

我的视频从 .mpg 转换为 .mp4 质量很差:https://imcajans.com/img/videos/99999.mp4

最佳答案

您正在编码,但没有设置任何编码参数。阅读this指南,然后为您的用例选择适当的参数,例如:

ffmpeg -i $in -c:v libx264 -c:a libfaac -crf 20 -preset:v veryslow $out

不要使用-r。如果您想要更好的质量,请使用较低的 -crf 值。如果您想要较小的文件,请使用较高的 -crf 值。如果您更关心比特率而不是质量目标,请参阅 appropriate section在上述指南中。

关于shell - FFMPEG 将 .mpg 视频转换为 .mp4 而不会降低质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672960/

相关文章:

php在windows中执行exec时挂起

php - 如何通过 PHP 执行命令?

Bash命令行和输入限制

java - 从 java 应用程序调用的 shell 脚本的位置

java - 如何使用 vlcj 在 JAVA (swing) jframe 中播放 mp4 视频?还有其他方法可以在 JAVA 中播放 mp4 吗?

html - 视频和音频控件在html中不起作用

audio - ffmpeg : how to take wav as audio input for creating a video?

FFMPEG 找不到 H264 编码器

linux - 将输出通过管道传输到 shell 脚本 |亚马逊Linux

linux - 在 find 命令中排除目录范围