xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2KB
    文件類型: .java
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: Java
  • 標簽: java??ts??提取??I幀??

資源簡介

在一些視頻服務中,如VOD推流的快進、快退中,經常需要快速從ts節目流中找出I幀(I-frame)來,以便推流服務器可以推送只包含視頻畫面而沒有聲音的ts數據到終端,而終端并不需要做任何特殊處理,即可實現快進/快退的畫面效果。 因此,實現上需要做到以下三點: 1、要找到I幀 2、確保找出來的I幀數據前后都要完整,即符合MPEG-2的188長度的封包格式 3、去掉其中的音頻數據 本資源直接給出用java實現的從ts流中提取I幀的代碼

資源截圖

代碼片段和文件信息


/**
?*?從ts字節流中提取出I幀數據,且去掉其中的音頻數據,輸出的內容仍然符合MPEG-2的188結構
?*?@param?src:ts數據字節內容
?*?@param?pos:提取I幀的起始位置,即從ts數據字節內容的什么位置開始提取,默認給0即可
?*?@param?audioPid:ts數據中音頻的pid,以便去掉音頻數據,否則推送I幀數據時會聽到異常的聲音
?*?@return:符合MPEG-2的188數據封裝結構的I幀數據(可能是多個I幀數據)可以直接把返回內容寫到文件,用vlc播放看到效果
?*/
public?static?byte[]?getiframes(byte[]?srcint?posint?audioPid){
List?list?=?new?linkedList();
int?start?=?0;
int?idx?=?0;
idx?=?pos;
boolean?iframe?=?false;
int?offset?=?0;
int?suffix?=?0;
int?totalLen?=?0;
while(idx? if(src[idx]==0x0?&&?src[idx+1]==0x0&&src[idx+2]==0x01?&&?src[idx+3]==0x00){
if(((src[idx+5]>>3)&0x07)==0x01){
if(!iframe){
start?=?idx;
iframe?=?true;
}
else{
if(idx>start){
offset?=?start%188;
suffix?=?188-(idx%188);
byte[]?buff?=?new?byte[idx+offset+suffix-start];
System.arraycopy(src?start-offset?buff?0?idx+offset+suffix-start);
totalLen?+=?buff.length;
list.add(buff);
}
start?=?idx+suffix;

評論

共有 條評論