ffmpeg時(shí)間戳問(wèn)題匯總_第1頁(yè)
ffmpeg時(shí)間戳問(wèn)題匯總_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余5頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ffmpeg時(shí)間戳問(wèn)題匯總A:RFC3984規(guī)定采用90000 Hz的時(shí)鐘,因此如果編碼幀頻是30,那么時(shí)間 戳間隔就該是90000 / 30 3000,根據(jù)抓包來(lái)看,似乎時(shí)間戳間隔的確是3000。 時(shí)間戳的間隔不固定,比如有的時(shí)間戳間隔是2990有的是3002,會(huì)導(dǎo)致解析出來(lái) 的視頻快播的效果么Q:各位大俠好:我現(xiàn)在正在開(kāi)發(fā)視頻實(shí)時(shí)流播放,簡(jiǎn)單的過(guò)程如下:采集視頻流-視頻流轉(zhuǎn)換為Sorenson H. 263編碼格式-把編碼的實(shí)時(shí) 流通過(guò)RTMP協(xié)議發(fā)送-flash客戶(hù)端進(jìn)行播放?,F(xiàn)在我的時(shí)間戳顆粒是這樣生成的: 第一幀的時(shí)間戳為0;第二幀的時(shí)間戳的算法為:第一個(gè)字符編碼的當(dāng)前時(shí)間- 上一幀

2、第一個(gè)字符編碼的當(dāng)前時(shí)間根據(jù)這個(gè)時(shí)間顆粒的算法,我在flash客戶(hù)端 播放就會(huì)產(chǎn)生延時(shí)。請(qǐng)問(wèn)各位大俠有什么好的建議或是文檔之類(lèi)的,以前firstime管管建議我看RFC4629文檔,但是效果不太明顯,謝謝A;時(shí)間戳順序累加就行了,每次加1Q:最近做了一個(gè)捕捉攝像頭并保存FLV的小東西,發(fā)現(xiàn)轉(zhuǎn)換完畢后FLV文件,用播放器播放的時(shí)候,速度特別快,大概是正常速度的4倍。請(qǐng) 問(wèn)這是怎么回事,網(wǎng)上搜了一下,說(shuō)是時(shí)間戳的問(wèn)題,可是PTS我跟了,AVPacket的PTS是每幀增長(zhǎng)40, time.base為:25/s.。DTS是個(gè)無(wú)效值。PTS的計(jì)算是 根據(jù)ffmpeg的例子藥的。pkt. pts av_r

3、escale_qoAcc-coded_frame-pts oAcc- time_baseaudio_st-time_basel. dts到底需不需要自己計(jì)算,2.還有播放速度 過(guò)快的可能原因,3.還有PTS和DTS的具體含義,int64_t ptsIIIpresentation time stamp intime_base unitsint64_t dts / decompression time stamp in time_base units上面的意思是不是說(shuō),播放器根據(jù)PTS進(jìn)行播放。然后DTS是在編碼的時(shí)候自己設(shè)置, 剛用ffmpeg,好些東西不懂,還請(qǐng)大俠多多指教-剛才乂試了一下,把

4、time_base降為10幀每秒。播放速度和正常速度接近。但是不知道FLV文件的幀率該設(shè) 置多少合適。有沒(méi)有一個(gè)權(quán)威的說(shuō)法。A:我也做攝像頭捕捉,跟你出現(xiàn)一樣的問(wèn) 題,我自己分析的話(huà),應(yīng)該是捕捉攝像頭的圖像的速度只有10幀每秒,但是保存成 視頻25幀每秒的話(huà)播放看起來(lái)就非???,但是我攝像頭捕捉設(shè)定的是25幀每秒,難道是速度達(dá)不到,反正我還沒(méi)解決,LZ解決了的話(huà)告訴下,謝謝。暫時(shí)認(rèn)為是攝 像頭捕捉速率問(wèn)題。換了一個(gè)高清無(wú)驅(qū)攝像頭就好了Q:在每個(gè)音視頻數(shù)據(jù)包中都 含有PTS和DTS,一個(gè)數(shù)據(jù)包中應(yīng)該含有多個(gè)數(shù)據(jù)幀以及音頻數(shù)據(jù),那么這里的PTS和DTS它是如何來(lái)標(biāo)識(shí)數(shù)據(jù)幀的,PTS和DTS的單位是什

5、么,視頻的最小單位是幀,可通過(guò)PTS來(lái)指定它何時(shí)播放,那音頻的最小單位是什么,這里的PTS對(duì)音頻而言它標(biāo)識(shí)的是什么,是這個(gè)時(shí)間點(diǎn)采樣點(diǎn)嗎,在網(wǎng)上找了很久關(guān)于音視 頻編解碼的資料,都沒(méi)有合適的A:audio_timebaseav_q2dfmtctx-streamsaudio_index-time_basevideo_timebaseav_q2dfmtctx-streamsvideo_index-time_baselast_video_pts ptsvideo_timebaselast_audio_pts pts audio_timebasetimebase就是單位以audio為基準(zhǔn)同步video

6、o只要設(shè)置好了ao的參數(shù),如sample rate channels sample Ms:size納audio驅(qū)動(dòng)就能以正確的速度播放,所以只要程序里write不出大問(wèn)題的話(huà), 這種同步是非常有效的。在video out里如下做:pre_timeav_ge11imegl_vovo_displaypicafter_time av_gettimerest_time 10001000/fps一after_time一pre_timeav_diff last_audio_pts一last_video_ptsif av_(Hff 0. 2辻av_diff 0. 5 rest_time - rest_tim

7、e / 4 else rest_time - rest_time / 2else if av_diff一0 2 if av diff一0 5 rest time rest time / 4 else rest time rest_time/ 2if rest_time0 usleeprest_timeQ:謝謝kf701的回復(fù),看后明口 了不少這種同步是音頻抽 樣一次就與一幀圖像去同步的嗎,A:上面的代碼是每display個(gè)picture就與audio的PTS比較一下如果沒(méi)有audio只有video那么video就會(huì)以fps顯示靠的 就是那個(gè)usleeprest_timeQ:如何利用AVPack

8、et包里的ptsdts實(shí)現(xiàn)音視頻同步, 聲頻播放是只管自己播放,視頻有一個(gè)初始化播放幀率,如何根據(jù)AVPacket里的ptsdts還實(shí)現(xiàn)兩者的同步,現(xiàn)在我的視頻播放一直按原始播放幀率播放,聲音有點(diǎn)卡 哪位知道,盡快告知小弟A:DTS:decoding time stampPTS:presentation timestampGenerally the PTS and DTS will only differ when the stream we are playing hasBframes in it. Q:關(guān)于b幀和時(shí)間戳的問(wèn)題我從mpeg2視頻中用av_read_frame讀取視頻幀并解碼,

9、順序是IPBBPBB.它們的pts順序是1423756現(xiàn)在我要 把這個(gè)視頻再用mpeg2編碼,最大b幀數(shù)還是2.那么我在編碼時(shí)是否要將視頻數(shù)據(jù) 調(diào)整為按顯示時(shí)間先后的順序,再交給avcodec_encode_video編碼,即把第 2幀 放在3、4幀之后,第7幀放在5、6幀之后,A:你不能這么做,編碼器會(huì)給你這么 做的。如果你有B幀,那么所有的B幀都會(huì)被放在緩沖區(qū)里直到下一個(gè)I/P幀到 來(lái)例如:你的輸入序列是IBBPBBPBBI那么輸出的序列是輸入I,編碼I,輸出I輸入B輸入B輸入P,編碼P,輸出P編碼B,輸出B編碼B,輸出B輸入P編碼P,輸出P。在解碼端所有的P幀都會(huì)被放在緩沖力直到下一個(gè)I

10、/P真的到來(lái)如:解碼I,輸出I解碼P放入緩沖P解碼B,輸出B解碼B,輸出B解碼P,輸出上一次P幀Q:解碼出來(lái)的圖片的時(shí)間戳問(wèn)題MPEG一個(gè)包中包含有時(shí)間 戳而可能兒個(gè)包才能解碼出一張圖象也可能一個(gè)包能解碼出兒張圖請(qǐng)問(wèn)包中的 時(shí)間戳與解碼出來(lái)的圖象如何對(duì)應(yīng)上A:在ffmpeg中通過(guò)parser部件把從avformat部件取下來(lái)的原始包重新“合成”為有僅包含一個(gè)完整幀的包。從MPEG2部份 的代碼中看出,如果兒個(gè)包才能解碼出一張圖象”的話(huà),會(huì)取第一個(gè)包的PTS和DTS,如果“也可能一個(gè)包能解碼出兒張圖”,則會(huì)跟據(jù)這個(gè)包的PTS和DTS通過(guò) 幀頻推算出其它幀的DTSo Q: ffmpeg的avcod

11、ec_decode_video函數(shù)解碼時(shí)間戳問(wèn) 題,在VLC中調(diào)用avcodec_decode_video函數(shù)進(jìn)行解碼時(shí),AVFrame-pts時(shí)間戳不 對(duì),導(dǎo)致我的圖像不能夠顯示,請(qǐng)問(wèn)有誰(shuí)知道它的解碼原理,這個(gè)PTS怎么得出 的嗎,還是外部傳入的,A: / NOTE: ipts is the PTS of the _first_ picture beginningin this packet if any / is-video_st-codec-reordered_opaque pkt-pts lenlavcodec_decode_videois-video_st-codec frame g

12、ot_picture pkt-data pkt-size ifdecoder_reorder_pts pkt-dts AV_N0PTS_VALUE frame- reordered_opaque AV_N0PTS_VALUEpts frame-reordered_opaque else ifpkt- dts AV_NOPTS_VALUE pts pkt-dts else pts 0 ptsav_q2disvideo_st- time_baseQ:我貼下VLC的代碼,(vlc-0. 9. 8a/modules/codec/avcodec/video. c文件中)i_used avcodec_decode_videop_sys-p_context p_sys-p_ff_pic b_gotpicture p_sys-i_buffer b_flushNULL :uint8_tp_sys-p_buffer p_sys- i_buffer中間省略

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論