Extraia o áudio M4A de um vídeo e associe o trabalho artístico

2

Por que no Ubuntu 12.04, quando eu extraio o áudio no M4A de um vídeo (MP4 ou FLV, etc.) com avconv :

avconv -i video.mp4 -c:a libvo_aacenc sound.m4a 

há um stream de vídeo nele, e se eu quiser apenas stream de áudio, eu tenho que adicionar a opção -vn , assim:

avconv -i video.mp4 -c:a libvo_aacenc -vn sound.m4a

Quero dizer, o M4A não é um formato de áudio?

É possível adicionar o trabalho artístico à saída de áudio?

com este comando eu posso extrair um quadro,

avconv -i vid.mp4 -vsync 1 -frames 1 -s 1024x768 -an -y image.jpeg

mas é possível associá-lo à saída de áudio? A solução é uma parte de ambos, eu acho, mas não consigo descobrir.

    
por riimzzai 08.03.2013 / 15:32

1 resposta

1

.m4a é apenas outra extensão de arquivo comumente usada para o contêiner MPEG-4 Parte 14 , geralmente chamado de MP4. O contêiner pode transportar vídeo, áudio e legendas. A extensão não altera esse fato, embora, muitas vezes, você só coloque áudio em .m4a arquivos e vídeo em .m4v arquivos.

Veja a Wikipedia para mais informações:

… since MPEG-4 Part 14 is a container format, MPEG-4 files may contain any number of audio, video, and even subtitle streams, making it impossible to determine the type of streams in an MPEG-4 file based on its filename extension alone. In response, Apple Inc. started using and popularizing the .m4a filename extension, which is used for MP4 containers with audio data in the lossy Advanced Audio Coding (AAC) or its own lossless Apple Lossless (ALAC) formats. Software capable of audio/video playback should recognize files with either .m4a or .mp4 filename extensions, as would be expected, since there are no file format differences between the two. Most software capable of creating MPEG-4 audio will allow the user to choose the filename extension of the created MPEG-4 files.

Se você quiser uma imagem estática exibida junto com o áudio, terá que convertê-la em um vídeo. Por exemplo, crie o quadro desejado e chame-o de image.png (ou image.jpg ):

avconv -i input.mp4 -frames:v 1 image.png 

Isso lhe dará o primeiro quadro do vídeo. Se você quiser um de outro timestamp, adicione a opção -ss antes de -i para pular para, por exemplo. 10 segundos: avconv -ss 10 -i … .

Então:

avconv -i input.mp4 -i image.png \
-c:v libx264 -pix_fmt yuv420p -r 1 -c:a copy -map 0:a:0 -map 1 output.mp4

Aqui, escolha x264 para codificar um vídeo da imagem estática e copie o fluxo de áudio do arquivo original. Uma taxa de quadros de -r 1 deve ser suficiente, embora você possa deixar essa parte de fora.

Com -map 0:a:0 , você seleciona o primeiro fluxo de áudio do primeiro arquivo e, com -map 1 , seleciona a imagem a ser multiplexada na saída. (O \ é apenas para escapar da nova linha.)

As opções -map funcionam bem para as versões mais recentes (e decentes) do FFmpeg - não posso falar sobre o Libav do Ubuntu. Se isso não funcionar, basta baixar o FFmpeg .

Se você quiser definir a capa do álbum para um arquivo .m4a , use AtomicParsley :

AtomicParsley input.m4a --artwork image.jpg

Isso criará um novo arquivo com a imagem incorporada como trabalho artístico, que agora é exibido corretamente na maioria dos players de mídia. Para sobrescrever o próprio arquivo de entrada, use também a opção --overWrite .

    
por 08.03.2013 / 16:19