Converter vídeo para o formato mpg usando FFMPEG

1

Estou usando o FFMPEG para converter arquivos de vídeo para o formato mpg. A conversão funciona bem para conteúdo de áudio, mas a saída não tem conteúdo de vídeo. Estes são os parâmetros que estou usando:

ffmpeg.exe -i "<Path to input file>"  -y -s 640x360 -b:v 1024k -vcodec libx264 -r 29.7 -movflags faststart -pix_fmt yuv420p "output.mpg"

Estou sentindo falta de algo?

Aqui está a saída do console:

C:\Users\Sharun>"C:\Program Files\ImageMagick-6.8.8-Q16\ffmpeg.exe" -i "D:\SampleFiles\sampleavifile.avi" -y -s 640x360 -b:v 1024k -vcodec libx264 -r 29.7 -movflags faststart -pix_fmt yuv420p "D:\SampleFiles\eFileName.mpg"

ffmpeg version N-69711-g60bb893 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC) 
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca -- enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable- libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enab le-zlib
libavutil 54. 18.100 / 54. 18.100 
libavcodec 56. 21.102 / 56. 21.102
libavformat 56. 19.101 / 56. 19.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 10.100 / 5. 10.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
[avi @ 00000000045bd060] non-interleaved AVI
[mpeg4 @ 00000000045bde40] looks like this file was encoded with (divx4/(old)xvi d/opendivx) -> forcing low_delay flag
Input #0, avi, from 'D:\SampleFiles\sampleavifile.avi':
    Duration: 00:01:27.60, start: 0.000000, bitrate: 1064 kb/s
      Stream #0:0: Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 135 6x732 [SAR 1:1 DAR 113:61], 1059 kb/s, 20 fps, 20 tbr, 20 tbn, 100 tbc
[libx264 @ 0000000004990520] using SAR=1017/976
[libx264 @ 0000000004990520] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX 
[libx264 @ 0000000004990520] profile High, level 3.0
[mpeg @ 00000000045bb280] VBV buffer size not set, using default size of 130KB 
If you want the mpeg file to be compliant to some specification 
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'D:\SampleFiles\eFileName.mpg': 
  Metadata:
    encoder : Lavf56.19.101 
  Stream #0:0: Video: h264 (libx264), yuv420p, 640x360 [SAR 1017:976 DAR 113:6 1], q=-1--1, 1024 kb/s, 29.70 fps, 90k tbn, 29.70 tbc 
    Metadata: 
      encoder : Lavc56.21.102 libx264 
    Stream mapping: 
    Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))
Press [q] to stop, [?] for help 
[mpeg4 @ 00000000046974a0] looks like this file was encoded with (divx4/(old)xvi d/opendivx) -> forcing low_delay flag 
frame= 173 fps=0.0 q=0.0 size= 110kB time=00:00:04.07 bitrate= 221.2kbits/s 
frame= 317 fps=315 q=0.0 size= 328kB time=00:00:08.92 bitrate= 301.1kbits/s
frame= 475 fps=314 q=0.0 size= 466kB time=00:00:14.24 bitrate= 268.0kbits/s

-------- omitted some lines in between

[libx264 @ 0000000004990520] ref B L0: 45.2% 31.7% 23.2% 
[libx264 @ 0000000004990520] ref B L1: 72.3% 27.7% 
[libx264 @ 0000000004990520] kb/s:288.20

C:\Users\Sharun>
    
por Sharun 28.05.2015 / 15:20

2 respostas

1

O contêiner .mpg é para MPEG-1 & Codificação MPEG-2:

  • Se você deseja codificar h.264, use .mp4 .

  • Se você deseja criar um arquivo .mpg e depois omitir as opções do codec, o ffmpeg produzirá o MPEG-2.

por 28.05.2015 / 17:45
0

Você também não precisa de "" para qualquer coisa que não tenha espaços no caminho ou no nome do arquivo; o "" extra assumirei que você está apenas escondendo o nome do arquivo, possivelmente. Você também não precisa de nada além de:

ffmpeg.exe -i samplemovie.avi -c:v libx264 -c:a copy filename.mp4

Se você quisesse especificar a qualidade, provavelmente seria a rota do CRF, como:

ffmpeg.exe -i samplemovie.avi -c:v libx264 -preset slow -crf 23 -c:a copy filename.mp4

CRF: H264 default is 23 the lower you go the better the quality (23 works for > up to 1080p for me nicely have never had need for 4k video though)

Preset: This turns on and off certain compression and other features of the encoder. The slower preset chosen the smaller the file and longer the encode takes). Possible presets: ultrafast superfast veryfast faster fast medium(default) slow slower veryslow placebo

Você também pode usar a melodia, embora isso nunca faça muito para mim (além de talvez usar animação para desenhos animados - além disso, você geralmente pode ignorar isso sem problemas).

    
por 21.11.2016 / 17:57

Tags