記將m3u8多個視頻文件合並為整體法一(未加密)


理論上講,從網站上下載的這種視頻格式的文件都是一個“.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:\Users\17724\Desktop\test\filelist.txt -c copy C:\Users\17724\Desktop\test\newoutput.mp4

這里注意的地方就是 filelist.txt文件的位置和名稱一定要設置好,還有產出視頻的位置和名稱也要根據下面自己改動。

代碼看不懂可以留言也可以自行百度,建議百度。

還要注意筆者用的dev-cpp。要設置為支持c++11,怎么設置呢,因為不想插圖,也就不再贅述了,留言或者自行百度都可。

 1 //這里先給出你最后在控制台鍵入的語句:ffmpeg -f concat -safe 0 -i C:\Users\Administrator\Desktop\filelist.txt -c copy C:\Users\Administrator\Desktop\outputnow.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'\n"; 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有啥好的理解,也是可以指導一下的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM