1. 程式人生 > >EasyRTMP之rtmp流flash播放器無法正常播放問題解決(二)

EasyRTMP之rtmp流flash播放器無法正常播放問題解決(二)

問題簡介

EasyRTMP是EasyDarwin團隊開發的一套簡單易用的RTMP推送SDK。本文想講述下開發過程中遇到的一個問題。問題的現象是使用EasyRTMP推送音視訊流到自己搭建的nginx-rtmp伺服器,使用ffplay和vlc播放器都能夠正常播放,但是使用網頁flash播放時,總是會卡住,無法正常播放。

問題解決

開始時有些疑惑,因為ffplay在播放時都沒有提示任務警告等異常資訊,嘗試了多個網頁線上播放都是一樣的問題,認為問題肯定是在RTMP推送端。
首先想到的是遮蔽掉音訊,只推送視訊資料,再進行測試。結果讓我慶幸,遮蔽掉音訊後,果然一切正常。問題就出在音訊上,於是開始對AAC相關的部分進行一系列的排查。
網上搜索了一堆資料,分析了一開始的AAC header,以及ADTS頭部資料,都是正常的。具體分析過程可網上搜索,博主參考了

http://niulei20012001.blog.163.com/blog/static/7514721120130694144813/這篇。本人中提到需要去掉ADTS頭部再進行推送,於是又查了些資料,果然在傳送過AAC header之後,後面的AAC資料幀中需求去掉ADTS頭部。

於是加上了個程式碼判斷上層傳下來的資料是否已經包含ADTS,如果包含就去掉。

if (((data[0] & 0xFF) == 0xFF) && ((data[1] & 0xF0) == 0xF0) && (size > 7))
{
    data += 7;
    size -= 7
; }

去掉ADTS頭部後再次同時推送音視訊,果然所有播放器都可以正常播放,聲音也正常。

至此可以確定RTMP推送AAC資料時是需要去掉ADTS頭部的。

獲取更多資訊

Copyright © EasyDarwin.org 2012-2016

EasyDarwin

相關推薦

EasyRTMPrtmpflash播放無法正常播放問題解決

問題簡介 EasyRTMP是EasyDarwin團隊開發的一套簡單易用的RTMP推送SDK。本文想講述下開發過程中遇到的一個問題。問題的現象是使用EasyRTMP推送音視訊流到自己搭建的ngin

關於Unity視頻播放插件 AVPro Video3D物體上視頻播放

org 圖片 平面 type http com 項目創建 attr data 1.官網下載該插件或者我分享的鏈接: 鏈接:https://pan.baidu.com/s/1boGeJ8r 密碼:mvbf 2.新建項目創建主要控制物體 3.創建對於視頻播放在3D物體身上的

關於Unity視頻播放插件 AVPro Video360度全景視頻播放

div 官方 png 官網 場景 cube pan pro 鏈接 1.官網下載該插件或者我分享的鏈接: 鏈接:https://pan.baidu.com/s/1boGeJ8r 密碼:mvbf 2.拖入官方做好的預制體“360SphereVideo”或者“360CubeVid

關於Unity視頻播放插件 AVPro Video平面UI視頻播放

omv image 電腦配置 trigger alt -m sys avi provide 1.官網下載該插件或者我分享的鏈接: 鏈接:https://pan.baidu.com/s/1boGeJ8r 密碼:mvbf 2.新建項目導入資源,添加以下遊戲物體與UI到場景中

UVM暫存七:暫存模型的常規方法

本文轉自:http://www.eetop.cn/blog/html/28/1561828-6266224.html mem與reg的聯絡和差別 UVM暫存器模型也可以用來對儲存建模。uvm_mem類可以用來模擬RW(讀寫)、RO(只讀)和WO(只寫)型別的儲存,並且可以配置其模型的資料寬度

UVM暫存六:暫存模型的常規方法

本文轉自:http://www.eetop.cn/blog/html/28/1561828-6266223.html mirrored、desired和actual value 在我們應用暫存器模型的時候,除了利用它的暫存器檔案資訊,也會利用它來跟蹤暫存器的值。跟蹤暫存器的值,一方面是建立m

UVM暫存八:暫存模型的場景應用

本文轉自:http://www.eetop.cn/blog/html/28/1561828-6266225.html 如何檢查暫存器模型 在瞭解了暫存器模型的常規方法之後,我們需要考慮如何利用這些方法來檢查暫存器、以及協助檢查硬體設計的邏輯和資料比對。要知道,在軟體實現硬體驅動和韌體層時,也

android-音樂播放實現及原始碼下載

從本文開始,詳細講述一個音樂播放器的實現,以及從網路解析資料獲取最新推薦歌曲以及歌曲下載的功能。 功能介紹如下: 1、獲取本地歌曲列表,實現歌曲播放功能。 2、利用硬體加速感應器,搖動手機實現切換歌曲的功能 3、利用jsoup解析網頁資料,從網路獲取歌曲

android-----音樂播放的音量控制功能開發

一、佈局檔案 在RelativeLayout佈局裡設定一個ImageButton,點選其彈出一個SeekBar(用於音量調節), 再在其下面巢狀一個RelativeLayout,裡面包含兩個ImageView元件、一個SeekBar元件。 此外, anim---push_u

android-音樂播放實現及原始碼下載

本系列博文,詳細講述一個音樂播放器的實現,以及從網路解析資料獲取最新推薦歌曲以及歌曲下載的功能。 功能介紹如下: 1、獲取本地歌曲列表,實現歌曲播放功能。 2、利用硬體加速感應器,搖動手機實現切換歌曲的功能 3、利用jsoup解析網頁資料,從網路

【Android】音樂播放邊播邊快取AndroidVideoCache的使用方法

最近在做音樂播放器類的需求,做了一段時間,抽出一段時間來整理一下。【前言】首先,記錄一下如何找到我們與需求相關的開源庫。可以在GitHub上進行搜尋,我的主要需求是邊播邊快取。因此我在GitHub上搜索“android”“cache”等關鍵詞,搜到了這個 AndroidVid

《初學者C51自學筆記》定時四種工作方式

1、方式0 : 方式0為13位計數,由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢位時向TH0進位,TH0溢位時,置位TCON中的TF0標誌,向CPU發出中斷請求。   一共13位,空著的3位忽略不用管,TL0一直加1,直到為11111時再加1會溢位

Android內容提供Content Provider詳解

上一篇 Android之內容提供器Content Provider詳解(一)講解了Content Provider之訪問其他程式中的資料,本篇繼續講解創如何建自己的內容提供器 本博文是《第一行程式碼 Android》的讀書筆記/摘錄。 三、建立自己的內容提供

【SSH進階路】Struts基本原理 + 實現簡單登錄

target doctype 掌握 pack insert enter snippet file manage 上面博文,主要簡單的介紹了一下SSH的基本概念,比較宏觀。作為剛開始學習的人可以有一個總體上的認識,個人覺得對學習有非常好的輔助功能,它不不過

Windows 文件服務升級&跨林遷移

windows 文件遷移文件服務器登陸到ADMT遷移服務器上,打開ADMT管理控制臺,郵件點擊AD遷移工具,選擇"計算機遷移向導"點擊下一步選擇源域為舊的控,目標域為新域控,點擊下一步從域中選擇計算機,點擊下一步添加文件服務器,把新文件服務器(windows server 2012)添加到列表中,點擊下一步選

主從輔助無法同步問題解決

主從復制問題:建立主從復制(單主單從M-S)後無法同步數據 這裏首先對單主單從M-S的操作步驟先做下簡要說明(具體操作略。。。) 一.環境準備;二.master操作1.開啟主服務器二進制日誌(並加入git選項);2.在主服務器的MySQL上創建rep用戶,並用create和insert命令模擬在MySQL上加

SQL Server 基礎《學生表-教師表-課程表-選課表》

lap sql 分享 var -c view weight HA aid 表結構 --學生表tblStudent(編號StuId、姓名StuName、年齡StuAge、性別StuSex) --課程表tblCourse(課程編號CourseId、課程名稱CourseNam

【JAVA秒會技術秒殺面試官】JavaSE常見面試題

方法 變量 dir 步驟 註解 無法 t對象 面試 線程 21.在Java中,如何跳出當前的多重嵌套循環? 答:在最外層循環前加一個標記如A,然後用break A;可以跳出多重循環。(Java中支持帶標簽的break和continue語句,作用有點類似於C和C++中的go

安卓專案實戰強大的網路請求框架okGo使用詳解:深入理解Callback自定義JsonCallback

前言 JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快了傳輸速度,目前客戶端伺服器返回的資料大多都是基於這種格式的,相應的我們瞭解的關於json的解析工具主要有兩個:Gson(Google官方出的)和fas

SQL追蹤phpgjx2.0版本配置

第五步:重啟MySQL服務 驗證MySQL日誌列印檔案新建成功,開啟在第四步中配置的日誌資料夾,在H:\mysql5_7_21目錄下查詢是否有mysql_bz.log檔案,如果有證明修改資料庫服務成功。 第六步:配置phpgjx的配置檔案config.php,新增如下程式碼