日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg 反复推流_FFmpeg 推流问题记录

發布時間:2024/8/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg 反复推流_FFmpeg 推流问题记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)推流結束之后,沒有在m3u8文件添加#EXT-X-ENDLIST,導致瀏覽器播放結束之后,畫面中間一直轉圈,表示繼續加載,沒有停止

推流采用的是ffmpeg + flv + rtmp方式

如下是各種無效方案:

1avio_printf(m_oFmtCtx->pb, "#EXT-X-ENDLIST\n");

2不是所有點播m3u8中都有EXT-X-PLAYLIST-TYPE,表明類型。最直接區分就是直播m3u8沒有EXT-X-ENDLIST標簽,因為是實時流,自然不會有結束,否則就是點播流了。

從上面這段話是否意味著配置有問題???????? application hls { ????live on;????hls on;

3因為live m3u8文件列表是需要實時更新的,我們做測試的話,可以先在最后面加上#EXT-X-ENDLIST,這個方法經測試有效,但這樣已經不是live m3u8模式

原因

這種是直播流方式,根本不可能有結束符的,并且調用的也不正確,因為這種輸出是針對文件的,保存為m3u8文件格式,是后臺rtmp模塊的工作,因此不可行

2)為了生成的m3u8的文件尾添加#EXT-X-ENDLIST,只能調用FFmpeg庫將H264碼流轉換成ts切片,然后生成m3u8文件,這種方案可行

調用接口如下:

std::string strFileIndexName = "index.m3u8";

avformat_alloc_output_context2(&m_oFmtCtx, NULL, "hls", strFileIndexName.c_str());

說明:指定hls作為復用器muxer

3)點播和直播的區別

點播就是將一個媒體文件切割分成多個TS文件,并且m3u8文件保存全部TS文件列表,并且文件結尾包含#EXT-X-ENDLIST

直播則是列表長度上會有所控制,一般會比較短,并且為了減少延時,每一個分片的時長控制低于10秒,因為只有將分片完整下載到本地

才能正常的播放,并且m3u8這個文件根據直播的時間進行實時更新

4)FFmpeg循環推流指令

ffmpeg -threads 2 -re -fflags +genpts -stream_loop -1 -i /mnt/test.mp4 ? -c:v copy -c:a aac -f flv rtmp://172.2.8.31:1935/live/test2

-re : 表示使用文件的原始幀率進行讀取,因為ffmpeg讀取視頻幀的速度很快,如果不使用這個參數,ffmpeg可以在很短時間就把video.mp4中的視頻幀全部讀取完并進行推流,這樣就無法體現出視頻播放的效果了。

ffmpeg -y -re -fflags +genpts -stream_loop -1 -probesize 1280 -i test.mp4 -c copy -f flv rtmp_url, 加-probesize 1280選項后重復播放時不會卡,會比較連貫一些。

5)通過配置hls on將直播服務器配置成實時回放服務器

這種情況下,可以將推送流保存成m3u8格式或者flv格式,如果需要保存成mp4或者其他格式,需要借助FFmpeg等在推流過程中進行轉碼,目前nginx+rtmp沒有這方面的功能

6)提供m3u8回放的網頁測試工具,因為使用ffplay工具播放的效果,跟網頁播放的效果不一定是一樣的,必須實際上測試網頁的效果

最初的時候就是因為采用ffplay.exe播放,而沒有發現視頻結束,出現轉圈一直加載的情況

http://tool.liumingye.cn/m3u8/index.php

總結

以上是生活随笔為你收集整理的ffmpeg 反复推流_FFmpeg 推流问题记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。