transcodificação de áudio ffmpeg para MPEG-4 HE AAC em vez de AAC

2

Eu tenho um script do Automator que usa ffmpeg para encapsular novamente um arquivo de vídeo em um contêiner mp4 com seu áudio transcodificado para aac , deixando o vídeo como está.

for f in "$@"
do
    /Applications/Scriptlets/ffmpeg -i "$f" -c:v copy -c:a aac -b:a 384k -strict -2 "${f%.*}.m4v"
done

Isso funciona bem e o vídeo resultante é reproduzido bem no meu sistema, tanto no iTunes quanto no Quick Time Pro; tentei com os arquivos de origem avi e mov. No entanto, acabei de notar que os arquivos resultantes têm seu áudio codificado para MPEG-4 HE AAC em vez de simples AAC, como pretendido. Como resultado, mesmo que o arquivo seja reproduzido bem no meu Mac, não consigo reproduzi-lo na minha TV que reconhece o AAC, mas não o HE-AAC . Alguma solução alternativa usando ffmpeg? Por favor, note que eu sou não interessado em instalar outra aplicação de codificação / transcodificação para este trabalho. Eu só quero usar o ffmpeg, por isso não sugiro instalar mais nada.

TheLearner
fonte

Respostas:

2

O problema é o seu ffmpeg. Se dizer ao ffmpeg para usar o aac faz com que ele codifique no he aac, se isso for verdade, então há algo errado com o ffmpeg, porque especificar o aac nunca deve resultar no he aac. Somente dizer ao ffmpeg para codificar usando libaacplus ou libfdk_aac deve resultar em códigos aac.


Aqui está uma idéia ... crie seu próprio ffmpeg a partir do código-fonte, porque seu binário foi construído errado (se o que você está dizendo é verdade).

Você pode baixar o código-fonte do ffmpeg e construí-lo manualmente:

  git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

Mas é muito mais fácil instalá-lo usando o gerenciamento de pacotes, como macports:

MacPorts requer uma versão apropriada do xcode; xcode_5.1.1.dmg é a versão mais recente do Mavericks (após registrar-se para uma conta de desenvolvedor gratuita e fazer login no developer.apple.com, esse link iniciará o download do xcode). Após a conclusão do download, abra o Terminal.app e conclua a instalação:

 hdiutil attach -quiet -noverify -nobrowse -noautoopen ~/Downloads/xcode_5.1.1.dmg
 cp -npR /Volumes/Xcode/Xcode.app /Applications/
 hdiutil detach -quiet /Volumes/Xcode

Faça o download e construa macports:

Guia MacPorts

 curl -Ok https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2
 tar xf MacPorts-2.2.1.tar.bz2
 cd MacPorts-2.2.1
 ./configure
 make
 sudo make install     # *not war!*
 cd ..
 rm -rf Macports-*
 sudo /opt/local/bin/port -v selfupdate
 diskutil quiet repairPermissions /

adicione macports ao seu $ PATH:

 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
 export MANPATH=/opt/local/share/man:$MANPATH

construa seu ffmpeg

 sudo port -vsc install ffmpeg

você pode manter tudo atualizado simplesmente com:

 sudo port -vsc selfupdate
 sudo port -vsc upgrade installed

Se você está insatisfeito e / ou precisa remover o MacPorts:

 sudo port -dfp uninstall --follow-dependencies installed
 sudo port -dfp uninstall all
 sudo rm -rf /opt/local  
 sudo rm -rf /Library/Tcl/macports*
relaxando
fonte
Um leigo completo aqui, então eu tenho algumas perguntas, apesar de sua explicação completa: primeiro, o que é idiota? é algo que eu apenas corro no meu Terminal e o resto é resolvido pelo meu shell? Ou é algo que eu preciso instalar separadamente? Tentei abrir o link que você forneceu (git: //source.ffmpeg.org/ffmpeg.git) e, obviamente, não foi aberto no Safari. Eu já tenho o Xcode instalado no meu sistema, mas todo o processo de macports parece excessivamente complicado. Talvez porque eu esteja longe de ser conhecedor de tecnologia. :(
TheLearner
Além disso, embora eu já tenha o Xcode instalado, estou curioso sobre o método de instalação do Terminal sugerido por você (hdiutil attach -quiet -noverify -nobrowse -noautoopen ~ / Downloads / xcode_5.1.1.dmg cp -npR / Volumes / Xcode / Xcode .app / Applications / hdiutil desanexar -quiet / Volumes / Xcode). Eu instalei na minha App Store. Existe alguma vantagem em particular na rota do Terminal para instalar o Xcode?
TheLearner
1
Sim, a vantagem é que você não terá que lidar com a App Store. O git é uma maneira de "fazer check-out" de software, como verificar um livro da biblioteca. É realmente muito mais simples criar o ffmpeg usando macports, porque o macports cuidará de todas as dependências para você, fará o download e as construirá para você. Se você tentou usar esse comando git, acabou de obter a fonte ffmpeg, e a compilação falhará porque você está perdendo todas as outras fontes das dependências. Basta começar em "Download and build MacPorts". Isso não interferirá em nada e, se você não gostar, poderá remover tudo de maneira simples.
Chillin 15/05
1
Mas você vai adorar, garanto. Parece haver muitos comandos para construir uma porta, ffmpeg. Mas você terá acesso a todos os macports com um simples comando port,. Por exemplo, para construir o mediainfo, que é uma excelente ferramenta de análise de mídia, você o instala da mesma maneira: sudo port -vsc install mediainfoou para o HandBrake sudo port -vsc install handbrake; Pesquise coisas com port search somethinge retorne nomes de portas que são relevantes. Então você port info somethingobteria informações sobre isso. em seguida, sudo port -vsc install somethingconstruir a partir da fonte
Chillin
1

A página wiki do AAC Encoding Guide ffmpeg para deve ajudar.

Esta pergunta do superusuário também pode ajudar: Como usar o ffmpeg para fazer downmix 5.1 DTS HD MA ou Dolby TrueHD para AAC estéreo com o Dolby Pro Logic II?

O guia menciona vários formatos de codificação AAC suportados, mas eles podem exigir a compilação personalizada para estar presente:

O FFmpeg pode suportar quatro codificadores AAC-LC (aac, libfaac, libfdk_aac, libvo_aacenc) e dois codificadores AAC-HE (libaacplus e libfdk_aac). As licenças de libaacplus, libfaac e libfdk_aac não são compatíveis com a GPL, portanto, a GPL não permite a distribuição de binários que contêm código licenciado sob essas licenças quando o código licenciado pela GPL também está incluído. Portanto, esses codificadores foram designados como "não livres" e você não pode fazer o download de um ffmpeg pré-construído que os suporte. Isso pode ser resolvido compilando o ffmpeg você mesmo.

Existem alguns guias para criar ou obter compilações mais capazes ffmpegno seu Mac, por exemplo, Instalar o FFMPEG em um Mac . Como mencionado no artigo, acho o brew a maneira mais fácil de instalar essas ferramentas.

Graham Miln
fonte
Eu li esse trecho na página wiki do ffmpeg, mas não ajudou muito. Entendo que libfaac e libfdkaac não estão disponíveis por motivos de licenciamento, mas aac está, certo? O ffmpeg não deveria estar convertendo para aac por padrão então (quando usado com o argumento aac)? Sou um leigo absoluto nesta questão, portanto minha pergunta pode ser um pouco estúpida, pela qual peço desculpas antecipadamente.
TheLearner