首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

http live streaming ,m3u8 文件有没有开源的解析代码?解决方案

2012-05-27 
http live streaming ,m3u8 文件有没有开源的解析代码?近日需要用到这个功能,但是m3u8 是 m3u 的扩展,有EX

http live streaming ,m3u8 文件有没有开源的解析代码?
近日需要用到这个功能,但是m3u8 是 m3u 的扩展,有EXT-X-STREAM-INF 这个字段,
是另一个 m3u8文件的地址,也就是说编程的话要递归进去。

需要用 C 语言完成这个功能,我看到这个是 java 实现的。

我查找 vlc 的代码里面只有解析 标准 m3u 文件的代码
只有 对 #EXTINF 进行了处理。

C/C++ code
//Open and parse a M3U file:int M3U_open(char *fileName){    FILE *f;    char lineText[512];    char chrLength[20];    char title[264];    struct M3U_songEntry *singleEntry;    int playListCount = lPlayList.songCount;    f = fopen(fileName, "rt");    if (f == NULL){        //Error opening file:        return(-1);    }    while(fgets(lineText, 256, f) != NULL){        if (!strncmp(lineText, "#EXTINF:", 8)){            //Length and title:            splitSongInfo(lineText, chrLength, title);        }else if (!strncmp(lineText, "#EXTM3U", 7)){            //Nothing to do. :)        }else if (strlen(lineText) > 2){            //Store song info:            singleEntry = &lPlayList.songs[playListCount++];            strncpy(singleEntry->fileName, lineText, 263);            singleEntry->fileName[263] = '\0';            if ((int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 10 || (int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 13 ){                singleEntry->fileName[strlen(singleEntry->fileName) - 1] = '\0';            }            if ((int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 10 || (int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 13 ){                singleEntry->fileName[strlen(singleEntry->fileName) - 1] = '\0';            }            if (strlen(title)){                strncpy(singleEntry->title, title, 263);            }else{                getFileName(singleEntry->fileName, singleEntry->title);            }            singleEntry->title[263] = '\0';            singleEntry->length = atoi(chrLength);            if (playListCount == MAX_SONGS){                break;            }        }    }    fclose(f);    lPlayList.modified = 0;    lPlayList.songCount = playListCount;    strcpy(lPlayList.fileName, fileName);    return(0);}



我想有没有同学可以提供下 C 语言实现的开源库地址,我拿来用用。

[解决办法]
你可以看看ffmpeg里面有没。

热点排行