不用FFMpeg,用Python代码解密ts文件还原mp4视频(前提:有正确的key)

这篇具有很好参考价值的文章主要介绍了不用FFMpeg,用Python代码解密ts文件还原mp4视频(前提:有正确的key)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好不容易下载了.ts视频,但内容全被加密。要解密的前提条件是必须先有正确的key文件,然后对.ts文件进行AES-128解密,还原成.mp4视频。

注:本文不讨论如何获取正确的key文件。

以往的做法是用FFMpeg命令:

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,https,crypto,tcp" -i input.m3u8 -c copy output.mp4

现在可以用Python代码直接解密。

非常感谢这篇文章给我参考的灵感:流媒体m3u8爬虫研究 - Echocipher

首先Python要安装AES模块:

pip install pycryptodome

然后代码如下: 

import requests
from Crypto.Cipher import AES

inputfile = r'c:\test.ts'
outputfile = r'c:\测试.mp4'
keyfile = r'c:\key.m3u8'

with open(inputfile, 'rb') as f:
    video = f.read()
with open(keyfile, 'rb') as f:
    key = f.read()

aes = AES.new(key, AES.MODE_CBC, b'0000000000000000')
with open(outputfile, 'ab+') as f:
    f.write(aes.decrypt(video))

代码运行后,转换的.mp4文件大小与原来的.ts文件一致。

如果用ffmpeg命令转换,又有什么区别?

我尝试一下,先做一个.m3u文件,内容形式如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.m3u8",IV=0x00000000000000000000000000000000
#EXTINF:-1,
test.ts

然后运行ffmpeg命令:

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,https,crypto,tcp" -i test.m3u -c copy output.mp4

如何用key解密ts文件,Python,ffmpeg,算法

 ffmpeg提示一些错误信息,但最后仍成功转换,转换后的.mp4文件体积缩小了。对比一下文件大小:

.ts文件 17.93 MB
Python代码使用AES解密后的.mp4文件 17.93 MB
ffmpeg命令转换后的.mp4文件 14.75 MB

不知道ffmpeg对.ts文件还原.mp4的转换是无损还是有损的。也许ffmpeg转换后的.mp4文件的兼容性更好吧。

2023年3月10日更新

为什么ffmpeg转换后的.MP4文件比Python代码解密后的小一些?

1、上面我编写的Python代码纯粹是解密过程,根据key按照AES-128解密算出来的文件本质上仍然是TS编码格式。只是代码中把输出的文件扩展名写作.mp4而已。这个MP4文件在播放时快进或后退可能出现画面定住一秒钟,然后继续播放。

2、ffmpeg命令的操作会按照MP4编码标准把ts格式的视频和音频重新封装,转码命令带有“copy”,说明这个转换过程是无损的,转码后的MP4文件的兼容性更好。

3、ffmpeg命令转换时去掉了TS格式的冗余数据,故输出的MP4文件比较小。文章来源地址https://www.toymoban.com/news/detail-786879.html

到了这里,关于不用FFMpeg,用Python代码解密ts文件还原mp4视频(前提:有正确的key)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用ffmpeg将多个TS视频拼接成mp4视频

    点击下面网址下载对应版本安装 https://ffmpeg.org/download.html   下载好之后添加环境变量 添加成功之后在cmd窗口输入ffmpeg,显示如下结果则为成功  合并单个文件或者少量文件时,通过以下命令合并 多个ts视频可以编辑一个txt文档,file.txt 注意:这里必须是单引号,双引号会报错 进入

    2024年02月11日
    浏览(84)
  • python 爬虫 m3u8 视频文件 加密解密 整合mp4

    完整代码如下: 1. 认识m3u8文件 m3u8 的结构详细分析可以看这个链接m3u8 文件格式详解 - 简书 (jianshu.com),这里我们只简要介绍一下; 相信无论多小白都应该知道如何打开开发者模型解析得到下面的结果; 要注意的是,只有预览里面包含了 ts 信息的才算是我们需要的 m3u8 文件

    2024年02月20日
    浏览(51)
  • python ts视频转mp4

    TS(TransportStream,传输流)是一种封装的格式,它的全称为MPEG2-TS。MPEG2-TS是一种标准数据容器格式,传输与存储音视频、节目与系统信息协议数据,主要应用于数字广播系统,譬如DVB、ATSC与IPTV。传输流最初是为广播而设计的。后来,通过在标准的188字节数据包中添加4字节的

    2024年02月07日
    浏览(51)
  • 合并多个 .ts 文件为单个 .mp4 解决方案

    📌 概要: 现在的视频网站采用的是流媒体传输协议,即把一个完整的视频切分为多个小片段,这些片段就是以 .ts 为后缀的视频文件。分片下载需要一个索引文件记录所有分片的网络地址,而这个索引文件就是 .m3u8 。 前段时间我在用 .m3u8 下载器下载电影的时候出现了问题

    2024年02月12日
    浏览(57)
  • 如何使用ffmpeg将MP4文件转化为YUV文件?

    可以使用以下命令将 MP4 文件转化为 YUV 文件: 其中, input.mp4 是输入文件的文件名, output.yuv 是输出文件的文件名。 需要注意的是,在使用这个命令之前,你需要在你的电脑上安装 ffmpeg。如果没有安装,可以使用以下命令安装: 如果你使用的是 Windows 系统,可以到 ffmpeg 官网

    2024年02月15日
    浏览(58)
  • 第4课 FFmpeg读取本地mp4文件并显示

    在上节课,我们使用FFmpeg实现了一个最简单的rtmp播放器,它看起来工作正常。这节课,我们尝试让它来播放本地的mp4文件试试。 1.压缩备份上节课工程文件夹为demo3.rar,并修改工程文件夹demo3为demo4,重要的事情再说一遍:及时备份源文件并在原基础上继续迭代开发是一种好

    2024年02月03日
    浏览(50)
  • 【音视频 ffmpeg 学习】 RTMP推流 mp4文件

    1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息(Message)。 3.当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。 (1). linux 环境准备 安装nginx 和 rtmp模块 下载nginx安装包 下载

    2024年02月03日
    浏览(67)
  • 用ffmpeg解析mp4文件得到时长、比特率、音视频信息

    以下是使用C++语言调用FFmpeg获取视频流和音频流信息的示例代码: 上述代码通过 AVFormatContext 结构体和FFmpeg库函数 avformat_open_input 、 avformat_find_stream_info 等,获取MP4文件的视频流和音频流信息,并将结果存储到 MediaInfo 类中。在实际应用中,可以将上述代码封装成一个函数,

    2024年02月12日
    浏览(66)
  • 使用Python代码实现视频(如.MP4)与图片(如.jpg)文件格式的相互转换

    1.使用Python代码将视频文件(.MP4格式)转换为图片(.jpg格式) 对视频进行抽帧操作,将视频逐帧转换为图片(.jpg格式的图片的文件) 此处采取的方法是:对视频.MP4文件 每隔10帧截取一张.jpg格式的图片 需要使用的Python方法cv2在opencv-python库中,下载安装方式; 实现上述功能的

    2024年02月03日
    浏览(60)
  • 使用FFMPEG库封装264视频和acc音频数据到MP4文件中

    ffmepeg 4.4 一段H264的视频文件 一段acc格式的音频文件 1.使用avformat_open_input分别打开视频和音频文件,初始化其AVFormatContext,使用avformat_find_stream_info获取编码器基本信息 2.使用avformat_alloc_output_context2初始化输出的AVFormatContext结构 3.使用函数avformat_new_stream给输出的AVFormatContext结

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包