Questão Como aplicar a faixa de áudio a um mudo h264 / mp4-video sem perdas?


Eu tenho um vídeo MP4 / h.264 sem som. Com ffmpeg ou similar, como posso aplicar uma faixa de áudio a esse arquivo MP4 sem degradar a qualidade do vídeo (ou seja, sem gravar a faixa de vídeo)?

Eu prefiro soluções que envolvam software livre, disponível tanto para Win7, Ubuntu ou FreeBSD.


4


origem




Respostas:


O comando correto do FFmpeg é:

ffmpeg -i video.mp4 -i audio.mp4 -map 0:0 -map 1:0 -c copy output.mp4

Isso fornecerá dois fluxos de entrada, o vídeo que você já tem e o áudio, por exemplo, de um arquivo MP4 com áudio AAC e mesclá-los usando o -map opções.

Aqui, o primeiro número em 0:0 é o arquivo de entrada (0 para o arquivo de vídeo e 1 para o ficheiro de áudio) eo segundo número é o fluxo desse ficheiro (0 já que há apenas um fluxo cada, vídeo ou áudio). Os dois fluxos serão mapeados para o arquivo de saída, portanto, primeiro vídeo e depois áudio.

Os fluxos de bits serão copiados e não recodificados usando o -c copy opção. Você pode observar isso na saída do FFmpeg:

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)

10



Doce! Especialmente bom que você explicou os argumentos e o uso do mapeamento. - poplitea
Você também pode querer -shortest se você quer que seja apenas a duração da entrada mais curta (útil se o áudio for uma música maior que o vídeo). - mark4o


Você pode usar ffmpeg para conseguir isso. Eu só estou fazendo isso na parte de trás do meu cérebro enfraquecido, mas talvez algo assim funcionasse:

ffmpeg -i movie-file.mp4 -i audio-file.mp3 -c:v copy -c:a copy output.mp4

1



É isso que estou procurando. Embora eu tenha usado ffmpeg antes, não me lembro de seus argumentos. Eu suponho que eles têm a ver com codec / format, mas o que fazer -v:c, -a:c e -an significa? - poplitea
As opções devem ser -c:v e -c:a, não -v:c e -a:c. Também com -an você desabilita a saída de áudio, então o arquivo resultante não terá áudio novamente. Se você mesclar arquivos, você terá que mapeá-los explicitamente, a menos que o FFmpeg possa adivinhar o que você deseja (por exemplo, mesclando vídeo AVI + áudio WAV) / cc @poplitea - slhck
Ooops - tenho aqueles ligados no meu cérebro. É bom aprender algo novo sobre o mapeamento. Obrigado. - thornomad


Existem alguns editores de vídeo de código aberto.

No Windows, há o Windows Movie Maker ou o Microsoft Live Movie Maker. Eu não tenho experiência com isso.

No linux, o OpenShot é bastante fácil de usar.


-1



O problema com os editores não-lineares é que eles não permitem que você faça uma cópia de bitstream com muita facilidade. Se você pudesse mostrar um exemplo de como fazer isso, seria muito útil - não sei se é factível. - slhck
Você importa seu arquivo de vídeo e seu arquivo de áudio. Então você simplesmente o arrasta para o fundo (a linha do tempo). Você faz o mesmo com o seu arquivo de áudio. Em seguida, você exporta seu projeto, selecionando as configurações desejadas. Você pode visualizá-lo antes de exportar. Não tenho certeza se é isso que você pergunta. - To Do
O que quero dizer é que, quando você exporta o projeto, a maioria dos editores recodifica os fluxos de áudio e vídeo (com base nas configurações de exportação, por exemplo, para alguns h.264 / AAC). No entanto, eles não copiarão o fluxo de bits como está. A re-codificação piora a qualidade, e o OP queria fazer uma cópia de bitstream. Você conhece algum editor que faz isso, ou o Windows Movie Maker / OpenShot pode fazer isso? - slhck
Eu usei o pitivi no Ubuntu, que tinha uma opção de saída "direc" para vídeo e áudio. Eu acho que isso simplesmente copia o formato original porque a codificação foi muito mais rápida do que com as configurações normais. Disse que Pitivi era muito instável, pelo menos naquela época (1 ano atrás). - To Do