Não é possível converter FLV para MP4 para iPhone com ffmpeg


1

Estou tendo problemas com a conversão de um FLV para um MP4 que será reproduzido no iPhone / iPad via Video-js.

Parece que os comandos ffmpeg não estão sendo convertidos corretamente.

Aqui está um dos comandos originais que o software, cumulusclips, está executando na conversão:

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 640x480 -vb 800k -ac 2 -ab 96k -ar 44100     -f flv /var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv

Saída semelhante à seguinte:

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, flv, to '/var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: flv, yuv420p, 640x480, q=2-31, 800 kb/s, 1k tbn, 24 tbc
    Stream #0.1: Audio: libmp3lame, 44100 Hz, 2 channels, s16, 96 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

Depois disso, ele está executando o seguinte para dispositivos móveis:

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 480x360 -vb 600k -ac 2 -ab 96k -ar 44    100 -f mp4 /var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4

Resultado:

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, mp4, to '/var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 480x360, q=2-31, 600 kb/s, 24 tbn, 24 tbc
    Stream #0.1: Audio: libfaac, 44100 Hz, 2 channels, s16, 96 kb/s

Não tenho certeza, mas você está convertendo primeiro para flv de avi e depois tentando converter para mp4 de avi? Por que ambos? O que você quer? Um arquivo para reproduzir no iOs de um servidor / dispositivo?
Rajib

Da próxima vez, inclua a saída completa do log, não apenas as partes que você considera relevantes. Isso nos ajuda a solucionar melhor seu problema. Temos uma formatação de código especial - recue-a em 4 espaços ou selecione o código e pressione Ctrl-K. Além disso, você precisa nos dizer o que quer dizer com "não está funcionando corretamente". Tenho certeza de que vejo o problema, mas nem sempre pode ser tão óbvio.
slhck 25/07

Respostas:


1

Estou bastante certo de que a versão ffmpeg que você está usando está bastante desatualizada. Faça o download de uma compilação estática para o seu sistema na página inicial oficial e use o caminho para o novo em ffmpegvez do antigo /usr/bin/ffmpeg.

Por exemplo, se você baixou sua construção estática, pode colocá-la em /usr/local/bin/ffmpeg, executável ( chmod ugo+x /usr/local/bin/ffmpeg) e usá-la.

Em seguida, você deseja que um comando como este converta um vídeo em um MP4 pronto para HTML5 e reproduzível em todos os tipos de dispositivos móveis:

ffmpeg -i input.avi -c:v libx264 -c:a aac -strict experimental -b:a 128k \
-crf 23 -profile:v baseline -movflags faststart output.mp4

Varie o CRF dependendo da qualidade desejada (18–28 é uma boa faixa, menor significa melhor) ou escolha -b:v 2Muma codificação de taxa de bits fixa a 2 MBit / s, por exemplo.

A conversão original estava usando o vídeo MPEG-4 Parte 2 em vez do MPEG-4 Parte 10, que deve ser suportado por dispositivos móveis, mas não necessariamente precisa. É mais seguro assim.

Além disso, atualmente, você realmente não precisa criar vídeos FLV. Não conheço nenhum dispositivo ou tecnologia de reprodução que exija esse formato (um pouco antigo).

Você também pode se interessar por: De que monte de scripts ffmpeg eu preciso para obter o "Vídeo para todos" compatível com HTML5?


Muito obrigado. Vou tentar para vídeos futuros. O principal problema com o meu método acabou sendo o servidor e executando sobre https. Por alguma razão, o vídeo não será reproduzido por SSL, mas sem. Então sim. Eu escolhi o seu porque é uma boa informação.
billabongrob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.