/ / decifrare AES-128 playlist .m3u8 e file .TS3 con ffmpeg - ffmpeg, streaming, http-live-streaming, hls

decrypt AES-128 playlist .m3u8 criptate e file .TS con ffmpeg - ffmpeg, streaming, http-live-streaming, hls

sto cercando di decifrare a .m3u8 playlist, ho seguito questi passaggi:

  • crea una directory
  • copia la chiave in un file chiave, es my.keye posizionalo nella dir. Nota che i tasti possono essere ruotati, se la playlist ha più chiavi copia tutto di loro in diversi file.
  • copia tutto .ts segmenti alla stessa dir
  • copia e modifica il playlist.m3u8 e usa solo i nomi dei file per chiave (s) URI (s) e segmenti.

e usando questo comando per decodificare la playlist

ffmpeg -i playlist.m3u8 -c copy output.ts

ma ho ricevuto questo errore: Invalid data found when processing input

ecco il mio m3u8:

#EXTM3U
#EXT-X-TARGETDURATION:12
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="my.key"
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:6.000,
s-1-v1-a1.ts
#EXTINF:6.000,
s-2-v1-a1.ts
#EXTINF:6.000,
s-3-v1-a1.ts
#EXTINF:12.000,
s-4-v1-a1.ts
#EXTINF:12.000,
s-5-v1-a1.ts
#EXTINF:6.000,
s-6-v1-a1.ts
#EXT-X-ENDLIST
  • cosa c'è di sbagliato nel mio comando?
  • come non convertire la playlist in una .TS file? Voglio decriptare i file separatamente

risposte:

1 per risposta № 1

Prova a specificare il percorso locale completo nel tuo manifest quindi fai in modo che la KEY:

#EXT-X-KEY:METHOD=AES-128,URI="file://path/to/local/my.key"

e i pezzi della serie TS sono tutti simili:

file://path/to/local/s-6-v1-a1.ts

Se questo non funziona, allora ffmpeg potrebbe aver bisogno delinput per un m3u8 da servire su HTTP. Quindi metti il ​​tuo file m3u8 e la chiave e tutti i tuoi blocchi su una directory web e riesegui il comando ffmpeg usando l'URL per m3u8 in modo che sia come:

ffmpeg -i http://mytestwebserver.com/playlist.m3u8 -c copy output.ts

Se non si ha accesso a un server Web, è possibile installare alcuni locali e gratuiti come MAMP. Non ho riscontrato problemi con il comando precedente per copiare localmente un flusso HLS quando l'input è un URL HLS.