一個srt字幕分割工具

來源:互聯網
上載者:User

找了部電影來看,分為上下兩集兩個視頻檔案.但是字幕檔案是一個srt格式的檔案.於是自己寫了個將一個字幕檔案分割為上下兩集的程式.

使用方法很簡單:
adjsrt.exe sub_title.srt -hh:mm:ss
sub_title.srt 你要處理的字幕檔案
-hh:mm:ss     你要減去的時間,-是減號,表示減去的意思,hh是兩位元字,對應小時,mm對應分鐘,ss對應秒

程式會將處理後的結果(實際上就是srt格式字幕檔案的內容)列印到螢幕上,如果你要處理結果直接產生srt檔案:
adjsrt.exe sub_title.srt -hh:mm:ss > 你要產生的srt檔案.srt

比如你要將期間為1個小時的字幕檔案分割為兩個各半小時的字幕檔案.實際上就是將後半個小時的字幕檔案輸出到另一個檔案裡,字幕的時間標號都減去半小時.

你可以這樣做:
adjsrt.exe 持續為1小時.srt -00:30:00 > 後30分鐘.srt

下載:

可執行程式

原始碼:

 

#include <cstdio>#include <cstring>#include <cstdlib>intmain(int argc, char** argv){char stime[]="-00:00:00";char* r;if(argc<=2){printf("%s/n","Usage: adjsrt.exe sub_title.srt -hh:mm:ss");return 0;}strncpy(stime,argv[2],9);stime[3]=stime[6]=0;char c=stime[0];const char* h=stime+1;const char* m=stime+4;const char* s=stime+7;int sec;sec=atoi(h)*60*60+atoi(m)*60+atoi(s);int from_sec;int to_sec;char prev[256]={0};char line[256]={0}; //256 is big enough for one line (even Chinese characters)char buf[256]={0};char from_mill[4]={0};char to_mill[4]={0};FILE* f=fopen(argv[1],"r");if(!f){printf("Failed to open %s!/n",argv[1]);return 1;}int cnt=1;do {r=fgets(line, sizeof(line)/sizeof(line[0]),f);  if(!r) continue;if(!strstr(line," --> ")){strcpy(prev,line);continue;}strcpy(buf,line);buf[2]=buf[5]=buf[8]=buf[12]=buf[16]=buf[19]=buf[22]=buf[25]=0;from_sec=atoi(buf)*60*60+atoi(buf+3)*60+atoi(buf+6);to_sec=atoi(buf+17)*60*60+atoi(buf+20)*60+atoi(buf+23);if(from_sec>=sec){strncpy(from_mill,buf+9,3);strncpy(to_mill,buf+26,3);from_sec-=sec;to_sec-=sec;printf("%d/n",cnt);printf("%02d:%02d:%02d,%s --> %02d:%02d:%02d,%s/n",from_sec/3600,(from_sec%3600)/60,from_sec%60,from_mill,to_sec/3600,(to_sec%3600)/60,to_sec%60,to_mill);r=fgets(line, sizeof(line)/sizeof(line[0]),f);  if(r)printf(line);printf("/n");cnt++;}}while(r);                fclose(f);return 0;} 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.