Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell FFMPEG将.mpg视频转换为.mp4而不丢失质量_Shell_Video_Ffmpeg - Fatal编程技术网

Shell FFMPEG将.mpg视频转换为.mp4而不丢失质量

Shell FFMPEG将.mpg视频转换为.mp4而不丢失质量,shell,video,ffmpeg,Shell,Video,Ffmpeg,我如何将video.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/ffmp

我如何将video.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扩展具有最好的质量:


我的视频从.mpg转换为.mp4,质量很差:

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

ffmpeg -i $in -c:v libx264 -c:a libfaac -crf 20 -preset:v veryslow $out
不要使用-r。如果您想要更好的质量,请使用较低的-crf值。如果您想要更小的文件,请使用更高的-crf值。如果您更关心比特率而不是质量目标,请参阅上述指南中的。

要将MPG 5.1音频(无意中在sony HandyCam中录制)转换为带有立体声音频的MP4(可在大多数视频编辑器中使用),而不损失音频音量,请执行以下操作:

FOR /F "tokens=*" %G IN ('dir /b *.MPG') DO bin\ffmpeg -i "%G" -vcodec libx264 -acodec aac -ac 2 -af "volume=20dB"  "%~nG.mp4" 

我真的不确定这与编程有多大关系——这似乎更像是选择
ffmpeg
的参数的问题。请记住,使用有损格式对视频进行重新编码总是会导致一些质量损失。@reterius,不可能按您的要求执行。如果您正在更改编解码器,由于您的新编解码器有损,因此质量总是会下降。唯一一次你可以做一些类似的事情而不丢失质量是如果你把现有的视频流复制到一个新的容器中。。。但在这些情况下,不会进行重新编码。@Brad我知道新编码的视频当然会有质量损失,但输出文件的质量损失很大。我想我的问题是参数的数量。就像我说的,减小-crf值。试试-crf 10。如果这还不够好,那就再低一点。您可以一直访问-crf 0,它是无损的。文件大小将增加。自2016年以来,从ffmpeg中删除了libfaac使用-c:a aac代替此答案无法解决问题。-没有任何参数的vcodec libx264最适合我。“-crf 20-预设:v veryslow”速度非常慢。对于立体声MPEG,我建议使用/F“tokens=*%G IN('dir/b*.MPG')DO bin\ffmpeg-I“%G”-vcodec libx264-acodec aac-af“volume=20dB”“%~nG.mp4”。我没有发现视频质量的损失,而且速度很快。