流媒體伺服器搭建獲取推流碼
發布時間: 2024-09-26 15:18:36
A. FFmpeg 代碼實現流媒體推流(RTSP)
最近需要做實時錄屏並把視頻推流到RTSP伺服器,具體流程是抓取屏幕內容(bitmap),並把bitmap轉化為YUV,接著把YUV編碼成H264,再把H264碼流推到RTSP伺服器;把採集到的PCM編碼為AAC,再把AAC推流至RTSP伺服器。
看了雷神的一篇文章: 最簡單的基於FFmpeg的推流器(以推送RTMP為例) ,他是把本地的視頻文件推流至RTMP伺服器,並不符合我的要求。
接著我找到另一篇文章: ffmpeg實現H264壓縮並且推流至RTSP ,這篇文章只有圖像編碼,並沒有音頻編碼,並且推流之後並沒有播放成功。
我綜合上面兩位大佬的思路,和查找一些資料實現了這個功能。
RTSP伺服器使用的是 HappyTime 的免費試用版本。
我抓到的bitmap是BGRA格式的,所以使用的圖像格式是 AV_PIX_FMT_BGRA , cropImage 是含有rgba圖像的數組
調用:
由於我是實時抓取的屏幕, frame_yuv->pts 設為當前的時間戳,以保證能正常播放。
調用:
調用:
其中pcm_buff是包含pcm數據的數組
使用udp傳輸時傳到1400多幀就斷開鏈接了,原因不明,所以改用使用tcp協議傳輸
延遲有1.5秒左右
參考:
https://blog.csdn.net/leixiaohua1020/article/details/39803457
https://blog.csdn.net/yunge812/article/details/79345584
https://trac.ffmpeg.org/wiki
熱點內容