手机缓存的一个视频里有json,key,m3u8,ts四种格式如何合并成一个视频?


像很多80,90后年轻人(老男人吧)一样,周星驰一直就是哥喜爱的电影演员之一,不仅喜欢星爷的人物形象,更是喜欢这种乐观向上的精神!(哥16年的QQ一直就是周星驰这个昵称)。


在QQ技术群里,很多人都在研究ffmpeg,因为功能强大,简单直接就能实现想要的功能,但是想要用好,还是要下一些功夫。

今天的主题就是怎样实现对h264,aac流输入,合成后输出ts,m3u8,即HLS,苹果设备的点播方案!!!!!!!!!!!!!!!!!!!!

网上有很多关于文件转mp4或者其他文件格式的例子,但是换成数据流输入了,怎么办呢?很多人也是一筹莫展。网上也鲜有这种代码或者文章。

今天,哥哥就顺便说几句,关于我自己的一些想法。

晚上有很多例子是关于输入视频文件的,对我们有些参考,但是要换成输入h264或者aac数据流,大家都是没办法啊。

HLS (HTTP Live Streaming)是Apple的动态码率自适应技术(复制过来的),只有苹果的浏览器才能直接用,因为苹果不支持flash控件(自然也不支持rtmp),所以才有了HLS技术用于点播直播。调试的时候可以下载一个VLC播放器,这个播放器可以打开m3u8。

百度这样说的:ts是高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。先不管这些了,反正HLS就要用到TS格式的文件,一个一个的。贴张图吧,百说不如一见:

M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

M3U8文件举例,例如使用云图TV点播直播节目时,发送请求:

看到没,其实苹果的点播就是http上直接访问。

设置存ts,m3u8的路径,输入h264和aac流,根据设置的ts长度和个数,不断更新ts文件和m3u8文件

说了这么多基础,来点实际的吧:

我封装的最后的接口函数:

通过关键帧获取视频信息并

avio_alloc_context(这个函数很多文章或者代码里面都没有提到过吧),生成一个自定义输入io,用来探测h264的格式

至此,文件初始化工作完成

完了,搞完收工!!!!!!看看效果


中间有很多困扰:枚举下:比如ts文件格式必须输入的aac为 ADTS编码的,即有7个字节的头,没有就别想播放。

音视频同步,主要还是通过音视频时间戳pts,dts同步的。m3u8及ts文件更新,根据设置的一个ts文件秒数和个数进行不断更新,比如设置的5秒一个,一共3个,那么,每隔3秒,保存ts并创建新的ts,然后更新m3u8文件信息.

我的m3u8文件内容:

测试的时候,装备一台苹果手机(肾没了没办法就下载个VLC播放器也行),一个免费的http服务器软件,我下的免费的easywebserver。准备h264数据源和AAC数据源,这方面办法很多,读h264,aac文件,截取屏幕或者摄像头,aac获取麦克风转成AAC,或者输入音频文件转成AAC(编码一定要有 ADTS

但是上面说了这么多,应该也能自己做了吧。什么时候传个DEMO上来,有空再说吧

传点代码(关键的一段):

今天花了2个小时把DEMO做好了,可以下载看看效果,有问题或者需要交流,可以联系我,谢谢(前面一个是v2版本,后面是v1版本)

*需要合作的联系QQ,可以当当技术顾问或者核心技术提供,本人03年从事工作,“精通”音视频应用编程技术(勉强加个精通,吸引眼球,哈哈),精通VC,MFC,多媒体教学软件,录播软件,直播软件的核心技术大部分已掌握,如ffmpeg技术,Directshow技术,MP4,FLV编码合成,H264,AAC,MP3,可以运用IPP进行高效图像空间转换等,可以运用INTEL和cuda进行硬件H264编解码,可以实现240帧1080P实时编码,完全同步及平滑度极高,rtmp,HLS直播推送,rtmp服务器,YV12,YUV422,NV12,RGB24,RGB32熟悉转换,缩放,wav,AAC, mp3的编码解码,视频切换特效算法,视频水印,LOGO,文字。屏幕截取录像,摄像头捕获录像,D3D高效视频图像显示,OPENCV,图像库ximage,GDI,GDIPLUS熟练应用,语音识别及文字转换,人脸识别及匹配,局域网内远程控制,音视频实时通话,声卡捕获回放等,另外SQL数据库,ACCESS,EXCEL数据库,DOC,PDF文件打开提取,FTPServer,Client,以上所有代码均已商用。

}
本帖最后由 长河落 于 22:52 编辑 ###之前代码没贴好,十分抱歉,重新调整了一下###

    • 今天公司要下载某某一系列的视频教程,注册账号,打算IDM走一波结果凉凉。
    • 所有有了这篇m3u8的帖子
    • 第一步分析m3u8文件
    • 到这里下意识的用F12抓包看了下,这个视频地址是m3u8的格式
    • [HTML] 纯文本查看 复制代码

      1、需要先报名这个课程 2、输入课程的id就能下载 3、时间久了可能需要更新一下cookies # 获取这个课程所有课时的ID # 获取ts文件的内容
      • 如果报错了,先检查是不是安装了相应的模块
      • 如果都安装了还报错,欢迎在评论中回复

本帖被以下淘专辑推荐:

}

我要回帖

更多关于 缓存视频合并工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信