加密的m3u8、ts文件合并

摘要:
加密的ts文件无法合并或直接播放。您需要使用密钥来解密每个ts文件。记事本打开两个m3u8文件,其中一个包含ts文件列表。这个m3u8文件就是我们需要的。例如,我这里有HdNz1kaz。以下是m3u8文件的一小部分。将m3u8文件中密钥的uri路径和ts文件的路径修改为本地路径。

加密后的ts文件不能直接合并或播放,需要使用key对每个ts文件进行解密。

分为两种情况:
(1).如果ts文件已经全部下载好,则可以直接在本地通过ffmpeg快速解密合并。
(2).如果ts文件没有下载好,则可以通过vlc直接下载整个视频,或者通过ffmpeg下载并转换。

无论是哪种情况,都要去视频源地址下载m3u8文件。如果可以下载key(有些网站加密方式比较严谨,不那么容易获取到key),把key文件也下载好。

下载m3u8文件的方式是去源地址网站,按F12找到m3u8文件,或者从右键-->网页源代码中找到地址。两种方式都试一试。

例如,从浏览器的F12中找:

加密的m3u8、ts文件合并第1张

这里能找到两个m3u8和一个key文件,都下载好。记事本打开两个m3u8,其中有一个包含了ts文件列表,这个m3u8文件是我们所需要的。例如我这里的是HdNz1kaz.m3u8文件,以下是一小部分内容。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="/20180125/NfJJpxIH/1482kb/hls/key.key"
#EXTINF:12.5,
/20180125/NfJJpxIH/1482kb/hls/GBDYO3576000.ts
#EXTINF:12.5,
/20180125/NfJJpxIH/1482kb/hls/GBDYO3576001.ts
#EXTINF:12.5,
/20180125/NfJJpxIH/1482kb/hls/GBDYO3576002.ts
1.情形一:ts文件已经下载好

假如我的ts文件全部下载好,放在e:20180125目录下。

加密的m3u8、ts文件合并第2张

同时假设key文件已经下载好,也放在e:20180125目录下。

修改m3u8文件中key的uri路径和ts文件的路径为本地路径。下面是HdNz1kaz.m3u8文件修改后的一小部分内容

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="e:/20180125/key.key"
#EXTINF:12.5,
e:/20180125/GBDYO3576000.ts
#EXTINF:12.5,
e:/20180125/GBDYO3576001.ts
#EXTINF:12.5,
e:/20180125/GBDYO3576002.ts

然后用ffmpeg进行合并。

ffmpeg -allowed_extensions ALL -i HdNz1kaz.m3u8 -c copy new.mp4

我一般会把ts文件下载好,因为用下载工具(比如迅雷)下载比ffmpeg或者vlc下载速度要快的多,因为这两个工具都是串行下载的。

2.情形二:ts文件没有下载

同样,下载好m3u8文件(key可下载可不下载,因为可以直接在m3u8文件中指定key的网络uri路径)。

修改m3u8文件中key和ts的uri路径。下面是HdNz1kaz.m3u8文件修改后的一小部分内容。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="http://www.example.com/20180125/key.key"
#EXTINF:12.5,
http://www.example.com/20180125/GBDYO3576000.ts
#EXTINF:12.5,
http://www.example.com/20180125/GBDYO3576001.ts
#EXTINF:12.5,
http://www.example.com/20180125/GBDYO3576002.ts

然后,使用ffmpeg下载并合并。

ffmpeg -i HdNz1kaz.m3u8 -c copy new.mp4
3.openssl解密ts文件

假如key的值为:asdjklfjaskdlf
key的IV值(m3u8文件中已经记录)为"0x0123456789abcdef0123456789abcdef"

则解密 GBDYO3576000.ts的方法为:

strkey=asdjklfjaskdlf
iv=0x0123456789abcdef0123456789abcdef
openssl aes-128-cbc -d -in GBDYO3576000.ts -out out_0.ts -nosalt -K $strkey  -iv $iv
4.使用vlc下载并保存ts文件

加密的m3u8、ts文件合并第3张

加密的m3u8、ts文件合并第4张

加密的m3u8、ts文件合并第5张

加密的m3u8、ts文件合并第6张

加密的m3u8、ts文件合并第7张

加密的m3u8、ts文件合并第8张

加密的m3u8、ts文件合并第9张

播放列表的下方有播放进度条,它表示下载的进度,不要去动,也不要去点击播放、暂停、停止等,放着别管就是了,直到播放进度条完成了,就表示文件合并完成。去文件保存位置的地方看看就知道了。

ffmpeg报错

错误:

Malformed AAC bitstream detected: use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg)

需要在合并视频的时候,加上-bsf:a aac_adtstoasc

ffmpeg -i index.m3u8 -c copy -bsf:a aac_adtstoasc new.mp4
ffmpeg -i index.m3u8 -c:a copy -bsf:a aac_adtstoasc new.mp4

错误:

Codec for stream 0 does not use global headers but container format requires global headers
Codec for stream 1 does not use global headers but container format requires global headers

需要加上global header

ffmpeg -i index.m3u8 -c:a copy -flags +global_header new.mp4

免责声明:文章转载自《加密的m3u8、ts文件合并》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android实现程序前后台切换效果phpcms常用接口调用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于ffmpeg不同编码方式转码后的psnr对比

一、测试说明: 源文件:1080psrc.mp4 时长:900秒 源文件信息:Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2960 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)...

windows编译ffmpeg出错记录

./configure --toolchain=msvc --enable-cross-compile --arch=x86_64 --extra-ldflags="-static-libgcc" --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/libcl.exe is unable to crea...

FFMpeg笔记(八) 读取RTP数据时的PTS计算[转载]

结构体struct RTPDemuxContext中有若干时间戳相关的成员,含义如下 timestamp:上一个接收到的RTP时间戳base_timestamp:第一个接收到的RTP时间戳cur_timestamp:未知unwrapped_timestamp:假如rtp时间没有32位溢出的话,当前的rtp时间应该是多少range_start_offset...

ffmpeg参数说明(转载)

ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 使用-ss参数 作用(time_off set...

ffmpeg 踩坑实录 添加实时水印(二)

一、背景介绍       最近领导要求做一个视频录制的相关项目。其中,需要对视频文件进行添加 实时时间水印。于是,我想到了使用之前的ffmpeg来做。 二、ffmpeg实际操作        首先把需要添加水印的视频文件,上传到服务器指定位置 比如 “/usr/local/1.mp4”,这样的地方。其次,我们需要了解如何去给视频添加水印。 这里提供两种方式...

玩转FFmpeg的7个小技巧

原文链接:http://www.linuxidc.com/Linux/2011-06/36973.htm FFmpeg堪称音频和视频应用程序的瑞士军刀,提供了丰富的选项和灵活性.很多时候用户为了看视频和听音乐都安装了ffmeg.更多关于ffmeg的详细介绍:here,可以通过ffmpeg -formats查看FFmpeg支持的视音频格式,左侧若是E表明可...