理论上讲,从网站上下载的这种视频格式的文件都是一个“.m3u8”为后缀的目录文件加上一个文件夹。文件夹里面放置的就是实际的视频文件了。如果没有加密的话,你是可以直接把它用视频播放器打开的。如果不能打开的话,那说明文件已经被加密了,本篇日记则不适合。
理论上讲,里面的视频文件都是名称递增的,比如abcd1.ts、abcd2.ts。各个文件只有后面的数字不同而已。如果不是这样,那么,你得根据m3u8目录文件(打开方式为文本),从头至尾排序了。如果是这样的话,本篇日记是合适的,但是需要自行改动。
言归正传,自己百度搜索 ffmpeg下载 .或者根据
链接1:官网下载:http://www.ffmpeg.org/download.html。
链接2:百度网盘下载:https://pan.baidu.com/s/14Y8zctqGRNeA9qYLOZChRg 提取码:t8ys 。
下载完后,解压即可,然后去配置环境变量: path。后面新建即可,加入打开bin文件夹后复制的地址栏的地址即可。
检验配置好了没有,快捷键 windows+R,键入cmd后进入控制台,再键入ffmpeg,如果不是出现未安装的命令啥的,那应该就是没问题的。懒得插图。
这里假设你已经配置好了。这里先给出你最后在控制台键入的语句:ffmpeg -f concat -safe 0 -i C:Users17724Desktop estfilelist.txt -c copy C:Users17724Desktop est ewoutput.mp4
这里注意的地方就是 filelist.txt文件的位置和名称一定要设置好,还有产出视频的位置和名称也要根据下面自己改动。
代码看不懂可以留言也可以自行百度,建议百度。
还要注意笔者用的dev-cpp。要设置为支持c++11,怎么设置呢,因为不想插图,也就不再赘述了,留言或者自行百度都可。
1 //这里先给出你最后在控制台键入的语句:ffmpeg -f concat -safe 0 -i C:UsersAdministratorDesktopfilelist.txt -c copy C:UsersAdministratorDesktopoutputnow.mp4
2 #include<iostream>
3 #include<string.h>
4 using namespace std;
5 int main()
6 {
7 /* 根据视频文件的顺序改动循环即可 */
8 for(int i=0;i<1019;i++)
9 {
10 string s="file ";
11 /* 下面添加的是视频文件的文件位置 和视频文件的共同前缀。具体的自己改动即可*/
12 s+="'C:\Users\Administrator\Desktop\test\abcd" +to_string(i)+".ts'
";
13 /* 如果原文件没有后缀的话,就去掉.ts即可。*/
14 cout<<s;
15 }
16 }
这里,要把运行后的输出内容全部复制到filelist.txt中,再在控制台中运行最后那句代码即可。合并速度很快,不会久等的。
此外,还有一种类似的方法但是效果完全不同,读者自行体会:ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4 也是用于多个视频的合并,如果读者理解了上面的做法,那么下面的这种方法要运用也是毫无问题的。作者也是今天才接触这个ffmpeg,还不能算做入门,所以读者对ffmpeg有啥好的理解,也是可以指导一下的。