Eu tentei converter um arquivo de vídeo para um formato desejado usando o FFmpeg através do WinFF. Eu tenho demandas específicas sobre alguns aspectos do arquivo de saída, enquanto outros aspectos devem ser definidos de uma forma que dará a melhor qualidade na saída. Para esclarecer - eu quero que meu arquivo de saída seja:
- 1600 × 900
- em contêiner mkv
- usando decodificador de vídeo H.264
- usando um decodificador de áudio aac
- Proporção de 16: 9 (obviamente ...)
- mesmo volume de áudio como entrada
- 60 fps
- com nada cortado ou imagem perdendo sua proporção original.
Não necessariamente
- usando todos os 48 canais de áudio.
Qualquer outro aspecto do arquivo que não afete os listados acima deve oferecer a melhor qualidade possível. Bem, não literalmente. Eu não quero um arquivo que levaria metade do meu disco rígido, ou que levaria uma semana para converter.
De qualquer forma, este foi um pouco do que estou fazendo atualmente. Eu tentei descobrir tudo sozinho, mas o que eu fiz me deu um arquivo .mkv vazio junto com um log e um arquivo de 234,5 mb .log. [Alguma coisa]. Mais do que isso - a conversão demorou muito. Eu estava convertendo um Big Buck Bunny de 10 minutos de duração, e levou algo entre 1-2h (provavelmente). Vou converter alguns arquivos longos de 2h, então sim, um dia por arquivo seria demais ...
Aqui vai os parâmetros que usei.
1º passe:
avconv -threads 8 -i bbb_sunflower_native_60fps_normal.mp4 \
-acodec aac -vcodec h264 -b:v 50000k -r:v 60 -filter:v yadif,scale=1600:900 \
-aspect 16:9 -b:a 320k -r:a 96000 -ac 48 -vol 256 -f null -an \
-passlogfile "/home/wnerw/Wideo/bbb_sunflower_native_60fps_normal.log" \
-pass 1 -y /dev/null
2ª passagem
avconv -threads 8 -y -i bbb_sunflower_native_60fps_normal.mp4 -acodec aac \
-vcodec h264 -b:v 50000k -r:v 60 -filter:v yadif,scale=1600:900 -aspect 16:9 \
-b:a 320k -r:a 96000 -ac 48 -vol 256 \
-passlogfile "/home/wnerw/Wideo/bbb_sunflower_native_60fps_normal.log" -pass 2 \
"/home/wnerw/Wideo/bbb_sunflower_native_60fps_normal.mkv"
Eu sei, valores como 50000k e 96000 parecem loucos, mas eu só queria testar isso.
Finalmente o que estou procurando!
- O que eu fiz de errado na primeira vez?
- Quais parâmetros me darão a saída desejada?
Se alguém fosse super legal, eu realmente apreciaria dois conjuntos de parâmetros - um para uma saída melhor, mas não louca, e um para o melhor que eu poderia realmente conseguir. Eu sei que o último pode queimar minha CPU, levar um ano para processar ou ser 10 × maior do que todo o meu disco. É só pela minha curiosidade.
EDIT Aqui vai a saída do terminal do 1º Pass. Na verdade, agora eu lembrei que o segundo passe não aconteceu. Eu não posso recuperar o que estava no terminal onde as coisas falharam ao ir para a segunda passagem. Eu apenas pressionei enter e o terminal inteiro desapareceu. Eu não posso esperar pela primeira passagem para completar agora, leva muito tempo.
Saída terminal:
avconv version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
built on Aug 10 2014 18:16:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
/home/wnerw/Pobrane/bbb_sunflower_native_60fps_normal.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2013-12-24 11:10:47
title : Big Buck Bunny, Sunflower version
artist : Blender Foundation 2008, Janus Bager Kristensen 2013
comment : Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net
genre : Animation
composer : Sacha Goedegebure
Duration: 00:10:34.56, start: 0.000000, bitrate: 10487 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 4000x2250 [PAR 1:1 DAR 16:9], 10002 kb/s,
60 fps, 60 tbr, 60k tbn, 120 tbc
Metadata:
creation_time : 2013-12-24 11:10:47
Stream #0.1(und): Audio: mp3, 48000 Hz, stereo, s16p, 160 kb/s
Metadata:
creation_time : 2013-12-24 11:10:49
Stream #0.2(und): Audio: ac3, 48000 Hz, 5.1, fltp, 320 kb/s
Metadata:
creation_time : 2013-12-24 11:10:49
[libx264 @ 0x16a36e0] using SAR=1/1
[libx264 @ 0x16a36e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x16a36e0] profile Main, level 5.0
Output #0, null, to '/dev/null':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2013-12-24 11:10:47
title : Big Buck Bunny, Sunflower version
artist : Blender Foundation 2008, Janus Bager Kristensen 2013
comment : Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net
genre : Animation
composer : Sacha Goedegebure
encoder : Lavf54.20.4
Stream #0.0(und): Video: libx264, yuv420p, 1600x900 [PAR 1:1 DAR 16:9], q=-1--1, pass 1,
50000 kb/s, 90k tbn, 60 tbc
Metadata:
creation_time : 2013-12-24 11:10:47
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Press ctrl-c to stop encoding
frame= 5 fps= 0 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 13 fps= 13 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 21 fps= 13 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 29 fps= 14 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 37 fps= 14 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 45 fps= 14 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
frame= 51 fps= 14 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
EDIT2 Como sugerido, eu tentei correr com -f matroska
parâmetro. Desta vez eu também tentei fazer apenas uma passagem, pois achei que a segunda era muito demorada.
Aqui está um comando que eu usei para converter:
avconv -threads 8 -y -i bbb_sunflower_native_60fps_normal.mp4
-acodec aac -vcodec h264 -f matroska -b:v 10000k -r:v 60
-filter:v yadif,scale=1600:900 -aspect 16:9 -b:a 320k r:a 96000
-ac 48 -vol 256 "bbb_sunflower_native_60fps_normal.mkv"
Mas, infelizmente, o terminal fecha assim que eu pressiono enter para confirmar a saída do avconv. Eu tentei o mesmo comando, só sem -f matroska
mas eu não ajudei. A mesma coisa aconteceu.
Aqui está o que foi a saída avconv:
avconv version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
built on Aug 10 2014 18:16:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'bbb_sunflower_native_60fps_normal.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2013-12-24 11:10:47
title : Big Buck Bunny, Sunflower version
artist : Blender Foundation 2008, Janus Bager Kristensen 2013
comment : Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net
genre : Animation
composer : Sacha Goedegebure
Duration: 00:10:34.56, start: 0.000000, bitrate: 10487 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 4000x2250 [PAR 1:1 DAR 16:9], 10002 kb/s,
60 fps, 60 tbr, 60k tbn, 120 tbc
Metadata:
creation_time : 2013-12-24 11:10:47
Stream #0.1(und): Audio: mp3, 48000 Hz, stereo, s16p, 160 kb/s
Metadata:
creation_time : 2013-12-24 11:10:49
Stream #0.2(und): Audio: ac3, 48000 Hz, 5.1, fltp, 320 kb/s
Metadata:
creation_time : 2013-12-24 11:10:49
[libx264 @ 0xe96580] using SAR=1/1
[libx264 @ 0xe96580] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0xe96580] profile High, level 4.2
[libx264 @ 0xe96580] 264 - core 142 r2389 956c8d8 - 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=12 lookahead_threads=2 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=abr mbtree=1 bitrate=10000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69
qpstep=4 ip_ratio=1.25 aq=1:1.00
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it.
Press ENTER to continue...
-f null
, o que basicamente significa "saída nada". Experimentar -f mp4
em vez de. De onde você tirou o primeiro comando?
-f mkv
? Eu quero meu vídeo para usar o contêiner mkv ...
-f matroska
para saída MKV. Meu entendimento é que -f null
diz ao ffmpeg / avconv para não gerar nada, o que explicaria o problema. Você pode tentar com um comando atualizado?
-c:a aac
necessidades-strict experimental
tanto quanto eu sei (pelo menos para ffmpeg faz). Eu provavelmente posso postar uma resposta uma vez que vi a saída. Obrigado.