Resumo: Tenho um filme antigo que baixei do YouTube há alguns anos e salvei como flv. Quero extrair dele um clipe de 13 minutos. Para isso, usei o ffmpeg para convertê-lo para mp4 para poder carregá-lo no DaVinci, de onde extraí o clipe. Então usei o Handbrake para compactá-lo. Mas quando fiz isso, o HandBrake reduziu significativamente o tamanho do quadro e o clipe compactado ficou um pouco desfocado em comparação com o original.
Por que o HandBrake está forçando essa redução no tamanho do quadro e como posso fazer com que ele produza no tamanho de quadro correto?
Detalhes:
O arquivo flv tem 268 MB, duração de 107 minutos, tamanho do quadro 318x240, taxa de quadros 25:
O comando ffmpeg que usei para converter para mp4:
ffmpeg -i input.flv -c copy output.mp4
Isso demorou cerca de um segundo. O resultado é 264 MB:
Carreguei isso no DaVinci, extraí o clipe e renderizei como mp4, H.265, 318x240, 25 fps:
O resultado disso é 51,4 MB, 13:19 mm:ss. MediaInfo relata que é HEVC, o que eu entendo significa que está em H.265, conforme solicitei:
A relação tamanho/tempo é muito maior do que a do filme completo:
- Filme: 264 MB/107 minutos = 2,5 MB/min.
- Clipe: 51,4 MB / 13,33 min. = 3,9MB/min.
Quando carrego o clipe no HandBrake, ele me diz que a fonte é 318x240, 25 fps. Mesmo estando em H.265, o HandBrake me diz que está em H.264. Então o HandBrake também contradiz as informações de origem, dizendo em "Trilhas" que são 30 fps e que o tamanho é 234x174.
========================
Na aba “Vídeo” do Handbrake, o codificador aparece como H.264 e a taxa de quadros como 30. O RF é 22:
========================
Eu mudei isso para 265 e 25:
========================
A aba "Dimensões" diz novamente que o tamanho é 318x240, mas depois diz que:
O tamanho dimensionado e o tamanho final de armazenamento são 234x174. Tentei clicar em várias coisas e não consigo alterar o tamanho da saída.
========================
Quando executo isso, a saída é de 22 MB, o que é uma boa redução no tamanho do arquivo:
- Clipe compactado: 22 MB / 13,33 min. = 1,7MB/min.
Mas o tamanho do quadro é 234x174:
O vídeo está um pouco desfocado em comparação com o original, o que parece poder ser causado pelo tamanho reduzido do quadro.
Clipe renderizado por DaVinci.
Isso pode dar uma pista para o problema. A imagem ocupa menos que toda a janela do player. O DaVinci reduziu a escala do vídeo?
Clipe compactado pelo HandBrake:
Por que o HandBrake está forçando essa redução no tamanho do quadro e como posso fazer com que ele produza no tamanho de quadro correto?
Edit from the questioner: I've accepted this answer because it gave me what I needed. But see further details in the additional answer that I've also given.
It may be helpful to remember that Handbrake is largely a skin for FFMPEG with some relatively user-friendly presets. Your process is currently going FFMPEG > DaVinci > FFMPEG, without any real reason we can see for the additional steps. So skip all of the intermediary steps and just use FFMPEG to clip the video. Here's another question that may cover the basics of your need: https://stackoverflow.com/questions/21420296/how-to-extract-time-accurate-video-segments-with-ffmpeg
Specify the clip start time with
-ss 00:00:00
and the end with-to 00:00:00
. Like this example from the question I've linked just above:Doing this you're removing all the possibility of issues caused by the multiple steps you're currently using.
I'm accepting the answer by "music2myear" because it gave me what I needed. But for some reason, it assumed I didn't care about the size of the output file. But I do care about that, which is the reason I was running HandBrake.
So I changed the
codec
parameter in that answer. Here is a summary of my results:Clip from DaVinci in H.265: 51.4 MB
DaVinci clip then HandBrake: 22.0 MB (blurry)
Clip from FFmpeg with
-codec copy
: 29.5 MBClip from FFmpeg with
-codec:v hevc -codec:a copy
: 15.2 MBBoth FFmpeg results appear to have good quality. The one with codec
copy
took about a second, the one withhevc
, about a minute.The result from mFFmpeg with codec
hevc
gave a very nice reduction in file size:hevc
: 15,2 MB / 13,33 min = 1,1 MB/min.Portanto, não tenho uma resposta para o motivo pelo qual o HandBrake (ou a combinação de DaVinci e HandBrake) estava reduzindo o tamanho do quadro. Mas eu tenho uma resposta sobre como obter uma saída de boa qualidade com o tamanho de quadro correto (e um tamanho de arquivo eficiente), que é usar o FFmpeg diretamente .
This is a work-around, rather than an exact answer: do the whole process in a single step using a GUI that gives complete control of how the output is saved.
Two free, open source, video editors, Shotcut and OpenShot (both available in Linux, and Mac, as well as Windows versions, and both Windows app run under wine, too, on this Ubuntu machine), for example, can open FLV video files, edit them, and save the edited output in various formats and with adjustable resolution and quality. There are many alternative video editors, too.
The screenshot above is from the OpenShot Export Video dialog, and ShotCut offers even more granular control of output. One selects the segments to edit, applies filters such as Sharpen, if desired, and exports with color gamut (e.g., Broadcast, MPEG or JPEG), resolution, frame rate, compression, etc. under user control, all with a single tool. Neither program is intimidating to use, since reasonable defaults are preset.