
O que é o método de extração Micro-720p? Quero extrair de 720p usando ffmpeg e libx264.
Exemplo de informações de vídeo m720p (não conheço a fonte do vídeo):
General
Complete name : D:\m720p.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 596 MiB
Duration : 1h 16mn
Overall bit rate mode : Variable
Overall bit rate : 1 096 Kbps
Encoded date : UTC 2013-02-05 23:44:15
Tagged date : UTC 2013-02-05 23:44:15
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings, CABAC : Yes
Format settings, ReFrames : 9 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1h 16mn
Bit rate : 1 003 Kbps
Maximum bit rate : 3 982 Kbps
Width : 1 280 pixels
Height : 688 pixels
Display aspect ratio : 1.85:1
Frame rate mode : Constant
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.048
Stream size : 542 MiB (91%)
Writing library : x264 core 129 r2230 1cffe9f
Encoding settings : cabac=1 / ref=9 / 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=8 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=1003 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
Encoded date : UTC 2013-02-05 23:44:15
Tagged date : UTC 2013-02-05 23:44:24
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 1h 16mn
Bit rate mode : Variable
Bit rate : 96.0 Kbps
Maximum bit rate : 130 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 52.2 MiB (9%)
Language : English
Encoded date : UTC 2013-02-05 23:44:22
Tagged date : UTC 2013-02-05 23:44:24
Responder1
Slhck está certo ao dizer que Micro-720p é o tipo de lançamento de alguma equipe de filmes piratas.
AFAIK, essa equipe está usando algumas configurações de codificação x264 para arquivar taxas de bits baixas com qualidade aceitável. Você pode obter o que eles usaram nesta linha
Encoding settings : cabac=1 / ref=9 / 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=8 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=1003 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
As configurações mais importantes para taxas de bits baixas são: ref=9 subme=7 bframes=8
e deblock pode ser alterado por -tune film|animation|grain
Aliás, se você deseja transcodificar o áudio para aac com ffmpeg, você deve usar lib_fdkaac, um codec muito melhor que o libfaac. Apenas tente obter/compilar um novo ffmpeg com lib_fdcaac.
Você pode tentar alguma configuração extrema com
ffmpeg -i 720p.mkv \
-c:v libx264 -crf 22 -preset slower -x264opts subme=11:ref=16:bframes=16 -tune film \
-c:a libfdk_aac -ac 2 -flags +qscale -global_quality 2 -afterburner 1 \
m720p.mp4
que eu sei que dão bons resultados, mas as taxas de bits de vídeo seriam de cerca de 1400 ~ 1600 Kbps.
Responder2
Acho que acabei descobrindo de onde vem esse termo - é umtipo de lançamento de filme pirata. Ele descreve um filme em 720p (portanto, redimensionado para 1280 × 720 pixels), mas com uma taxa de bits menor do que a que você normalmente precisa.
Isso realmente não é ciência de foguetes aqui. Calculando a partir dessas diretrizes, a taxa de bits normal para uma cópia de Blu-ray de 720p seria em torno de 4,5 MBit/s. Umguia de cena que encontreitambém usa 4 MBit/s para codificação x264. Portanto, para obter uma extração “micro” ou “mini” de 720p, você deve especificar uma taxa de bits mais baixa.
Vocêpoderiafaça algo assim:
ffmpeg -i in.mp4 -c:v libx264 -b:v 1M -c:a libfaac -q:a 100 out.mp4
Infelizmente, o modo de codificação de taxa de bits constante padrão em x264 é considerado muito ruim em termos de qualidade. Idealmente, você deve fazer uma codificação em duas passagens, se tiver tempo. Aqui está um exemplo com 1 MBit/s:
ffmpeg -y -i in.mp4 -c:v libx264 -preset slow -b:v 1M -pass 1 -an -f mp4 /dev/null
ffmpeg -i in.mp4 -c:v libx264 -preset slow -b:v 1M -pass 2 -c:a libfaac -q:a 100 out.mp4
Você pode alterar a predefinição de slow
para ultraslow
, ou na direção oposta para medium
, fast
, ultrafast
. Escolher uma predefinição mais lenta proporciona melhor compactação ao custo de ter que esperar mais. Melhor compactação significa que o vídeo ficará melhor com o mesmo tamanho de arquivo.
Observe que se o seu arquivo original já contém um fluxo de áudio válido para MP4 (geralmente áudio AAC ou MP3), você pode pular a -c:a libfaac -q:a 100
parte e simplesmente copiar o fluxo de bits com -c:a copy
.