導航:首頁 > 網路設置 > ffmpeg設置網路緩存

ffmpeg設置網路緩存

發布時間:2022-04-27 14:08:46

A. window下ffmpeg怎麼解決 在線等 對其不熟 只想用

1、准備工作:

在幹活之前,先把下面五個軟體下載下來。

1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/

2) SDL http://www.libsdl.org/download-1.2.php

3)yasm http://yasm.tortall.net/Download.html

4)FFmpeg http://www.ffmpeg.org/download.html

5)pthreadgc2.dll http://www.dll-files.com/dllindex/dll-files.shtml?pthreadgc2

2、安裝MinGW-MSYS Bundle軟體

網上99%的方法都是先安裝mingw,再通過網路下載的方法來安裝mingw和msys軟體。安裝好之後,還需要通過煩瑣的配置,來搭建編譯環境。sourceforge開源平台給大家帶來了福音,MinGW-MSYS Bundle軟體同時包含了MinGW和MSYS,不需要連接網路進行安裝,並且包含了最新的核心組件和庫文件。

按照軟體默認的安裝向導,一路Next,把軟體安裝好。我是把軟體裝在了C盤。

3、安裝SDL

到上文列出的SDL官方網站地址,下載SDL源碼包。咱下載SDL最新的源碼包SDL-1.2.15.tar.gz。

到ffmpeg網站,下在ffmpeg源碼包,咱下的是最新的版本ffmpeg-1.2.1.tar.gz

把ffmpeg解壓縮到C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\ 目錄,再把SDL解壓縮到C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\SDL-1.2.15目錄。

進入SDL目錄,分別執行

./configure --prefix=/usr

make

make install

完成SDL的安裝。

SDL編譯完成之後,生成的bin文件、include文件、lib文件存放在C:\msys\1.0\local\SDL目錄下。

通過下面命令導入SDL環境變數.

export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include/SDL:/usr/local/lib"

否則,在執行ffmpeg configure時,SDL support項顯示為no.(註:mingw默認根目錄對應與windows下的C:\msys\1.0\目錄,可以通過echo $PATH查看當前的系統路徑)

4、安裝yasm

到yasm官方網站,下載最新的1.2.0版本的yasm源碼包Source .tar.gz。
解壓到C:\msys\1.0\ffmpeg-1.2.1\yasm-1.2.0目錄。

進入yasm目錄,分別執行:

./configure --prefix=/usr/local/yasm

make

make install

並通過下面命令導入yasm環境變數。

export PATH="$PATH:/usr/local/yasm/bin"

5、安裝ffmpeg

進入ffmpeg代碼目錄C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\, 分別執行下面命令:

./configure --enable-shared --disable-static --enable-memalign-hack

make

make install

編譯完成後,在C:\MinGW\msys\1.0的bin、include和lib文件夾下可以看到編譯結果。

make install 之後,ffplay.exe 、ffmpeg.exe等可執行程序安裝到C:\MinGW\msys\1.0\bin路徑下。

B. ffmpeg使用方法

FFmpeg程序把-i參數指定的若干文件內容讀入到內存,按照輸入的參數或者程序默認的參數來處理並且把結果寫入到若乾的文件中。輸入和輸出文件可以是計算機文件、管道、網路流、捕獲設備等。

C. Ubuntu 9.10下安裝和使用ffmpeg的詳細過程!

ffmpeg的編譯、安裝及使用(for x86,for arm)
http://hi..com/iminway/blog/item/bda2db4e29ced701b2de05f1.html

最新的ffmpeg可以通過svn下載,SVN輔助的軟體有:
SubVersion,從 http://subversion.tigris.org/ 下載,支持linux。
TortoiseSVN,從 http://tortoisesvn.tigris.org/ 下載,是很不錯的SVN客戶端程序,為windows外殼程序集成到windows資源管理器和文件管理系統的Subversion客戶端,用起來很方便。

http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
make
make install
如果安裝了FC6,它已經帶了svn,不用裝了。
ffmpeg的下載:我們就可以通過svn命令獲取最新的ffmpeg,命令如下:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

xvid的獲取地址如下:
http://www.xvid.org/
wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
配置編譯
for x86
#./configure --prefix=/usr/local
#make
#make install
for arm
#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/arm-linux --build=i686-pc-linux --host=arm-linux --target=arm-linux
#make
#make install

x264的獲取地址如下:
svn co svn://svn.videolan.org/x264/trunk x264
配置編譯
for x86
#./configure --enable-shared --prefix=/usr/local
#make
#make install
for arm
#CC=arm-linux-gcc ./configure --enable-pthread --enable-shared --host=arm-linux

#make install

lame的獲取地址如下: http://lame.sourceforge.net/index.php
配置編譯
for x86
./configure --enable-shared --prefix=/usr/local

libdts編譯參數
./configure --prefix=/usr
make
make install

http://www.audiocoding.com/moles/mydownloads/,http://prdownloads.sourceforge.net/faac
FAAD2的編譯
cd faad2
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
faac的編譯
cd faac
chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
在編譯ffmpeg,在configure時加上--enable-amr_nb --enable-faad --enable-faac參數。

編譯的時候加上--enable-amr_nb --enable-amr_wb參數就行,根據編譯系統的提示,所以我們得下載一些編譯3gp所需得文件。
源碼網址:http://www.3gpp.org/ftp/Specs
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
解壓以後把裡面的文件都拷貝到libavcodec/amrwb_float
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
解壓以後把裡面的文件都拷貝到libavcodec/amr_float

微軟ASF格式的三個版本,WMV1,WMV2,WMV3分別對應MediaPlayer的版本7,8和9,所以很多時候會稱VC1為WMV3或 WMV9,都是它了,有時候在代碼里,也能看到稱呼它為VC9的。因為微軟還沒有正式公開這種格式,所以當前對VC1的支持還很不完善。本文基本是根據 Multimedia Mike的一篇博客翻譯和完善而來。
(1) 首先要下載 SMPTE VC-1 reference decoder,這個組織是要收費的,可以從這里下載免費的。
(2) 在ffmpeg目錄下的libavcodec目錄下面,建立目錄libvc1。
(3) 將VC1_reference_decoder_release6/decoder/目錄中的*.c和*.h文件全部到libvc1目錄下。
(4) 將VC1_reference_decoder_release6/shared/目錄中的*.c和*.h文件全部到libvc1目錄下。
(5) 將 libvc1-makefile.txt放到libvc1下的Makefile文件。
(6) 將smpte-vc1.c文件放到libavcodec目錄下。
(7) 修改libavcodec目錄下的vc9.c,將文件最後的wmv3_decoder這個AVCodec的structure,用#if 0和#endif包含起來,也就是使它失效了。
(8) 修改libavcodec目錄下的allcodecs.c,將register_avcodec(&wmv3_decoder)上下的注釋去掉,使它發揮作用。
(9) 修改libavcodec目錄下的Makefile,把OBJS的列表中加入smpte-vc1.o。
(10)修改ffmpeg主目錄下的Makefile文件,把-L./libavcodec/libvc1 -lvc1$(BUILDSUF)加入到FFLIBS後面。
(11) 進入ffmpeg/libavcodec/libav1,執行make
(12) 到ffmpeg主目錄下,執行config;make;make install。config時根據實際情況帶參數。

採用ffmpeg轉碼製作FLV文件,和轉碼成其它媒體類型的重要差別是一定要有lame庫支持,因為FLV的聲音編碼採用mp3格式,非lame這個東 東不行。編譯ffmpeg中加入lame庫真是一場災難,特別在windows下,很多參數都不能發揮作用,最後直接手工和改一些文件,記錄如 下:
(1) 如果在Windows下編譯,第一步當然是下載MinGW和MSYS來裝上了。到http://mingw.sourceforge.net/去下載最新版的MinGW-5.0.2.exe和MSYS-1.0.11-2004.04.30-1.exe。
(2) 先安裝MinGW,直接運行MinGW-5.0.2.exe安裝,選擇目錄,譬如選擇D:\MinGW為安裝目錄。安裝時需要選擇gcc和make模塊,安裝文件本身很小,會從網上下載模塊來安裝。
(3) 然後安裝MSYS,也是直接運行MSYS-1.0.11-2004.04.30-1.exe安裝。安裝目錄一般選擇D:\MinGW\bin \1.0。,安裝過程會詢問剛才安裝MinGW的目錄,輸入D:\MinGW,其它都回答'Y'就搞定了。如果不清楚,可以看這個圖片效果。
(4) 運行MSYS,桌面上有個圖標,雙擊就運行了,運行結果是一個模擬unix的命令窗口,後面的編譯都在這種狀態下進行。前面4步在linux不需要。
(5) 到http://lame.sourceforge.net/去下載最新版的lame-3.97b2.tar.gz,到你認為合適的地方,解壓後進入lame解壓出來的目錄中。執行
./configure --prefix=PREFIX
make
make install
(6) 就把編譯出來的include下的lame目錄到/usr/include目錄下,把lib下的幾個庫文件都到/usr/lib目錄 下。這里注意有個變化,如果只 lib目錄下的靜態庫到/usr/lib下,就是只 libmp3lame.a文件,編譯出來的ffmpeg最終就不會對libmp3lame的動態庫有依賴關系,這是因為編譯首先找動態庫,動態庫沒有才找 靜態庫。如果不做這個,後面編譯ffmpeg時無論如何指定參數,都會報錯LAME not found,不知道是哪裡的bug。
(7) 從http://ffmpeg.mplayerhq.hu/取得最新的ffmpeg,現在自由軟體都大量採用SVN了,要先裝一個SVN,可以去http://tortoisesvn.tigris.org/下載windows版的SVN,去http://subversion.tigris.org/下載linux版的SVN。SVN如何編譯安裝這里就省略了。
(8) 如果在windows下,打開解壓後的ffmpeg目錄下的Makefile文件,在FFLIBS的那一行後面加上-lmp3lame$(BUILDSUF)。這個也不知道是哪個bug引起的,搞了好長時間才搞出來,郁悶。Linux下不用這樣。

#./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-faadbin --enable-dts --enable-pp --enable-faad --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install

http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip
解壓以後把裡面的文件都拷貝到libavcodec/amr目錄下

make
make install

#./configure --prefix=./install --disable-shared --enable-pthreads --enable-libx264 --enable-libxvid --arch=i686 --enable-gpl
#make
#make install

配置編譯
#./configure --prefix=/home/zht/redhatzht/sources/image-colletct/ffmpeg/install --enable-static --disable-shared --enable-libx264 --enable-libxvid --cross-compile --cc=arm-linux-gcc --arch=arm --enable-gpl --disable-strip --disable-network --disable-ipv6 --disable-vhook --disable-audio-beos --disable-audio-oss --disable-mpegaudio-hp --enable-pthreads --enable-small --disable-parsers --disable-debug
#make
#make install

x86上的ldconfig不能在arm上運行,arm上的ldconfig工具是在建立交叉編譯器時,編譯glibc是產生的,可以拷貝到arm-linux中。
(4) 本文大部分內容來自網路,其中xvid,x264的庫,我親手安裝過,ffmpeg的配置編譯for x86的簡易配置,for arm,我親手配置編譯過,並在x86,arm上可用,編譯配置都是採用靜態庫。

ffmpeg作為媒體文件處理軟體,基本用法如下:
ffmpeg -i INPUTfile [OPTI

文章出處:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20091024/180077.html)

D. 怎樣使用ffmpeg函數接收rtsp 網路數據

還不是連接,輪詢抓包, 緩存包, 解碼, 緩存幀, 播放這一套流程...
懶得寫可以去用ffplayer。 ffmpeg自帶的例子改一下

E. ffmpeg解碼rtsp流怎麼定時刷新緩沖區

尊敬的用戶您好。
網速慢的問題可以通過升級寬頻來解決。
許多人對 Kbps、KB、Mbps 等速度單位有所誤解,以下簡單解釋一下所謂的 1.5M、3M、6M 如何計算。
您可以在安徽電信網上營業廳選購電信手機,網廳辦理合約機贈送高額話費,可以0元購機,非常優惠,目前多個品牌4G機型全面上市!

F. ffmpeg 設置什麼參數可以把meta信息放在文件頭部啊!!

和meta在文件頭有關系嗎?
緩沖長也許是關鍵幀間隔太長,用keyint參數可以限制。

G. 怎麼把blibli的視頻下載到電腦

打開手機上的bilibili軟體,然後再點擊右上角的「頭像」。

02
然後再點擊「我的收藏」項。

03
接下來選擇想要緩存的視頻,並且打開該視頻。

04
然後再點擊視頻右上角的圖標。

05
會彈出一個上拉菜單,點擊「緩存」。

06
接著再點擊下方的「緩存全部」。

07
緩存該視頻之後,再點擊「查看緩存」。

08
然後在離線緩存頁面,可以看到「已緩存視頻」。

手機U盤
01
打開手機U盤,然後再點擊「Android(系統數據)」文件夾。

02
接下來點擊最後一個「tv.danmaku.bili」文件夾。

03
在「tv.danmaku.bili」頁面,點擊「download」文件夾。

04
可以看到該視頻已經緩存成功了。

05
打開該緩存視頻文件夾,長按0.blv,會彈出一個上拉菜單,點擊分享。

06
然後會彈出一個「分享」窗口,點擊「發送到我的電腦」。

07
即可把0.blv發到「我的電腦」。

08
等下載完成後,點擊「打開」,就可以在電腦上打開該視頻了。

H. TFFServer是什麼啟動項

ffmpeg和ffserver配合使用可以實現實時的流媒體服務,可以實時傳輸來自攝像頭的數據,客戶端可以採用HTTP、RTSP、RTP協議等播放視頻流。
一、概念和流程
ffmpeg和ffserver配合使用涉及到四個概念:
1. ffmpeg,負責媒體文件的轉碼工作,把你伺服器上的源媒體文件轉換成要發送出去的流媒體文件。
2. ffserver,負責響應客戶端的流媒體請求,把流媒體數據發送給客戶端。
3. ffserver.conf,ffserver啟動時的配置文件,在這個文件中主要是對網路協議,緩存文件feed1.ffm和要發送的流媒體文件的格式參數做具體的設定。
4. feed1.ffm,可以看成是一個流媒體數據的緩存文件,ffmpeg把轉碼好的數據發送給ffserver,如果沒有客戶端連接請求,ffserver把數據緩存到該文件中。
工作流程如下:
1、 啟動ffserver,配置參數
ffserver先於ffmpeg啟動,它在啟動的時候需要加參數-f指定其配置文件,配置文件里包含埠信息、緩沖文件配置、傳送流配置(如編碼方式,幀率,采樣率……)。
2、 啟動ffmpeg,輸入流
啟動ffmpeg,向緩沖文件輸入數據流,數據流可以來自攝像頭,也可以來自本來就存在的文件。
feed1.ffm是一個緩沖文件,fserver啟動後,feed1.ffm就會自動被創建,feed1.ffm開始的部分已經寫入向客戶端傳送流的配置信息,在feed1.ffm做緩沖用的時候,這些信息是不會被覆蓋掉。

I. 如何使用FFMPEG+H264實現RTP傳輸數據

開發環境:
WINDOWS7 32bit
MINGW
eclipse juno cdt
1、首先你要編譯好FFMPEG,
a) 方法一:可以去官網下載源碼,用MINGW編譯(編譯時記得支持H264,當然,事先得下載並編譯好libx264,視頻技術論壇里有很多介紹)
b) 方法二:更加省心省力的方法是,下載別人已經編譯好的資源,如ZeranoeFFmpeg的,下載他的dev版本,包含了頭文件,鏈接庫等必須的東西,當然,這東西已經是支持H264的了。
2、以下的就是代碼部分了:
a) 先聲明必要的變數:
AVFormatContext *fmtctx;
AVStream *video_st;
AVCodec *video_codec;
const int FPS = 25; /* 25 images/s */
const char *RDIP = 「127.0.0.1」;
unsigned int RDPORT = 5678;
const unsigned int OUTWIDTH = 720;
const unsigned int OUTHEIGHT = 480;
av_register_all();
avformat_network_init();

b) 初始化AV容器
fmtctx = avformat_alloc_context();

c) 獲得輸出格式,這里是RTP網路流
fmtctx->oformat = av_guess_format("rtp", NULL, NULL);

d)打開網路流
snprintf(fmtctx->filename, sizeof(fmtctx->filename),"rtp://%s:%d",RDIP,RDPORT);
avio_open(&fmtctx->pb,fmtctx->filename, AVIO_FLAG_WRITE)

e) 開始添加H264視頻流
video_st = NULL;video_st = add_video_stream(fmtctx, &video_codec, AV_CODEC_ID_H264);

其中,add_video_stream函數為:
add_video_stream(AVFormatContext *oc,AVCodec **codec, enum AVCodecID codec_id)
{
AVCodecContext *c;
AVStream *st;
/* find the video encoder */
*codec = avcodec_find_encoder(codec_id);
st = avformat_new_stream(oc, *codec);
c = st->codec;
avcodec_get_context_defaults3(c, *codec);
c->codec_id = codec_id;
c->width = OUTWIDTH;
c->height = OUTHEIGHT;
c->time_base.den = FPS;
c->time_base.num = 1;
c->pix_fmt = PIX_FMT_YUV420P;
if(oc->oformat->flags & AVFMT_GLOBALHEADER)
c->flags|= CODEC_FLAG_GLOBAL_HEADER;
av_opt_set(c->priv_data, "preset", "ultrafast", 0);
av_opt_set(c->priv_data, "tune","stillimage,fastdecode,zerolatency",0);
av_opt_set(c->priv_data, "x264opts","crf=26:vbv-maxrate=728:vbv-bufsize=364:keyint=25",0);return st;}
// OPEN THE CODE
avcodec_open2(video_st->codec, video_codec, NULL);
/* Write the stream header, if any. */
avformat_write_header(fmtctx, NULL);

f) 現在,就可以不斷的編碼數據,並發生數據了
AVFrame* m_pYUVFrame = avcodec_alloc_frame();
while(1) //這里設置成無限循環,你可以設置成250,或其他數進行測試,觀看結果
{
fill_yuv_image(m_pYUVFrame, video_st->codec->frame_number,OUTWIDTH, OUTHEIGHT);
/* encode the image */
AVPacket pkt;
int got_output = 0;
av_init_packet(&pkt);
pkt.data = NULL; // packet data will be allocated by the encoder
pkt.size = 0;
pkt.pts = AV_NOPTS_VALUE;
pkt.dts =AV_NOPTS_VALUE;
m_pYUVFrame->pts = video_st->codec->frame_number;
ret = avcodec_encode_video2(c, &pkt,frame, &got_output);
if (ret < 0) {fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
exit(1);
}
/* If size is zero, it means the image was buffered. */
if (got_output)
{
if (c->coded_frame->key_frame)pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index = st->index;
if (pkt.pts != AV_NOPTS_VALUE )
{
pkt.pts = av_rescale_q(pkt.pts,video_st->codec->time_base, video_st->time_base);
}
if(pkt.dts !=AV_NOPTS_VALUE )
{
pkt.dts = av_rescale_q(pkt.dts,video_st->codec->time_base, video_st->time_base);
}
/* Write the compressed frame to the media file. */
ret = av_interleaved_write_frame(oc,&pkt);
}
else {
ret = 0;
}
}

g) Fill_yuv_image函數:
/* Prepare a mmy image. */
static void fill_yuv_image(AVPicture *pict,int frame_index,int width, int height)
{
int x, y, i;
i = frame_index;
/* Y */
for (y = 0; y < height; y++)
for (x = 0; x < width; x++)
pict->data[0][y * pict->linesize[0] +x] = x + y + i * 3;
/* Cb and Cr */
for (y = 0; y < height / 2; y++)
{
for (x = 0; x < width / 2; x++)
{
pict->data[1][y * pict->linesize[1] +x] = 128 + y + i * 2;
pict->data[2][y * pict->linesize[2] +x] = 64 + x + i * 5;
}
}
}

h) 列印sdp信息,僅需一次,列印的sdp信息,用在VLC播放器結束網路視頻流時用到
//列印sdp信息
char sdp[2048];
av_sdp_create(&fmtctx,1, sdp, sizeof(sdp));
printf("%s\n",sdp);
fflush(stdout);

i)最後,做一些清理工作
avcodec_free_frame(&m_pYUVFrame);
av_write_trailer(fmtctx);
/* Free the streams. */
for (unsigned int i = 0; i< fmtctx->nb_streams;i++)
{
av_freep(&fmtctx->streams->codec);
av_freep(&fmtctx->streams);
}
if(!(fmtctx->oformat->flags& AVFMT_NOFILE))
/* Close the output file. */
avio_close(fmtctx->pb);
/*free the stream */
av_free(fmtctx);

3、編譯代碼,記得添加庫文件,運行一次代碼,不用死循環,設置不用循環,因為是要讓他列印出sdp文件的信息。得到sdp信息,比如我精簡成如下:
c=IN IP4 127.0.0.1
m=video 56782 RTP/AVP 96
a=rtpmap:96 H264/90000
a=framerate:25
a=fmtp:96 packetization-mode=1

把這些信息保存到一個文本文件,並改名為sdp後綴,如mySDP.sdp。
4、從官網下載VLC播放器,重新運行上述的代碼,這一次要循環,具體循環多久,你自己決定,這一次是正式測試了。代碼跑起來後,把剛剛的sdp文件用VLC打開,直接把sdp文件拖到VLC播放器中就行了。等待緩沖,就可以看到效果了。
5、代碼中剩掉了出錯檢查部分,請自行添加。
6、關於IP地址,這里是127.0.0.1,是供本機測試,可以改成制定的接受數據的電腦IP地址,或者廣播地址IP地址。

閱讀全文

與ffmpeg設置網路緩存相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:614
電腦無法檢測到網路代理 瀏覽:1491
筆記本電腦一天會用多少流量 瀏覽:825
蘋果電腦整機轉移新機 瀏覽:1451
突然無法連接工作網路 瀏覽:1215
聯通網路怎麼設置才好 瀏覽:1316
小區網路電腦怎麼連接路由器 瀏覽:1207
p1108列印機網路共享 瀏覽:1284
怎麼調節台式電腦護眼 瀏覽:846
深圳天虹蘋果電腦 瀏覽:1084
網路總是異常斷開 瀏覽:689
中級配置台式電腦 瀏覽:1145
中國網路安全的戰士 瀏覽:707
同志網站在哪裡 瀏覽:1529
版觀看完整完結免費手機在線 瀏覽:1528
怎樣切換默認數據網路設置 瀏覽:1229
肯德基無線網無法訪問網路 瀏覽:1455
光纖貓怎麼連接不上網路 瀏覽:1658
神武3手游網路連接 瀏覽:1045
局網列印機網路共享 瀏覽:1068