Middleware: executar um transcodificador para transformação de mídia

Desde a versão 4.1.0, nosso Middleware permite processar cada mídia baixada por meio de um comando definido pelo usuário. Isso permite que você transforme os arquivos baixados para torná-los compatíveis com o seu sistema.

Por exemplo, usando este recurso, você pode usar uma ferramenta como ffmpeg ou ImageMagick para transcodificar imagens, áudios e vídeos.

Como configurar

Você precisa editar o arquivo env.xml de seu Middleware. Para fazer isso, encontre a seção de transcodificadores que se parece com isto:

 <New class = "org.eclipse.jetty.plus.jndi.Resource">
<Arg> </Arg>
<Arg> transcodificadores </Arg>
<Arg> <! [CDATA [
]]> </Arg>
</Novo>
Se estiver atualizando de uma versão anterior, você pode editar seu env.xml atual e adicionar a seção.
Dentro dos colchetes CDATA, você deve adicionar cada transformação que deseja executar, detalhando uma por linha com o seguinte formato:
 <source_extension>, <target_extension>, <command>
Onde
  • source_extension define a extensão do arquivo baixado que deve ser processado usando o comando . Este parâmetro não faz distinção entre maiúsculas e minúsculas.
  • target_extension define a extensão do arquivo gerado.
  • command é o caminho completo do comando que é chamado para cada arquivo baixado que tem source_extensioncomo uma extensão de arquivo.
    • Este comando
      • você receberá dois argumentos: o arquivo de entrada e o arquivo onde você deve escrever a saída ( comando input_file destination_file) .
      • deve retornar um código de status 0 em caso de sucesso ou um código diferente de 0, caso contrário
Por exemplo, no Linux ou OSX, se quiser converter arquivos PNG e GIF em JPG usando a conversão ImageMagick , você pode adicionar o seguinte:
 <New class = "org.eclipse.jetty.plus.jndi.Resource">
<Arg> </Arg>
<Arg> transcodificadores </Arg>
<Arg> <! [CDATA [
png, jpg, / usr / bin / convert
gif, jpg, / usr / bin / convert
]]> </Arg>
</Novo>

Como você pode ver no exemplo, você deve declarar cada formato de entrada em uma linha separada.

Seguindo o exemplo de um determinado arquivo de mídia baixado, o middleware chamará algo como

 / usr / bin / convert /tmp/media/https/foo/4645d1dc5f523182d5d1a6812071f3c17f974953.png /tmp/media/https/foo/4645d1dc5f523182d5d1a6812071f3c17g_9743.png

Como funciona

A conversão ocorre durante o processo de sincronização da Middleware Source. Quando os dados são baixados de uma Middleware Source específica, o middleware procura a mídia baixada que possui uma das extensões declaradas e chama o comando configurado (se não tiver sido processado anteriormente).

Se o comando for bem sucedido, o arquivo de destino que é passado como o segundo argumento do comando será usado como o caminho do arquivo multimídia que será escrito no campo correspondente (localMainMediaPath ou similar) do arquivo ou tabela (dependendo de seu modo de integração).


Solução de conflitos

Caso a conversão não seja bem-sucedida (por exemplo: falha na execução), o middleware tratará o conteúdo como se não tivesse sido baixado (o campo estará vazio).

Você pode verificar a mensagem de erro para entender melhor o que está acontecendo:

  • O software configurado não foi encontrado:
     código 072:
    Não foi possível baixar https://s3-assets0.flowics.com/web/uploads/production/generic-resources/asset/53115/versioned_efb3e1d0211f8dff706ba53ca066e383.png
    Devido a: Incapaz de executar o programa "usr / bin / onvert" (no diretório "/run/user/1000/middleware/media/https/s3-assets0.flowics.com"):
    erro = 2, nenhum arquivo ou diretório
  • A conversão falhou:
     código 072:
    Não foi possível baixar https://s3-assets0.flowics.com/web/uploads/production/generic-resources/asset/53115/versioned_efb3e1d0211f8dff706ba53ca066e383.png
    devido a: erro de transcodificação
  • Problema de formato em env.xml:
     Erro ao carregar a configuração do transcodificador:
     - na linha 1: o campo está incompleto: 'x'
    Morrendo. Verifique seu 'env.xml' .



Was this article helpful?