ffmpeg - duração diferente de entrada e saída

5

Eu tenho um problema de duração estranho ao converter vídeos de mp4 para flv. Também há um "start_time" diferente, o que é isso? O que significa start_time?

input duration - 0:00:29.577000
input start_time - 0:00:00.000000

output duration - 0:00:51.518000
output start_time - 0:00:21.840000

Comando ffmpeg:

ffmpeg -y -i 18579-1386758783533.mp4 -c:a libfdk_aac -b:a 128k -ar 22050 -c:v libx264 -pix_fmt yuv420p -s 1920x1080 -framerate 30 v18579-1386758783533.flv

FFprobe - arquivo de entrada:

dead@dead-work-desktop:~/36369/wowzaoutput$ ffprobe 18579-1386758783533.mp4 
ffprobe version git-2013-11-29-0d640c0 Copyright (c) 2007-2013 the FFmpeg developers
  built on Nov 29 2013 11:54:34 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libopus --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
  libavutil      52. 55.100 / 52. 55.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.102 / 55. 21.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 91.100 /  3. 91.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x39cb280] decoding for stream 0 failed
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '18579-1386758783533.mp4':
  Metadata:
    major_brand     : f4v 
    minor_version   : 0
    compatible_brands: isommp42m4v 
    creation_time   : 2013-12-11 10:46:22
  Duration: 00:00:29.58, start: 0.000000, bitrate: 134 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 640x360 [SAR 1:1 DAR 16:9], 121 kb/s, 6.53 fps, 30 tbr, 90k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro
    Stream #0:1(eng): Audio: speex (spex / 0x78657073), 16000 Hz, mono, s16, 11 kb/s (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro

FFprobe - arquivo de saída:

dead@dead-work-desktop:~/36369/wowzaoutput$ ffprobe v18579-1386758783533.flv
ffprobe version git-2013-11-29-0d640c0 Copyright (c) 2007-2013 the FFmpeg developers
  built on Nov 29 2013 11:54:34 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libopus --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
  libavutil      52. 55.100 / 52. 55.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.102 / 55. 21.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 91.100 /  3. 91.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, flv, from 'v18579-1386758783533.flv':
  Metadata:
    major_brand     : f4v 
    minor_version   : 0
    compatible_brands: isommp42m4v 
    encoder         : Lavf55.21.100
  Duration: 00:00:51.52, start: 21.840000, bitrate: 366 kb/s
    Stream #0:0: Video: h264 (High), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 30.33 tbr, 1k tbn, 60 tbc
    Stream #0:1: Audio: aac, 22050 Hz, mono, fltp, 128 kb/s

Saída completa da linha de comando ffmpeg:

dead@dead-work-desktop:~/36369/wowzaoutput$ ffmpeg -y -i 18579-1386758783533.mp4 -c:a libfdk_aac -b:a 128k -ar 22050 -c:v libx264 -pix_fmt yuv420p -s 1920x1080 -framerate 30 1v18579-1386758783533.flv
ffmpeg version git-2013-11-29-0d640c0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Nov 29 2013 11:54:34 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libopus --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
  libavutil      52. 55.100 / 52. 55.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.102 / 55. 21.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 91.100 /  3. 91.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x29f3b00] decoding for stream 0 failed
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '18579-1386758783533.mp4':
  Metadata:
    major_brand     : f4v 
    minor_version   : 0
    compatible_brands: isommp42m4v 
    creation_time   : 2013-12-11 10:46:22
  Duration: 00:00:29.58, start: 0.000000, bitrate: 134 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 640x360 [SAR 1:1 DAR 16:9], 121 kb/s, 6.53 fps, 30 tbr, 90k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro
    Stream #0:1(eng): Audio: speex (spex / 0x78657073), 16000 Hz, mono, s16, 11 kb/s (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro
[libx264 @ 0x29f8f60] using SAR=1/1
[libx264 @ 0x29f8f60] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x29f8f60] profile High, level 4.0
[libx264 @ 0x29f8f60] 264 - core 140 r2 1ca7bb9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - 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=6 lookahead_threads=1 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, flv, to '1v18579-1386758783533.flv':
  Metadata:
    major_brand     : f4v 
    minor_version   : 0
    compatible_brands: isommp42m4v 
    encoder         : Lavf55.21.102
    Stream #0:0(eng): Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 1k tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro
    Stream #0:1(eng): Audio: aac (libfdk_aac) ([10][0][0][0] / 0x000A), 22050 Hz, mono, s16, 128 kb/s (default)
    Metadata:
      creation_time   : 2013-12-11 10:46:22
      handler_name    : WowzaMediaServerPro
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (libspeex -> libfdk_aac)
Press [q] to stop, [?] for help
frame=  193 fps= 16 q=-1.0 Lsize=    2300kB time=00:00:29.60 bitrate= 636.4kbits/s    
video:1821kB audio:464kB subtitle:0 global headers:0kB muxing overhead 0.648628%
[libx264 @ 0x29f8f60] frame I:3     Avg QP:15.65  size: 31001
[libx264 @ 0x29f8f60] frame P:110   Avg QP:22.60  size: 12905
[libx264 @ 0x29f8f60] frame B:80    Avg QP:25.85  size:  4399
[libx264 @ 0x29f8f60] consecutive B-frames: 24.9% 56.0% 10.9%  8.3%
[libx264 @ 0x29f8f60] mb I  I16..4: 17.6% 76.5%  5.9%
[libx264 @ 0x29f8f60] mb P  I16..4:  6.9% 17.2%  0.2%  P16..4: 22.4%  3.4%  1.2%  0.0%  0.0%    skip:48.7%
[libx264 @ 0x29f8f60] mb B  I16..4:  0.4%  0.5%  0.0%  B16..8: 22.2%  1.0%  0.1%  direct: 1.4%  skip:74.3%  L0:45.4% L1:52.8% BI: 1.8%
[libx264 @ 0x29f8f60] 8x8 transform intra:71.0% inter:91.3%
[libx264 @ 0x29f8f60] coded y,uvDC,uvAC intra: 16.3% 19.8% 0.9% inter: 4.7% 7.2% 0.0%
[libx264 @ 0x29f8f60] i16 v,h,dc,p: 23% 17%  5% 54%
[libx264 @ 0x29f8f60] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 51% 14% 22%  2%  2%  2%  2%  3%  1%
[libx264 @ 0x29f8f60] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 48% 18% 12%  3%  7%  4%  3%  3%  1%
[libx264 @ 0x29f8f60] i8c dc,h,v,p: 69% 13% 17%  2%
[libx264 @ 0x29f8f60] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x29f8f60] ref P L0: 75.4%  4.7% 14.1%  5.8%
[libx264 @ 0x29f8f60] ref B L0: 88.6% 10.9%  0.5%
[libx264 @ 0x29f8f60] ref B L1: 98.2%  1.8%
[libx264 @ 0x29f8f60] kb/s:504.48

Link do arquivo de entrada

Andrew Surzhynskyi
fonte
1
Você pode mostrar a saída completa da linha de comando da conversão real?
slhck
Certo. Adicionei-o à minha pergunta
Andrew Surzhynskyi
Você pode fornecer arquivo de entrada? Colocá-lo na hospedagem de arquivos ou algo assim?
ptQa
Link do arquivo de entrada adicionado à pergunta.
Andrew Surzhynskyi
bem, esse arquivo não pode ser reproduzido com ffplay ou vlc, o ffmpeg diz: [mov, mp4, m4a, 3gp, 3g2, mj2 @ 0xe7f200] decodificação do fluxo 0 falhou Onde você conseguiu essa entrada?
ptQa

Respostas:

2

Fiz o download do seu exemplo de vídeo .mp4 e ele é muito ruim, a menos que eu mude o tipo de arquivo para .f4v. O vídeo permanece congelado por algum tempo enquanto o som é reproduzido. Após cerca de 21 segundos, o vídeo começa a se mover e sincroniza com o som.

Parece-me que a má conversão obtida reflete apenas o estado real do seu vídeo.

Observo que a diferença de output duration - output start_timeé a mesma antes e depois da conversão, pelo que parece que o ffmpeg apenas refletiu na sua conversão o problema de apresentação existente encontrado no início deste vídeo.

Eu sugiro que você encontre outro método de gravação na sua webcam, porque evidentemente o seu método e software atuais geram arquivos de vídeo inválidos. Também acho estranho que o arquivo .mp4 seja codificado usando o codec Flash de f4v.

harrymc
fonte
Observei o mesmo sobre a duração da saída - output start_time. Este não é apenas um vídeo da minha webcam, é apenas por exemplo. Este vídeo foi gravado pelo Wowza Media Server, mas não consigo encontrar uma tag para o servidor de mídia Wowza aqui, no Superusuário.
Andrew Surzhynskyi
Não conheço o Wowza, mas este exemplo de vídeo tem um problema no início. Se nem todos os vídeos gerados pelo Wowza forem assim, você precisará postar um que seja reproduzido corretamente, mas ainda tenha um problema de saída start_time após o ffmpeg. Meu palpite é que não há um.
precisa
Sim, você está certo, não há um.
Andrew Surzhynskyi