Como obter arquivos codificados do Transport Stream para exibir corretamente a imagem do ícone do arquivo?

0

Eu não sei se estou perguntando corretamente, mas aqui vai. Eu tenho um box de DVD para o meu aniversário e codifiquei os arquivos para armazenar no meu computador para visualização. Depois de descarregar os arquivos brutos no meu computador, eu os compactei com o seguinte comando batch:

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
mv "$i.ts" "$i.mp4"
sleep 3
done

O que resultou em uma ótima compactação e qualidade, mas quando eu olho para a pasta, os arquivos estão localizados nos ícones são apenas caixas cinza, quando os arquivos originais na mesma pasta tinham uma imagem do vídeo exibido. (Lol, eu sei que é apenas cosmético, mas está me incomodando:)

Se eu usar o comando

ffmpeg -i input.mp4 -vcodec h264 -acodec libfaac output.mp4

Exibe bem o ícone da imagem, mas codifica como (AVC1) em vez de (h264), o que não é o que eu quero.

Existe uma maneira de resolver isso no meu comando de arquivo em lote para que ele exiba o ícone do arquivo conforme desejado? Obrigada!

    
por TheMegolith 04.08.2018 / 18:13

1 resposta

1

Graças às informações fornecidas por Gyan, consegui encontrar uma solução eficaz para a pergunta que solicitei à modificação do meu comando de arquivo batch, que é o seguinte.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
ffmpeg -i "$i.ts" -bsf:a aac_adtstoasc -c copy "$i.mp4"
rm *.ts
sleep 3
done

No entanto, dadas as informações fornecidas por Gyan, podemos pular a etapa de codificação para um arquivo de fluxo de transmissão e, em seguida, fazer o remuxo para o mp4 e simplesmente compactar o arquivo mp4 no seguinte comando batch.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.mp4"
sleep 3
done

Tenha em mente que isso foi feito usando uma versão anterior do ffmpeg. Para as versões mais recentes do ffmpeg, use o seguinte para compactar o vídeo mantendo um ícone de imagem adequado do vídeo que você está compactando;

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec aac "$i.mp4"
sleep 3
done

O único problema em usar o comando batch file é adicionar uma extensão de arquivo extra ao nome do arquivo (filename.mp4.mp4) que eu uso usando o pyrenamer para remover a extensão de arquivo extra em todos os arquivos em vários diretórios em um único arquivo. clique.

Se alguém souber como resolver isso dentro do comando em lote, por favor comente e eu modificarei esta resposta. Eu tentei variações do comando 'mv' mas sem sorte.

    
por 04.08.2018 / 21:08

Tags