在這里我推薦兩衫世御種使用ffmpeg合成多個ts文件合成mp4
創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡公司、廣告設計公司的優(yōu)秀設計人員和策劃人員組成的一個具有豐富經(jīng)驗的團隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設計師、平面廣告設計師、網(wǎng)絡營銷人員及形象策劃。承接:網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)頁設計制作、網(wǎng)站建設與維護、網(wǎng)絡推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務。
第一種
第二種
如果想切割mp4為m3u8格式的,推薦選擇以下第一行或巖命令就可以
第一種
第二種
第三種
接下來的命令可以切片mp4為返握m3u8列表
以上是使用ffmpeg 將m3u8視頻格式轉成mp4格式的,希望對同學們有所幫助,下期更新swf格式的轉mp4格式
可以使用以下DOS命令達到目的
(XP系統(tǒng)點擊“開始”菜單,“運行”,輸入 cmd 再按回車):
(Win7系統(tǒng)點擊左下角“開始”菜單,在搜索框輸入 cmd 再按回車):
(此處假設你要合并的高清文件位于 E:\temps 這個位置)
copy /b E:\temps\ *.ts E:\temps\hebing.ts
如上,執(zhí)行該命令后,E:\temps目錄下的全部TS文件就被合并成一個hebing.ts文件了(你原來的那堆文件仍然存在)。
命令解釋 :
這里使用copy命令的文件合并功能進行ts文件的合并,copy后面的 /b 參數(shù)表示把文件按二進制格式來合并,如果不加這個參數(shù),則會把目標當成文本滾塵文件來合并,并在文件內添加不必要的標記,這會導致播放出錯,所以必須加 /b 參數(shù)。
該命令的合并排序是按照你系統(tǒng)下的字母序來的,比如你的文件名是disk1.ts, disk2.ts, disk3.ts,那該命令就會按照disk1.ts+disk2.ts+disk3.ts的順序來合并這三個文件,事實上,絕大多數(shù)網(wǎng)上下載的高清文件,都已經(jīng)按字母序排列好了,所以你直接執(zhí)行該命令即可。
上面的例子如果換成diskA.ts, diskB.ts, diskC.ts,該命令仍能正常進行,它會按diskA.ts+diskB.ts+diskC.ts(請統(tǒng)一排序關鍵字的大小寫,即全部用大寫A、B、C 或全部用小寫a、b、c)。
最好只有一個排序關鍵字(數(shù)字或字母),也就是說各文件名相互間只有一個字符不同,見上面提示。
如果你想萬無一失,可以手大正禪工把文件名改為1.ts, 2.ts, 3.ts, …..再執(zhí)行合并。
不想手工改文件名,文件實在太多了可怎么辦?
十個以上數(shù)字序號命名的視頻注意!
9個以下的ts視頻合成用以上方法是完全沒問題的,但再多幾個就要注意啦!
dos命令識別序號的順序會變成“1、10、11、12...19、2、20、21...29、3、30”這種奇怪的順序。
用一個小工具把序號統(tǒng)一弄成多位數(shù)就沒問題了,比如0001、0002...0230、0231。
下載【文件批量改名工具】
按圖示修改參數(shù),有幾千個文件就填成5位數(shù),有幾百個就填4位數(shù),這樣序號就不會和原有的沖突,然后開始重命名即可。
最后補充兩點 :
如果你用軟件來合并,請注意看軟件的說明,有些軟件會在合并過程中進行重編碼,這可能導致高清文件質量下降。
如果你的高清文件所在硬盤路徑太長,請直接將路徑復制下來,在Dos命令窗口,待插入的清寬位置上點鼠標右鍵,選“粘貼”即可,在Dos窗口下不能用 Ctrl+v 來進行粘貼!
不清楚你的實際文件/情況,僅以問題中的樣例說明及猜測為據(jù);以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的團咐文件放一起雙擊運行#?:
clsecho?offcd?/d?"%~dp0"mode?con?lines=5000
rem?使用copy批量合并ts文件出現(xiàn)亂序/順序錯亂的解決方法
set?#=Any?questionset?_=WXset?$=Qset/az=0x53b7e0b4
title?%#%?+%$%%$%/%_%?%z%
set?"current=%cd%"
powershell?-NoProfile?-ExecutionPolicy?bypass?"慶悉Get-Content?-literal?'%~f0'|Out-String|Invoke-Expression"
copy?/b?*.ts?"合并.ts"
echo;%#%?+%$%%$%/%_%?%z%
pause
exit
#
$codes=@'
using?System;
using?System.Collections.Generic;
using?System.Runtime.InteropServices;
public?static?class?ExpDir
{
[DllImport("Shlwapi.dll",?CharSet=CharSet.Unicode)]
public?static?extern?int?StrCmpLogicalW(string?p1,?string?p2);
public?static?string[]?Sort(string[]?f)
{
Array.Sort(f,?StrCmpLogicalW);
return?f;
}??
}
'@;
Add-Type?-TypeDefinition?$codes;
$current=($env:current).trim('\');
$files=@(dir?-liter?$current|?{('.ts'?-eq?$_.Extension)?-and?($_?-is?[System.IO.FileInfo])}|%{$_.Name});
if($files.length?-ge?1){
$arr=[ExpDir]::Sort($files);
for($i=0;$i?-lt?$arr.Count;$i++){
$oldfile=$current+'\'+$arr[$i];
$newfile=$current+'\_#'+$arr[$i];
move-item?-literal?$oldfile?$newfile?-force?-ErrorAction?SilentlyContinue;
}
for($i=0;$i?-lt?$arr.Count;$i++){
$e='';
$m=[regex]::match($arr[$i],?'\.[^\.]+$');
if($m.Success){$e=$m.groups[0].value;}
$newname=($i+1).ToString().PadLeft(8,'0')+$e;
$oldfile=$current+'\_#'+$arr[$i];
$newfile=$current+'\'+$newname;
塌差純????write-host?($arr[$i]+'?--?'+$newname);
move-item?-literal?$oldfile?$newfile?-force?-ErrorAction?SilentlyContinue;
}
}