ffmpeg開發知識點回顧

視頻花屏/卡頓緣由

  • 若是GOP分組中的P幀丟失會形成解碼端的圖像發生錯誤
  • 爲了不花屏問題的發生,通常若是發現P幀或者I幀丟失,就不顯示本GOP內的全部幀,直到下一個I幀來後,從新刷新圖像。

時間基

  • tbr: 幀率
  • tbn:time base of stream
  • tbc:time base of codec

時間戳

  • PTS: Presentation timestamp
  • DTS: Decoding timestamp
  • I(intra)/B(bidirectional)/P(predicted)幀

時間戳順序

  • 實際幀順序:I B B P
  • 存放幀順序:I P B B
  • 解碼時間戳:1 4 2 3
  • 展現時間戳:1 2 3 4

從哪兒得到PTS

  • AVPacket中的PTS
  • AVFrame中的PTS
  • av_frame_get_baset_effort_timstamp()

計算當前幀的PTS

  • PTS=PTS * av_q2d(video_stream->time_base)
  • av_q2d(AVRotional a){ return a.num/(double)a.den }

計算下一幀的PTS

  • video_clock: 預測的下一幀視頻的PTS
  • frame_delay: 1/tbr
  • audio_clock: 音頻當前播放的時間戳

多媒體格式轉換

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv算法

  • -i:輸入文件
  • vcodec copy:視頻編碼處理方式
  • acodec copy:音頻編碼處理方式

該條命令的做用是將視頻文件out.mp4格式轉換爲out.flv,音頻編碼方式保持不變,視頻編碼方式保持不變。框架

錄音命令

ffmpeg -f avfoundation -i :0 out.wav
:0 表明音頻設備
該條命令表示使用AVfoundation框架錄製一段音頻數據,數據來源是麥克風,輸出文件是out.wav,錄製完成以後,使用ffplay out.wav命令進行播放。ide

錄屏命令

ffmpeg -f avfoundation -i 1 r 30 out.yuv編碼

  • -f: 指定使用AVfoundation採集數據
  • -i: 指定從哪兒採集數據,它是一個文件索引號
  • -r:指定幀率

該條命令表示使用AVfoundation框架,以30幀每秒的幀率錄製屏幕,輸出文件是out.yuv。使用ffplay能夠進行播放,可是播放的時候須要制定屏幕尺寸和錄製的數據格式,不然播放不出來。code

ffmpeg濾鏡命令

ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4視頻

crop格式: crop=out_w:out_h:x:yserver

該命令表示對輸入的in.mov文件進行寬和高的裁剪,以原始視頻爲中心進行寬和高分別減去200的裁剪,同時視頻的編碼格式使用libx264,音頻的編碼格式保持不變。索引

文件的刪除與重命名

  • avpriv_io_delete()
  • avpriv_io_move()

碼流基本概念

  • SODB(String Of Data Bits),原始數據比特流,長度不必定是8的倍數,它是由VCL層產生
  • RBSP(Raw Byte Sequence Payload,SODB + trailing bits),算法是在SODB最後一位補1,不安字節對齊則補零。

SPS & PPS

  • SPS(Sequence Paramter Set),序列參數集,存放幀數,參考幀數目,解碼圖像尺寸,幀場編碼模式選擇標識等。
  • PPS(Picture Paramter Set)圖像參數集,存放熵編碼模式選擇標識、片組數目、初始量化參數和去方塊濾波係數調整標識等。

H264壓縮技術

  • 幀內預測壓縮,解決的是空域數據冗餘問題
  • 幀間預測壓縮,解決的是時域數據冗餘問題
  • 整數離散餘弦變換(DCT),將空間上的相關性變成頻域上無關的數據而後進行量化。
  • CABAC壓縮。

直播推流/拉流

  • 直播推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamNameget

  • 直播拉流

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv直播

相關文章
相關標籤/搜索