Transcodifique o HLS m3u8 para MP4 e inclua a faixa de texto

2

É possível com o FFMPEG converter um m3u8 em um MP4 e manter a faixa de legendas (texto)?

Ao olhar para o fluxo da Apple, link , vejo que o vídeo stream faz menção de Closed Captions, mas não consigo encontrar uma maneira de extraí-los.

Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, smpte1
70m/smpte170m/bt709), 400x300, Closed Captions, 29.92 fps, 29.92 tbr, 90k tbn, 1
80k tbc

As várias tentativas que fiz transcode para mp4, mas elimina as legendas.

Eu usei o VLC no manifesto e ele tem "legendas", mas depois de transcodificar o mp4 não.

Usou o comando: ffmpeg -i https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8 -c copy -bsf:a aac_adtstoasc out.mp4

    
por Justin 11.02.2016 / 16:45

2 respostas

2

Consegui reunir informações suficientes para completar isso. É uma combinação de 3 comandos.

Usando o ffmpeg versão 2.8.4

Primeiro, os segmentos da lista de reprodução precisam ser mesclados em um único arquivo MPEG-TS:

ffmpeg -i [playlist_url].m3u8 -c copy [filename].ts

Em seguida, precisamos extrair as legendas ocultas do arquivo:

ffmpeg -f lavfi -i "movie=[filename_from_last_step].ts[out0+subcc]" [filename].srt

Observação: só consegui que funcionasse se o arquivo ts e o caminho atual do cmd correspondessem.

Por fim, você mescla o arquivo ts e srt e transcodifica para o MP4:

ffmpeg -i [filename_from_first_step].ts -i [captions].srt -c:v copy -bsf:a aac_adtstoasc -c:s mov_text [out_file_name].mp4

Isso fornecerá a você um MP4 com as legendas incorporadas, bem como um arquivo srt independente, se o player não oferecer suporte a legendas incorporadas.

    
por 11.02.2016 / 19:37
1

Se legendas ocultas significam um fluxo CEA-608 ou 708, então elas estão estranhamente empacotadas, ou seja, embutidas dentro do fluxo de vídeo, e ffmpeg não pode copiar ou codificá-los.

Você pode tentar usar CCextractor para extraí-los. Se não funcionar no fluxo. Faça o download dos segmentos individuais, concatie-os e tente com isso.

Uma vez extraído, você pode codificá-los usando -c:s mov_text no MP4.

    
por 11.02.2016 / 19:03

Tags