ffmpeg falha ao gerar capturas de tela

1

Eu tenho um arquivo de vídeo e estou tentando gerar capturas de tela dele.
Quando eu uso este comando
ffmpeg -ss 500 -i video_file.mp4 -frames:v 1 -y -s 263*196 output_screenshot.jpg
uma captura de tela é gerada bem.

Quando tento com ffmpeg -ss 900 -i video_file.mp4 -frames:v 1 -y -s 263*196 output_screenshot.jpg
(então 900 em vez de 500) recebo este erro em ffmpeg -ss 900 -i video_file.mp4 -frames:v 1 -y -s 263*196 output_screenshot.jpg ffmpeg version git-2014-03-11-61f96be Copyright (c) 2000-2014 the FFmpeg developers built on Mar 11 2014 14:16:57 with gcc 4.7 (Debian 4.7.2-5) configuration: --enable-gpl --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab --enable-libdc1394 --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfdk-aac --enable-libopus --enable-libvpx --enable-libfreetype libavutil 52. 66.101 / 52. 66.101 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 34.100 / 55. 34.100 libavdevice 55. 11.100 / 55. 11.100 libavfilter 4. 3.100 / 4. 3.100 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video_file.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: mp41 creation_time : 2014-04-19 13:56:05 title : My Movie artist :
media_type : 9 season_number : 1 episode_sort : 1 hd_video : 0 Duration: 00:25:45.34, start: 0.000000, bitrate: 1242 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 1:1 DAR 3:2], 2586 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 58 tbc (default) Metadata: creation_time : 2014-04-19 13:56:05 handler_name : VideoHandler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default) Metadata: creation_time : 2014-04-19 13:56:05 handler_name : SoundHandler [swscaler @ 0x332d880] deprecated pixel format used, make sure you did set range correctly Output #0, image2, to 'output_screenshot.jpg': Metadata: major_brand : isom minor_version : 512 compatible_brands: mp41 hd_video : 0 title : My Movie artist :
media_type : 9 season_number : 1 episode_sort : 1 encoder : Lavf55.34.100 Stream #0:0(eng): Video: mjpeg, yuvj420p, 263x196 [SAR 294:263 DAR 3:2], q=2-31, 200 kb/s, 90k tbn, 29.97 tbc (default) Metadata: creation_time : 2014-04-19 13:56:05 handler_name : VideoHandler Stream mapping: Stream #0:0 -> #0:0 (h264 -> mjpeg) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
video:0kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.000000% Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

e nenhuma captura de tela é criada. Eu mencionei que o arquivo é 25min (cerca de 1500 segundos), então 900 deve ser um valor perfeitamente bom.
Alguma idéia do que poderia estar errado?

    
por Alex Flo 28.04.2014 / 07:27

1 resposta

1

Quando você não obtém um arquivo de saída, o ffmpeg provavelmente não pode procurar essa posição, ou não há informações de vídeo nessa posição.

Isso significa que o arquivo pode estar quebrado ou a duração é relatada incorretamente do contêiner.

Tente reproduzir o arquivo e veja se ele realmente funciona até 900 segundos.

    
por 29.04.2014 / 21:35