計算視訊檔案(包含PCR)播放頻寬的方法
//
// This routine extracts the bitrate from the content file.
// The content file must contain PCRs
//
////////////////////////////////////////////////////////////////////////
double getBitRate(FILE *fp)
{
// variables used to get bit rate from content file
uint64_t PCR0 =0, PCR1 =0;
uint64_t PCRdelta;
double bitRate =0;
uint32_t mpegPackets =0;
uint32_t gotPCR
unsigned char m2tTmp[256];
int length;
unsigned int PID =0;
//used to control "." output
int sync =0;
printf(" Scanning content file for bit rate ");
for (;;) {
length = fread(m2tTmp, sizeof(uint8_t), 188, fp);
if(length !=188) break;
mpegPackets
if (sync %1200==0 ) {
//show user something while we loop
printf(".");
//force it out-may not otherwise appear in real time
fflush(stdout);
}
sync++;
// look for the sync byte
if(m2tTmp[0] !=0x47) {
printf("vpSendspts: data corruption in content file ");
fclose(fp);
exit(2);
}
// we are going to scan through the first 10 PCRs in this content.
// According to the specifications that will be on the order of
// every 40 milliseconds. We don't have to scan the whole file
// to get a good sense of its validity and bit rate.
// First see if the TS header indicates the presence of an
// adaptation field.
if(GET_DVBASI_ADAPT(m2tTmp) &0x02) {
// Get the adaptation field and look for the presence of
// a PCR in the adaptation field
if(GET_DVBASI_ADAPTLENGTH(m2tTmp) ==0) {
printf("Zero length AF ");
continue;
}
if(GET_DVBASI_ADAPTFIELD(m2tTmp) &0x10) {
// Get the initial PCR and reset the counter
if(gotPCR ==10) { // skip the first few, some times they are bad!
PID = GET_DVBASI_PID(m2tTmp);
GET_DVBASI_PCR(m2tTmp, PCR0);
mpegPackets =0;
}
// Look for the 10th PCR in this content and
if((gotPCR >20) && PID == GET_DVBASI_PID(m2tTmp)) {
GET_DVBASI_PCR(m2tTmp, PCR1);
PCRdelta = (uint64_t) ((uint64_t)PCR1 - (uint64_t)PCR0);
bitRate = (double) ( ((double)(40608000000ULL)*((double)mpegPackets))/(double)(PCRdelta));
break;
}
gotPCR++;
}// GET_DVBASI_ADAPTFIELD
}//GET_DVBASI_ADAPT
}// while read
//rewind file
rewind(fp);
fflush(fp);
return(bitRate);
}
相關推薦
計算視訊檔案(包含PCR)播放頻寬的方法
通過對碼流播放卡的分析,以及對公式的對照,對實際計算播放視訊檔案所用頻寬的方法進行了分析(附件中,帶有c語言的實現) 分析如下: 關鍵是最後計算頻寬的公式: PCRdelta = (uint64_t) ((uint64_t)PCR1 - (uint64_t)PCR
計算視頻文件(包含PCR)播放帶寬的方法 PCR計算碼率
公式 帶寬 .net 指向 div ive gpo 但是 重要性 關於PCR的重要性在網絡上到處都是,但是關於PCR的計算的帖子網上寫的卻不多 ,分析來,發現並不是一個很復雜的過程 在此 我簡單描述一下關於通過PCR計算碼率的過程。首先。我們要在TS流中找到 PSI信息表,
ffmpeg opencv 開啟視訊檔案,並且播放
// FFMpeg + OpenCV demo #include <stdio.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>
[總結]Android 獲取本地視訊檔案路徑並播放的幾種方式
Android 獲取本地視訊檔案路徑的方式 在android 專案開發過程中,遇到獲取本地視訊檔案的問題,記錄一下獲取本地檔案的幾種方式。 首先說下sdcard在手機中的掛載位置。 android手
視訊檔案大小計算方法(終極篇附例項)
圖片原創 / 阿酷TONY / 2018-12-13 視訊檔案大小計算方法(終極篇附例項) 預估視訊儲存所需空間 為視訊伺服器所需容量大小提供參考數值 視訊檔案大小的計算 視訊檔案大小計算公式:(音訊位元速率+視訊位元速率) x 時長 / 8
opencv+vs2017實現視訊的讀取及播放,同時將每一幀圖片儲存在指定檔案
#include "highgui.h" #include <iostream> using namespace std; int main(int argc, char** argv) { cvNamedWindow("視訊播放器", CV_WINDOW_A
QT使用QMediaPlayer + QVideoWidget播放視訊檔案
QT使用QMediaPlayer + QVideoWidget播放視訊檔案 如需轉載請標明出處:http://blog.csdn.net/itas109 QQ技術交流群:129518033 目錄 文章目錄 QT使用QMediaPlayer
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援
關於NOKIA E71 播放視訊檔案(mp4等)的問題
因本人暫時不想更換智慧手機,目前打算繼續NOKIA E71到底,雖然螢幕較小,但也準備嘗試下視訊檔案的播放,NOKIA E71手機中自帶的或者通過手機本身錄影產生的視訊檔案播放正常,在將電腦上下載的flv視訊檔案直接通過優酷客戶端工具轉換為mp4(好像還支援3gp)檔案格式,然後傳輸到NOKIA E
ffmpeg解碼視訊檔案並播放
最近學習了一下如何使用ffmpeg解碼音視訊,網上的教程挺多但是也挺雜的,搞了好幾天,明白了ffmpeg解碼音視訊的大體流程,這裡記錄一下ffmpeg解碼視訊並播放音視訊的例子,但並沒有做音訊、視訊播放 的同步處理。 直接上程式碼: #include &l
windows下使用FFmpeg生成YUV視訊檔案並播放(通過命令的方式)
一、YUV的定義 YUV是一種顏色編碼方法。它跟我們常見的RGB格式區分開來,常使用在各個視訊處理元件中。其中"Y"代表明亮度,"U"和"V"代表其色度。視訊播放器把市面上流行的MP4等格式的視訊檔案解碼出來,得到的一般會是YUV格式的資料,然後得進行轉碼(比如通過op
Unity在ios端視訊檔案無法播放的解決辦法
unity不管是用自帶的VideoPlayer還是AvPro等等外掛,部分視訊在pc端能完美播放,但是到IOS端就無法播放, 此時,我們只需利用工具將視訊檔案改為webm格式,將視訊編碼格式改為VP8即可 本人使用迅捷視訊轉換器轉換格式,轉換器下載連結:https
opencv無法讀取視訊檔案的解決方法
這是我嘗試解決的三種途徑,大家可以嘗試一下,本人現在已經能夠正常讀取。 1、檔案路徑是否正確; 2、是否有解碼器; 3、是否配置成功。 網上關於這三種途徑都有詳細教程,在此不一一贅述,僅提供三個連結,以供參考。 關於配置: 第一次寫部落格,對於引用網址
【Android實戰】播放assets或者raw資料夾下的視訊檔案
(1)assets資料夾下 AssetFileDescriptor afd = getAssets().openFd("guide_video.mp4"); mediaPlayer.setDataSource(afd.getFileDescript
android 播放assets檔案裡視訊檔案的問題
該方法不可以,還可以參考我的另文章:http://blog.csdn.net/moyunfei1987/article/details/37905625 今天做了一個功能,就是播放專案工程裡面的視訊檔案,不是播放SD卡視訊檔案。 我開始嘗試把視訊檔案放到 assets
關於webview適配H5上傳照片或者視訊檔案的方法
一、需要實現的功能:用H5實現的App中需要在H5獲取手機中的照片或者視訊檔案上傳到伺服器。二、分析實現方法:由於不懂前端開發,不知道H5中有 input file之類的標籤控制元件,可以用來選擇檔案,剛開始的思路還是想著native 端是否要通過提供inputstream流
Html5學習筆記四—播放音訊和視訊檔案
1, 載入音訊檔案: Key word :<audio src=”路徑” controls=”controls”> Src是音訊路徑 ,controls屬性用來提供播放,暫停,音量控制 下面是一個簡單程式碼進行播放本地音訊 <!DOCTYPE HTML&
使用python播放視訊檔案
基於python和opencv實現的 import numpy as np import cv2 cap = cv2.VideoCapture('f:/rain_of_lovesickness.m
尼康視訊檔案丟失的恢復方法
尼康攝像機是日系品牌中比較大的廠商,其產品佔有較大的市場份額。尼康主流產品使用MP4和MOV兩種結構對視訊檔案進行打包封裝,和其它日系一樣尼康視訊檔案碎片數量是比較多的,這就導致用普通恢復軟體無法恢復丟失的資料!那麼尼康的視訊刪除後是否就無法恢復呢?答案是否定的,下邊我們介紹一個尼康視訊檔案恢復的簡單方法,無
Android使用MediaCodec硬解碼播放H264格式視訊檔案
前些時間,通過各種搜尋加請教了好幾個同行的朋友,在他們的指點下實現: RTSP+H264實時視訊播放播放及把實時視訊流儲存到手機SD卡中,再對儲存的H264格式檔案進行播放等基本功能。 非常感謝這些朋友的無私幫忙,在實現功能的同時,我也把他們提供的一