Estou usando o FFMPEG para codificar submarinos em um vídeo. Depois de ler muitos posts sobre a melhor abordagem e usar mkv ou mp4, mas ainda não sou o mais sábio. O código abaixo usa um arquivo mp4. As legendas parecem ser processadas, a julgar pela saída, mas o tamanho 0kb parece mostrar que nada é realmente renderizado, e o arquivo de saída possui áudio e vídeo, mas sem legendas.
Os metadados no VLC mostram que um arquivo de legenda está presente - mas vazio.
Aqui está um exemplo do meu arquivo SRT (não colocar uma linha vazia em 1 gera uma mensagem de erro de entrada):
1
00:00:00,000 --> 00:00:00,001
2
00:00:00,001 –-> 00:00:04,761
He drives to school every morning
3
00:00:04,761 –-> 00:00:13,061
Cause love comes slow and it goes so fast
Meu código de linha de comando é:
`ffmpeg -i #{inputfile} -i #{srt_file} -filter_complex "[0:v][1:s]overlay" #{outputfile} -y`
Eu também tentei:
`ffmpeg -i #{inputfile} -i #{srt_file} -c:v libx264 -preset ultrafast \
-c:s mov_text -map 0 -map 1 #{outputfile}`
E a resposta:
ffmpeg version 2.5.4 Copyright (c) 2000-2015 the FFmpeg developers
built on Feb 25 2015 15:52:19 with Apple LLVM version 6.0 (clang-600.0.54)
(based on LLVM3.5svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.5.4 --enable-shared --enable-pthreads
--enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --
host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc
--enable-libxvid --enable-libass --enable-vda
libavutil 54. 15.100 / 54. 15.100
libavcodec 56. 13.100 / 56. 13.100
libavformat 56. 15.102 / 56. 15.102
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/Users/JW/Dropbox/T10/SBRI/_code/videos_final/3rd person present tense (303).mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.15.102
Duration: 00:00:43.17, start: 0.036281, bitrate: 862 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x406 [SAR 406:405 DAR
16:9], 732 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
(default)
Metadata:
handler_name : SoundHandler
Input #1, srt, from '/Users/JW/Dropbox/T10/SBRI/_code/subs/3rd person present tense (303)/srt_file.srt':
Duration: N/A, bitrate: N/A
Stream #1:0: Subtitle: subrip
[srt @ 0x7fd082005c00] sub2video: using 720x576 canvas
[libx264 @ 0x7fd082801200] using SAR=406/405
[libx264 @ 0x7fd082801200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7fd082801200] profile High, level 3.0
[libx264 @ 0x7fd082801200] 264 - core 142 r2495 6a301b6 - H.264/MPEG-4 AVC codec - Copyleft
2003-2014 - 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=23 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 '/Users/JW/Dropbox/T10/SBRI/_code/videos_final/3rd person present tense
(303)_subs.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.15.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x406 [SAR 406:405
DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
Metadata:
encoder : Lavc56.13.100 libx264
Stream #0:1(und): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100 Hz, stereo,
s16, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc56.13.100 libvo_aacenc
Stream mapping:
Stream #0:0 (h264) -> overlay:main (graph 0)
Stream #1:0 (srt) -> overlay:overlay (graph 0)
overlay (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac (native) -> aac (libvo_aacenc))
Press [q] to stop, [?] for help
sub2video: non-bitmap subtitle
frame= 1029 fps= 71 q=-1.0 Lsize= 4319kB time=00:00:43.17 bitrate= 819.6kbits/s
video:3612kB audio:675kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead:
0.751962%
[libx264 @ 0x7fd082801200] frame I:44 Avg QP:17.59 size: 16172
[libx264 @ 0x7fd082801200] frame P:495 Avg QP:22.62 size: 5016
[libx264 @ 0x7fd082801200] frame B:490 Avg QP:23.28 size: 1027
[libx264 @ 0x7fd082801200] consecutive B-frames: 24.2% 34.4% 7.6% 33.8%
[libx264 @ 0x7fd082801200] mb I I16..4: 27.2% 43.8% 28.9%
[libx264 @ 0x7fd082801200] mb P I16..4: 5.9% 14.8% 2.9% P16..4: 31.1% 10.7% 4.3% 0.0%
0.0% skip:30.3%
[libx264 @ 0x7fd082801200] mb B I16..4: 0.2% 0.5% 0.2% B16..8: 26.2% 3.3% 0.6%
direct: 1.1% skip:67.8% L0:40.7% L1:52.4% BI: 6.9%
[libx264 @ 0x7fd082801200] 8x8 transform intra:57.6% inter:72.8%
[libx264 @ 0x7fd082801200] coded y,uvDC,uvAC intra: 41.3% 60.2% 22.0% inter: 9.1% 14.5% 0.6%
[libx264 @ 0x7fd082801200] i16 v,h,dc,p: 41% 25% 11% 22%
[libx264 @ 0x7fd082801200] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 20% 23% 4% 5% 6% 5% 5% 4%
[libx264 @ 0x7fd082801200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 20% 12% 5% 8% 9% 7% 6% 4%
[libx264 @ 0x7fd082801200] i8c dc,h,v,p: 53% 20% 21% 6%
[libx264 @ 0x7fd082801200] Weighted P-Frames: Y:14.1% UV:9.9%
[libx264 @ 0x7fd082801200] ref P L0: 68.6% 14.5% 12.3% 4.2% 0.4%
[libx264 @ 0x7fd082801200] ref B L0: 91.7% 7.5% 0.8%
[libx264 @ 0x7fd082801200] ref B L1: 98.4% 1.6%
[libx264 @ 0x7fd082801200] kb/s:689.28
O que estou fazendo errado?
você precisa de um arquivo de configuração de fonte, a saber:
C: \ WINDOWS \ Fonts
monoespaço mono
sans-serif serif monoespaço sans-serif
Horários Times New Roman serifa Helvetica Arial sans Courier Courier New monospace serif Times New Roman sans Arial monospace Andial Mono Courier New monospace Courier monospace
salve como fonts.xml no diretório bin ffmpeg e consulte-o em seu lote / cml como
set FONTCONFIG_FILE = fonts.xml set FONTCONFIG_PATH = C: \ Arquivos de programas \ ffmpeg \ bin
fonte