Estou procurando uma maneira de converter um filme em 3D para um filme em 2D.
Encontrei uma referência neste fórum. http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html
Estou procurando uma maneira de converter um filme em 3D para um filme em 2D.
Encontrei uma referência neste fórum. http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html
Respostas:
Embora você possa conseguir isso usando manualmente o filtro de corte do ffmpeg , o filtro stereo3d foi projetado especificamente para essa finalidade. Você não especificou o formato 3d exato que possui. Existem várias possibilidades, conforme documentado no link stereo3d acima. Supondo que esse input.mkv
é o sbsl relativamente comum (olho esquerdo lado a lado à esquerda),
ffmpeg -i input.mkv -vf stereo3d=sbsl:ml -metadata:s:v:0 stereo_mode="mono" output.mkv
resultará em 2d (somente olho esquerdo) output.mkv
. Acredito que o motivo -metadata:s:v:0 stereo_mode="mono"
necessário para remover a marca estéreo seja porque os metadados não são canalizados pelo sistema de filtros e, por outro lado, o ffmpeg tenta duplicar os metadados do original. Se você não fizer isso, alguns jogadores podem pensar que seu resultado 2D ainda é 3D e fazem coisas estranhas.
Se você achar que o resultado possui a proporção incorreta, experimente usar o stereo3d=sbsl2:ml
que trata a entrada como meia largura lado a lado. Se tudo mais falhar, você pode definir o aspecto correto com -aspect 16:9
(ou o que você sabe que a proporção correta).
stereo3d=<input-format>:<output-format>
. De acordo com a documentação vinculada, ml
significa gerar "saída mono (somente olho esquerdo)".
-metadata:s:v:0 stereo_mode="mono"
com o ffmpeg 2.8.14. Parece que a documentação pode ter sido alterada desde que você escreveu esta resposta. Simplesmente remover as opções mencionadas acima permitiu ao ffmpeg continuar sem erros. Observe que você pode evitar a recodificação do fluxo de áudio utilizando o -c:a copy
switch.
Encontrei uma referência neste fórum. http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html
ffmpeg -i './a3dmovie.mp4' -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2" -y ./a2dmovie.mp4
A parte importante é a -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"
Essencialmente, reduz pela metade a saída e redimensiona conforme apropriado para o vídeo 3d.
Achei que isso também é útil para testar e verificar a saída
ffplay -i ./some3dmovie.mp4 -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"
Você pode mover o índice para a frente do arquivo da seguinte maneira
-movflags faststart