Atualmente, estou tentando combinar vários vídeos de dispositivos diferentes em um vídeo. A configuração é a seguinte:
- O usuário registra três vídeos em um telefone (android ou iOs)
- O sistema envia estes vídeos (formato mp4) para o nosso servidor
- O servidor move os arquivos e os transforma em arquivos TS (por que? porque achamos que seria bom formatar cada vídeo para esse formato)
Após esses passos, gostaríamos de combiná-lo com 4 dos nossos vídeos. Isso significaria que, chamando nossos vídeos de 'ov', as etapas combinadas finais seriam:
ov1 > sent video 1 > ov2 > sent video 2 > ov3 > sent video 3 > ov4
Isso traz alguns problemas. Nós temos formatado cada vídeo para os mesmos formatos, mesmos canais de áudio e com tantas linhas (a única coisa que muda é o nome do arquivo)
avconv -ss 0 -i "48_0.85825500-14815530815710.mp4" -vcodec libx264 -acodec aac -bsf:a aac_adtstoasc -bsf:v h264_mp4toannexb -f mpegts -strict experimental -y "tmp_48_0.ts"
Isso significa, no que nos diz respeito, que cada vídeo será compilado no mesmo formato de vídeo (h264_mp4toannexb) e áudio (aac_adtstoasc). Ao combinar esses vídeos assim, o áudio desyncs:
avconv -i concat:"2connect-ae.ts|tmp_48_1.ts" -c copy -bsf:a aac_adtstoasc -bsf:v h264_mp4toannexb -y "output.mp4"
Estamos tentando mudar a maneira como compactamos / compile / transformamos vídeos de diferentes maneiras, de diferentes fontes, mas não tivemos sucesso. Temos 4 arquivos .wov exportados do Final Cut Pro e do Adobe After Effects. Mudar nossas ferramentas não funcionou.
De alguma forma, o som de nossos vídeos (ov1, ov2, ov3, ov4) está sobreposto nos vídeos enviados pelo usuário, resultando em um atraso de som que continua aumentando a cada segundo. Nós somos um tipo de mente explodida porque isso continua ocorrendo, qualquer ajuda seria muito apreciada.
Se estivermos anexando os vídeos enviados uns aos outros, não haverá atrasos. Se adicionarmos qualquer vídeo de nós mesmos à lista, ele começa a atrasar o áudio. Se você gostaria de ter mais algumas informações, por favor me avise.
Informações sobre nossas versões:
avconv version 9.11-6:9.11-2ubuntu2, Copyright (c) 2000-2013 the Libav developers
built on Mar 24 2014 06:12:33 with gcc 4.8 (Ubuntu 4.8.2-17ubuntu1)
avconv 9.11-6:9.11-2ubuntu2
libavutil 52. 3. 0 / 52. 3. 0
libavcodec 54. 35. 0 / 54. 35. 0
libavformat 54. 20. 3 / 54. 20. 4
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 3. 3. 0 / 3. 3. 0
libavresample 1. 0. 1 / 1. 0. 1
libswscale 2. 1. 1 / 2. 1. 1
Editar para os comentários fornecidos:
Atualmente, estamos tentando transformar todos os vídeos nas mesmas dimensões usando a opção ths:
-filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2'
Cada vídeo é transformado em 1920x1080. Também estamos tentando tirar todas as opções que temos e construir nosso caminho de volta para o que tivemos que ver onde deu errado. Mas isso parece ser um passo enorme e também desesperado.
edit2
Estes são os comandos que estamos executando atualmente:
avconv -i "33_0.98002500-14821542538733.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_0.ts"
avconv -i "33_0.57471800-14821542544448.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_1.ts"
avconv -i "33_0.27939600-14821542541226.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_2.ts"
avconv -i "templates/v2/wiebenik-v2.mov" -f mpegts "wiebenik-v5.ts"
avconv -i "templates/v2/ikkanjehelpenmet-v2.mov" -f mpegts "ikkanjehelpenmet-v5.ts"
avconv -i "templates/v2/ikbenopzoeknaar-v2.mov" -f mpegts "ikbenopzoeknaar-v5.ts"
avconv -i concat:"wiebenik-v5.ts|tmp_ruud_0.ts|ikkanjehelpenmet-v5.ts|tmp_ruud_1.ts|ikbenopzoeknaar-v5.ts|tmp_ruud_2.ts" -strict experimental "test.mp4"
Editar 3; No momento, estou convertendo todos os arquivos e alterando seu tamanho para os mesmos formatos, além de normalizá-los, conforme mostrado aqui:
avconv -i "public/videos/44_0.90768300-14822311688474.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_0.mp4"
avconv -i public/videos/tmp_44_0.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_0_normalized.mp4
avconv -i "public/videos/44_0.09416600-14822311719723.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_1.mp4"
avconv -i public/videos/tmp_44_1.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_1_normalized.mp4
avconv -i "public/videos/44_0.37376500-14822311735955.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_2.mp4"
avconv -i public/videos/tmp_44_2.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_2_normalized.mp4
Depois dessas mudanças, estou combinando-as assim:
MP4Box public/videos/templates/v2/wiebenik-v2.mp4 -cat public/videos/tmp_44_0_normalized.mp4 -cat public/videos/templates/v2/ikkanjehelpenmet-v2.mp4 -cat public/videos/tmp_44_1_normalized.mp4 -cat public/videos/templates/v2/ikbenopzoeknaar-v2.mp4 -cat public/videos/tmp_44_2_normalized.mp4 -cat public/videos/templates/v2/2connect-v2.mp4 -out public/pitches/44_9b374c31dcaa7433daf0f5163a3789dc.mp4
Mas de alguma forma, mesmo com apenas 2 arquivos, estou recebendo o erro:
Cannot concatenate files: Different AVC Level Indication between source (42) and destination (40)
Acontece que meus arquivos têm uma versão diferente da alta qualidade (4 e 4,2), não sei como resolver isso ainda.