表姐直播人氣很差秒紧?Python一招引爆直播推流效果

本節(jié)介紹了Python完成直播推流作用栗恩,主要是經(jīng)過(guò)opencv讀取視頻對(duì)視頻分割為幀透乾,本文經(jīng)過(guò)實(shí)例代碼講解的非常具體

做任何事情都有一定的思路,寫(xiě)代碼更是如此磕秤,直播推流的整體思路如下:

  1. opencv讀取視頻

  2. 將視頻分割為幀

  3. 對(duì)每一幀進(jìn)行處理(opencv模板匹配)

  4. 在將此幀寫(xiě)入pipe管道

  5. 利用ffmpeg進(jìn)行推流直播

在處理本地視頻時(shí)乳乌,并沒(méi)有延時(shí)卡頓的情況。但對(duì)實(shí)時(shí)視頻流的時(shí)候市咆,呈現(xiàn)了卡頓延時(shí)的作用汉操。在一頓度娘操作之后,采取了多線程的辦法蒙兰。

opencv讀取視頻

#一個(gè)莫名其妙的python群:740322234
def run_opencv_camera():
 video_stream_path = 0
 # 當(dāng)video_stream_path = 0 會(huì)開(kāi)啟計(jì)算機(jī) 默認(rèn)攝像頭 也可以為本地視頻文件的路徑
 cap = cv2.VideoCapture(video_stream_path)
 
 while cap.isOpened():
 is_opened, frame = cap.read()
 cv2.imshow('frame', frame)
 cv2.waitKey(1)
 cap.release()

OpenCV模板匹配
模板匹配就是在一幅圖像中尋找一個(gè)特定目標(biāo)的方法之一磷瘤,這種方法的原理非常簡(jiǎn)單,遍歷圖像中每一個(gè)可能的位置搜变,比較各處與模板是否相似采缚,當(dāng)相似度足夠高時(shí),就認(rèn)為找到了目標(biāo)挠他。

#一個(gè)莫名其妙的python群:740322234
def template_match(img_rgb):
 # 灰度轉(zhuǎn)換
 img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
 # 模板匹配
 res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
 # 設(shè)置閾值
 threshold = 0.8
 loc = np.where(res >= threshold)
 if len(loc[0]):
 # 這里直接固定區(qū)域
 cv2.rectangle(img_rgb, (155, 515), (1810, 820), (0, 0, 255), 3)
 cv2.putText(img_rgb, category, (240, 600), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
 cv2.putText(img_rgb, Confidence, (240, 640), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
 cv2.putText(img_rgb, Precision, (240, 680), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
 cv2.putText(img_rgb, product_yield, (240, 720), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
 cv2.putText(img_rgb, result, (240, 780), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 5)
 return img_rgb

FFmpeg推流

在Ubuntu 14 上安裝 Nginx-RTMP 流媒體服務(wù)器(可以百度)

import subprocess as sp
rtmpUrl = ""
camera_path = ""
cap = cv.VideoCapture(camera_path)
# Get video information
fps = int(cap.get(cv.CAP_PROP_FPS))
width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
# ffmpeg command
command = ['ffmpeg',
 '-y',
 '-f', 'rawvideo',
 '-vcodec','rawvideo',
 '-pix_fmt', 'bgr24',
 '-s', "{}x{}".format(width, height),
 '-r', str(fps),
 '-i', '-',
 '-c:v', 'libx264',
 '-pix_fmt', 'yuv420p',
 '-preset', 'ultrafast',
 '-f', 'flv', 
 rtmpUrl]
# 管道配置
p = sp.Popen(command, stdin=sp.PIPE)
# read webcamera
while(cap.isOpened()):
 ret, frame = cap.read()
 if not ret:
 print("Opening camera is failed")
 break
 # process frame
 # your code
 # process frame
 # write to pipe
 p.stdin.write(frame.tostring())

說(shuō)明:rtmp是要接受視頻的服務(wù)器扳抽,服務(wù)器按照上面所給連接地址即可。

多線程處理

#一個(gè)莫名其妙的python群:740322234
def image_put(q):
 # 采取本地視頻驗(yàn)證
 cap = cv2.VideoCapture("./new.mp4")
 # 采取視頻流的方式
 # cap = cv2.VideoCapture(0)
 # cap.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
 # cap.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
 if cap.isOpened():
 print('success')
 else:
 print('faild')
 while True:
 q.put(cap.read()[1])
 q.get() if q.qsize() > 1 else time.sleep(0.01)
def image_get(q):
 while True:
 # start = time.time()
 #flag += 1
 frame = q.get()
 frame = template_match(frame)
 # end = time.time()
 # print("the time is", end-start)
 cv2.imshow("frame", frame)
 cv2.waitKey(0)
 # pipe.stdin.write(frame.tostring())
 #cv2.imwrite(save_path + "%d.jpg"%flag,frame)
# 多線程執(zhí)行一個(gè)攝像頭
def run_single_camera():
 # 初始化
 mp.set_start_method(method='spawn') # init
 # 隊(duì)列
 queue = mp.Queue(maxsize=2)
 processes = [mp.Process(target=image_put, args=(queue, )),
   mp.Process(target=image_get, args=(queue, ))]
 [process.start() for process in processes]
 [process.join() for process in processes]
def run():
 run_single_camera() # quick, with 2 threads
 pass

運(yùn)用Python3自帶的多線程模塊mutilprocessing模塊,創(chuàng)建一個(gè)行列贸呢,線程A從經(jīng)過(guò)rstp協(xié)議從視頻流中讀取出每一幀镰烧,并放入行列中,線程B從行列中將圖片取出楞陷,處理后進(jìn)行顯示怔鳖。線程A假如發(fā)現(xiàn)行列里有兩張圖片,即線程B的讀取速度跟不上線程A猜谚,那么線程A主動(dòng)將行列里邊的舊圖片刪掉败砂,換新圖片

pyhton工具包->
PDF資料->
全部源碼領(lǐng)取->
鏈接:https://pan.baidu.com/s/1PVRKKYhVfJB55QUbzIgMPg
提取碼:oinv

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市魏铅,隨后出現(xiàn)的幾起案子昌犹,更是在濱河造成了極大的恐慌,老刑警劉巖览芳,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斜姥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沧竟,警方通過(guò)查閱死者的電腦和手機(jī)铸敏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悟泵,“玉大人杈笔,你說(shuō)我怎么就攤上這事「夥牵” “怎么了蒙具?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)朽肥。 經(jīng)常有香客問(wèn)我禁筏,道長(zhǎng),這世上最難降的妖魔是什么衡招? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任篱昔,我火速辦了婚禮,結(jié)果婚禮上始腾,老公的妹妹穿的比我還像新娘州刽。我一直安慰自己,他們只是感情好浪箭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布穗椅。 她就那樣靜靜地躺著,像睡著了一般山林。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天驼抹,我揣著相機(jī)與錄音桑孩,去河邊找鬼。 笑死框冀,一個(gè)胖子當(dāng)著我的面吹牛流椒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播明也,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宣虾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了温数?” 一聲冷哼從身側(cè)響起绣硝,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撑刺,沒(méi)想到半個(gè)月后鹉胖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡够傍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年甫菠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冕屯。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寂诱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出安聘,到底是詐尸還是另有隱情痰洒,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布搞挣,位于F島的核電站带迟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏囱桨。R本人自食惡果不足惜仓犬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舍肠。 院中可真熱鬧搀继,春花似錦、人聲如沸翠语。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肌括。三九已至点骑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背黑滴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工憨募, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袁辈。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓菜谣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晚缩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尾膊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容