100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)简介
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。我刚接触FFMPEG的时候也感觉不知从何学起。因此我把自己做项目过程中实现的一个非常简单的视频播放器(大约100行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。该播放器虽然简单,但是几乎包含了使用FFMPEG 播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。并且支持流媒体等多种视频输入,处于简单考虑,没有音频部分,同时视频播放采用直接延时40ms的方式。平台使用VC2010,使用了新版的FFMPEG类库。
流程图
没想到这篇文章中介绍的播放器挺受FFMPEG初学者的欢迎,因此再次更新两张流程图,方便大家学习。此外在源代码上添加了注释,方便理解。
该播放器解码的流程用图的方式可以表示称如下形式:
SDL显示YUV图像的流程图:
简单解释几句:
SDL_Surface就是使用SDL的时候弹出的那个窗口。在SDL1.x版本中,只可以创建一个SDL_Surface。SDL_Overlay用于显示YUV数据。一个SDL_Overlay对应一帧YUV 数据。SDL_Rect用于确定SDL_Overlay显示的位置。注意:一个SDL_Overlay可以指定多个不同的SDL_Rect,这样就可以在SDL_Surface不同位置显示相同的内容。
它们的关系如下图所示:
下图举了个例子,指定了4个SDL_Rect,可以实现4分屏的显示。
simplest_ffmpeg_player(标准版)代码
/**
* 最简单的基于FFmpeg的视频播放器
* Simplest FFmpeg Player
* 本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。 * 是最简单的FFmpeg视频解码方面的教程。
* 通过学习本例子可以了解FFmpeg的解码流程。
* This software is a simplest video player based on FFmpeg.
* Suitable for beginner of FFmpeg.
*/
#include
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32
//Windows
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "SDL/SDL.h"
};
#else
//Linux...
#ifdef __cplusplus
extern "C"
{
#endif
#include
#include
#include
#include
#ifdef __cplusplus
};
#endif
#endif
//Full Screen
#define SHOW_FULLSCREEN 0
//Output YUV420P
#define OUTPUT_YUV420P 0
int main(int argc, char* argv[])
{
//FFmpeg
AVFormatContext *pFormatCtx;
int i, videoindex;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
AVFrame *pFrame,*pFrameYUV;
AVPacket *packet;
struct SwsContext *img_convert_ctx;
//SDL
int screen_w,screen_h;
SDL_Surface *screen;
SDL_VideoInfo *vi;
SDL_Overlay *bmp;
SDL_Rect rect;
FILE *fp_yuv;
int ret, got_picture;
char filepath[]="bigbuckbunny_480x272.h265";
av_register_all();
avformat_network_init();
pFormatCtx = avformat_alloc_context();
if(avformat_open_input(&pFormatCtx,filepath,NULL,NULL)!=0){ printf("Couldn't open input stream.\n");
return -1;
}
if(avformat_find_stream_info(pFormatCtx,NULL)<0){
printf("Couldn't find stream information.\n");
return -1;
}
videoindex=-1;
for(i=0; i
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VI DEO){
videoindex=i;
break;
}
if(videoindex==-1){
printf("Didn't find a video stream.\n");
return -1;
}
pCodecCtx=pFormatCtx->streams[videoindex]->codec;
pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
if(pCodec==NULL){
printf("Codec not found.\n");
return -1;
}
if(avcodec_open2(pCodecCtx, pCodec,NULL)<0){
printf("Could not open codec.\n");
return -1;
}
pFrame=av_frame_alloc();
pFrameYUV=av_frame_alloc();
//uint8_t *out_buffer=(uint8_t
*)av_malloc(avpicture_get_size(PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height));
//avpicture_fill((AVPicture *)pFrameYUV, out_buffer,
PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
//SDL----------------------------
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
printf( "Could not initialize SDL - %s\n",
SDL_GetError());
return -1;
}
#if SHOW_FULLSCREEN
vi = SDL_GetVideoInfo();
screen_w = vi->current_w;
screen_h = vi->current_h;
screen = SDL_SetVideoMode(screen_w, screen_h, 0,SDL_FULLSCREEN); #else
screen_w = pCodecCtx->width;
screen_h = pCodecCtx->height;
screen = SDL_SetVideoMode(screen_w, screen_h, 0,0);
#endif
if(!screen) {
printf("SDL: could not set video mode -
exiting:%s\n",SDL_GetError());
return -1;
}
bmp = SDL_CreateYUVOverlay(pCodecCtx->width,
pCodecCtx->height,SDL_YV12_OVERLAY, screen);
rect.x = 0;
rect.y = 0;
rect.w = screen_w;
rect.h = screen_h;
//SDL End------------------------
packet=(AVPacket *)av_malloc(sizeof(AVPacket));
//Output Information-----------------------------
printf("------------- File Information ------------------\n");
av_dump_format(pFormatCtx,0,filepath,0);
printf("-------------------------------------------------\n"); #if OUTPUT_YUV420P
fp_yuv=fopen("output.yuv","wb+");
#endif
SDL_WM_SetCaption("Simplest FFmpeg Player",NULL);
img_convert_ctx = sws_getContext(pCodecCtx->width,
pCodecCtx->height, pCodecCtx->pix_fmt, pCodecCtx->width,
pCodecCtx->height, PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
//------------------------------
while(av_read_frame(pFormatCtx, packet)>=0){
if(packet->stream_index==videoindex){
//Decode
ret = avcodec_decode_video2(pCodecCtx, pFrame,
&got_picture, packet);
if(ret < 0){
printf("Decode Error.\n");
return -1;
}
if(got_picture){
SDL_LockYUVOverlay(bmp);
pFrameYUV->data[0]=bmp->pixels[0];
pFrameYUV->data[1]=bmp->pixels[2];
pFrameYUV->data[2]=bmp->pixels[1];
pFrameYUV->linesize[0]=bmp->pitches[0];
pFrameYUV->linesize[1]=bmp->pitches[2];
pFrameYUV->linesize[2]=bmp->pitches[1];
sws_scale(img_convert_ctx, (const
uint8_t* const*)pFrame->data, pFrame->linesize, 0,
pCodecCtx->height,
pFrameYUV->data, pFrameYUV->linesize);
#if OUTPUT_YUV420P
int y_size=pCodecCtx->width*pCodecCtx->height;
fwrite(pFrameYUV->data[0],1,y_size,fp_yuv); //Y
fwrite(pFrameYUV->data[1],1,y_size/4,fp_yuv); //U
fwrite(pFrameYUV->data[2],1,y_size/4,fp_yuv); //V
#endif
SDL_UnlockYUVOverlay(bmp);
SDL_DisplayYUVOverlay(bmp, &rect);
//Delay 40ms
SDL_Delay(40);
}
}
av_free_packet(packet);
}
//FIX: Flush Frames remained in Codec
while (1) {
ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet);
if (ret < 0)
break;
if (!got_picture)
break;
sws_scale(img_convert_ctx, (const uint8_t* const*)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameYUV->data, pFrameYUV->linesize);
SDL_LockYUVOverlay(bmp);
pFrameYUV->data[0]=bmp->pixels[0];
pFrameYUV->data[1]=bmp->pixels[2];
pFrameYUV->data[2]=bmp->pixels[1];
pFrameYUV->linesize[0]=bmp->pitches[0];
pFrameYUV->linesize[1]=bmp->pitches[2];
pFrameYUV->linesize[2]=bmp->pitches[1];
#if OUTPUT_YUV420P
int y_size=pCodecCtx->width*pCodecCtx->height;
fwrite(pFrameYUV->data[0],1,y_size,fp_yuv); //Y
fwrite(pFrameYUV->data[1],1,y_size/4,fp_yuv); //U
fwrite(pFrameYUV->data[2],1,y_size/4,fp_yuv); //V #endif
SDL_UnlockYUVOverlay(bmp);
SDL_DisplayYUVOverlay(bmp, &rect);
//Delay 40ms
SDL_Delay(40);
}
sws_freeContext(img_convert_ctx);
#if OUTPUT_YUV420P
fclose(fp_yuv);
#endif
SDL_Quit();
//av_free(out_buffer);
av_free(pFrameYUV);
avcodec_close(pCodecCtx);
avformat_close_input(&pFormatCtx);
return 0;
}
1.1版之后,新添加了一个工程:simplest_ffmpeg_player_su(SU版)。
标准版在播放视频的时候,画面显示使用延时40ms的方式。这么做有两个后果:(1)SDL弹出的窗口无法移动,一直显示是忙碌状态
(2)画面显示并不是严格的40ms一帧,因为还没有考虑解码的时间。SU(SDL Update)版在视频解码的过程中,不再使用延时40ms的方式,而是创建了一个线程,每隔40ms发送一个自定义的消息,告知主函数进行解码显示。这样做之后:
(1)SDL弹出的窗口可以移动了
(2)画面显示是严格的40ms一帧
simplest_ffmpeg_player_su(SU版)代码
/**
* 最简单的基于FFmpeg的视频播放器SU(SDL升级版)
* Simplest FFmpeg Player (SDL Update)
* 本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。
* 是最简单的FFmpeg视频解码方面的教程。
* 通过学习本例子可以了解FFmpeg的解码流程。
* 本版本中使用SDL消息机制刷新视频画面。
* This software is a simplest video player based on FFmpeg.
* Suitable for beginner of FFmpeg.
*
* Version:1.2
*
* 备注:
* 标准版在播放视频的时候,画面显示使用延时40ms的方式。这么做有两个后果:
* (1)SDL弹出的窗口无法移动,一直显示是忙碌状态
* (2)画面显示并不是严格的40ms一帧,因为还没有考虑解码的时间。
* SU(SDL Update)版在视频解码的过程中,不再使用延时40ms的方式,而是创建了
* 一个线程,每隔40ms发送一个自定义的消息,告知主函数进行解码显示。这样做之后:
* (1)SDL弹出的窗口可以移动了
* (2)画面显示是严格的40ms一帧
* Remark:
* Standard Version use's SDL_Delay() to control video's frame rate, it has 2
* disadvantages:
* (1)SDL's Screen can't be moved and always "Busy".
* (2)Frame rate can't be accurate because it doesn't consider the time consumed
* by avcodec_decode_video2()
* SU(SDL Update)Version solved 2 problems above. It create a thread to send SDL
* Event every 40ms to tell the main loop to decode and show video frames. */
#include
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32
//Windows
extern "C"
{
#include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswscale/swscale.h" #include "SDL/SDL.h"
};
#else
//Linux...
#ifdef __cplusplus
extern "C"
{
#endif
#include
#ifdef __cplusplus
};
#endif
#endif
//Refresh
#define SFM_REFRESH_EVENT (SDL_USEREVENT + 1) int thread_exit=0;
//Thread
int sfp_refresh_thread(void *opaque)
{
SDL_Event event;
while (thread_exit==0) {
event.type = SFM_REFRESH_EVENT;
SDL_PushEvent(&event);
//Wait 40 ms
SDL_Delay(40);
}
return 0;
}
int main(int argc, char* argv[])
{
AVFormatContext *pFormatCtx;
int i, videoindex;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
AVFrame *pFrame,*pFrameYUV;
AVPacket *packet;
struct SwsContext *img_convert_ctx;
//SDL
int ret, got_picture;
int screen_w=0,screen_h=0;
SDL_Surface *screen;
SDL_Overlay *bmp;
SDL_Rect rect;
SDL_Thread *video_tid;
SDL_Event event;
char filepath[]="bigbuckbunny_480x272.h265";
av_register_all();
avformat_network_init();
pFormatCtx = avformat_alloc_context();
if(avformat_open_input(&pFormatCtx,filepath,NULL,NULL)!=0){ printf("Couldn't open input stream.\n");
return -1;
}
if(avformat_find_stream_info(pFormatCtx,NULL)<0){
printf("Couldn't find stream information.\n");
return -1;
}
videoindex=-1;
for(i=0; i
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VI DEO){
videoindex=i;
break;
}
if(videoindex==-1){
printf("Didn't find a video stream.\n");
return -1;
}
pCodecCtx=pFormatCtx->streams[videoindex]->codec;
pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
if(pCodec==NULL)
{
printf("Codec not found.\n");
return -1;
}
if(avcodec_open2(pCodecCtx, pCodec,NULL)<0)
{
printf("Could not open codec.\n");
return -1;
}
pFrame=av_frame_alloc();
pFrameYUV=av_frame_alloc();
//uint8_t *out_buffer=(uint8_t
*)av_malloc(avpicture_get_size(PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height));
//avpicture_fill((AVPicture *)pFrameYUV, out_buffer,
PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
//------------SDL----------------
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
printf( "Could not initialize SDL - %s\n",
SDL_GetError());
return -1;
}
screen_w = pCodecCtx->width;
screen_h = pCodecCtx->height;
screen = SDL_SetVideoMode(screen_w, screen_h, 0,0);
if(!screen) {
printf("SDL: could not set video mode -
exiting:%s\n",SDL_GetError());
return -1;
}
bmp = SDL_CreateYUVOverlay(pCodecCtx->width,
pCodecCtx->height,SDL_YV12_OVERLAY, screen);
rect.x = 0;
rect.y = 0;
rect.w = screen_w;
1需求分析 NBA现役巨星资料库 随着NBA (National Basketball Association)近二十年来在中国市场的扩张,如今中国积攒的相当一部分NBA的忠实球迷,更随着中国如王治郅,姚明,易建联等中国球员加入NBA,更多的中国人开始了解NBA。从而NBA得各种信息变得炙手可热,如NBA巨星们的视频,个人资料,周边故事,赛事,等等。这些信息,现如今不仅仅在网络上被各种人使用使用,在日常生活中也是很值得爱好NBA的人去了解的。 本人也是一位NBA的爱好者,在一次资料的搜集中,我想要查询网络上“现役NBA巨星的资料”时,可并没有发现,只有“ 50大”(NBA历史上前五十的巨星)诸多资料。其现役巨星的资料大多都是分散的记录。 在当下,“50大”只能是NBA的周边或历史,而现役巨星才是现在球迷的追求对象,所以一套完整的现役巨星资料可以称得上是一份绝对的值得珍藏的资料。 但是整理一份资料简单,只需在各种网站中搜索巨星的名字,相关资料自然会弹出,可如何去让它具有一个更高的集成性,如何去让它更符合我们拥有如今操作理念,不在是单一的单窗口字面文档。 设计一个基于数据库且可实现多窗口,在形式上多样化,这就是此次MFC程序设计的主导方向。 MFC程序设计 既然程序是基于数据库的,固然数据库是必须建立的,在MFC建立数据库的方式有很多,期中最简单操作的是Access数据库的调用可通过ODBC。而形成形式上的突破方法是很多的,如联入多媒体,插入视图,增加功能等等。 数据流图 图片视频
2系统设计概要设计
在需求分析中提到所建立的程序可以实现多窗口调用且具有多功能的。首先, 建立的程序是基于数据库的多文档格式 MFC 程序,整个程序大至可分为三个模 块。 体系结构设计 分析我设计的这个程序,其三个模块并不是互相调用的,而是另两个模块以窗 口对接按键的形式,被第一个模块调用的。这样的结构存在属于“层次结构” , 高层的工作建立在低层的工作上面,把复杂的事情转化成多件逐层递进的事件。 模块设计 上面说到,这个程序设计中有三个模块,其中两个以窗口形式存在的模块与另 一模块的耦合(Coupling )较强,可是这两个模块却又是完全独立的,他们属于 强内聚(Cohesion )。这样的设计算不上“强内聚,弱耦合”。可在程序中以窗口 运行的两个模块是具有一定的封闭性。 详细设计 ? NEAffite^星信电:城宰(Atctis 2000丈件棺式I 角炳d tedistma dmw I X I -a 蛊 iB 2使用ODBC 实现对Access 的驱动(WIN7在主控面板右上角输入“ ODBC”) 科比?布莱恩特 砂圭尔?真的 阿伦? 艾弗森 薔怖恩-韦懐 勒布朗?普姆斯 億怖特?霍华德 克里斯?保罗 史蒂夫 ?抽什 凯文?仙内特 待雷西?麦克格€ 姚用 小飞侠 1.英尺$英= 2.1GM 打却?1英 誓案 1.83M 阳贪尺0英十 闷电侠 1.93m / 6尺4寸 小皇帝 2. (J3mf6英尺£英匚 M 21册6英尺11金 蹩王 1.83m 1.91m 線王 2.1W6 尺 11 寸 T _ Mac 2. 03冊£英尺£英; 沦鋼T 英尺6疑 sa.oks/aos 磅 得分后卫/小前^洛杉矶湖人限 HT 阪型融 中饉 漩士顿凯尔特” T4.业討1閃磅得分后卫 费城七六人臥 20&切听埜斤得分后卫/组织后迈阿密热火 113 4W250^小前覆 迈阿魏火臥 120kg 中锂 奥兰多魔术阴 TO- *kg 扌空球后卫 新臭尔良靑虫郢 89kj 113.4ke/2S0^ 101kg/223i^ 134.2k* 渐磅 锋后 前 分锂 犬得中 菲尼克斯衣阳F 披士屯帥特‘ 底特律活基陆 休斯顿火箭 记录:?E r^jrs II 裁 I 隼号 出牛曰期丨 身為 1 EE5*]共有记录数"1
ASP视频播放器通用代码 1.avi格式 2.mpg格式
使用KMPlayer播放最普通的高清视频 KMPlayer是从linux平台移植过来的一款高效能视频播放软件,该软件可以通过各种扩展插件支持不同的视频格式。 KMPlayer 下载KMPlayer安装完成后,按照以下步骤进行基本设置,可能会存在差异,请根据自己的情况进行调整。 步骤一:在解码器使用选项里面,设置成总是使用(强烈推荐)
设置成总是使用 步骤二:取消所有默认的内置解码器,使用我们自定义解码器。 步骤三:搜索添加外部解码器,并针对不同格式进行设置。
步骤四:搜索并添加分离器,并根据不同格式进行设置。
根据以上设置完成后,对于普通的高清视频就可以正常播放了,如果发现部分视频无法正常播放的,可以根据该视频格式选择不同的解码器或者分离器进行尝试。 这里强调下高清视频对PC的一些简单要求,其实,对于普通的高清视频,现流行的电脑都可以轻松应付,比如笔者使用的COMPAQ 3169AU笔记本,配置并不是非常高端,不过观看普通的高清视频绰绰有余,大家购买PC的时候,不要盲目的追求最高配置,只要结合自己的使用情况,有选择性的购买即可。 普通高清视频对电脑配置要求不是很高 打开H264硬件加速 KMPlayer初始安装后,播放H264视频时,使用的外部视频解码器为系统默认的解码器,这样,我们就无法正确开启硬件加速功能。想要打开硬件加速功能,需要对软件进行行下相关设置。
H264默认设置 这时,我们选择搜索外部解码器按钮,然后在弹出的界面先选择搜索并添加按钮,这样,系统安装的外部解码器就自动添加进来了。
搜索并添加外部解码器 完成后,返回外部视频解码器设置页面,选择H264的视频解码器为直接使用PowerDVD的H.264解码器就可以直接开启硬件加速。
#include
如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFmpeg, 播放器, 编写 FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究 FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。 在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。 在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。 这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。 更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@https://www.doczj.com/doc/602032684.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c
Doc Name: 手机流媒体播放器插件项目需求范围 说明:以下只是一个需求范围框架声明,可补充修正. 需求模型呈现: 用户通过手机流媒体播放器插件连接到流媒体服务器,可以在线点播3gp格式的电影,动画等资源. 平台组成 Server端: 标准H.264/AMR 的流媒体服务器 Client端:定制的手机流媒体播放器插件 说明:用户通过专有的WAP浏览器导航选择流媒体播放内容,播放时调用(启动)定制的手机流媒体播放器插件播放,播放完毕返回到WAP浏览器,即:WAP Browser + Player Plugins 形式. 平台架构模型:C/S 架构 通信协议:RTSP, RTP/RTCP协议 流媒体文件格式: 第一阶段:.3GP 第二阶段:.MP4/.AVI/.RM/.WMV/.RMVB/.3GP2 流媒体视频编解码算法: 第一阶段:H.264 (=MPEG-4 Part 10=ISO/IEC 14496-10=MPEG-4 AVC) 流媒体音频编解码算法: 第一阶段:(2.75G) 1) AMR-NB 2) AAC 需要支持的手机平台: 智能手机: Symbian v3/v5,WM 5.x/6.x, Android,OPhone,iPhone, … 第一阶段:Symbian v2/v3/v5,WM 5.x/6.x 接入网定位: 前期支持2G(GRPS),2.75G(EDGE),后期支持3G. 即面向2.5G,2.75G和3G用户. (因为3G,4G属于接入网范围,本质上改进的只是空中接口的传输效率,简单说就是空中接口可以用更大的带宽传输数据,这个和业务网的应用,例如:语音业务,数据业务、手机应用软件没有很本质上的直接关系).
KMP播放器的简单使用方法 KMPlayer 是一款来自韩国的影音全能播放器,与Mplayer 一样从linux 平台移植而来的Kmplayer (简称KMP)几乎可以播放您系统上所有的影音文件。通过各种插件扩展KMP 可以支持层出不穷的新格式。强大的插件功能,直接从Winamp 继承的插件功能,能够直接使用winamp 的音频,输入,视觉效果插件,而通过独有的扩展能力,只要你喜欢,可以选择使用不同解码器对各种格式进行解码。 播放器是个壳,是否能顺利播放,就看你如何调用分离器和解码器 常见问题与解决办法 1、播放电影时,想显示中英文双字幕,如何实现双字幕显示? 遇到这种情况可用外挂字幕支持 1[参数设置]→[滤镜控制]→[自定义滤镜管理器]→[添加扩展滤镜]→先在系统中找到VSFilter.dll,选上。 2[参数设置]→[滤镜控制]→外部字幕滤镜控制将禁用取消即可 但是注意在极速模式下不能自动启动vobsub 2、如何能够让字幕正确显示? [参数设置]→[字幕处理]→[字体样式]→语系设置为中文(简体),“字符集”设置成默认。 3、Kmplayer拖动播放MOV文件停顿比较明显,这个如何优化? 在[参数设置]→[滤镜控制]里面的Mplayer项内添加 .MOV,同时把QuickTime项内的.MOV 删除。 4、如何让字幕显示在画面下的黑色区域? [参数设置]→[字幕处理]→绘制到图表层。 或者右键菜单[全景扫描]选择[4:3拉伸]就可以了。 5、Kmplayer如何实现多配置文件? 设好一种配置后[参数选项]→[配置备份]将当前配置保存起来,然后在右键菜单里就会多一项选择[参数配置切换]的菜单,就可以恢复到你设置好的一系列参数(点击保存的文件)。 6、如何下载最新的版本? [url=https://www.doczj.com/doc/602032684.html,/forums/forumdisplay.php?s=&daysprune=&f=7][color=#006699]h ttp://https://www.doczj.com/doc/602032684.html,/forums/f ... ;daysprune=&f=7[/color][/url] 7、如何在不调整系统音量的情况下,增大播放的音量? 选项->参数设置->音频处理->音量,范围在0%-400%之间。可以通过Ctrl+TAB查看启用的[Audio DSP]是否设置成功。 并且不能在极速模式下,要求启用音频特效。 8、插件目录下文件都有什么用途? [plugins]目录下都是用于Winamp的插件,允许删除。不过在KMP同步截取功能上可能有
哪个最好用?八款万能播放器横向评测 【转载】pconline 06年09月07日[评论36条] 在资源占用上,我们分空闲、播放视频文件和播放音频文件三种情况进行测试。八款播放器表现不一,其测试数据对比柱状图如下(单位:KB): 【图21 空闲时的内存占用对比】 【图22 播放视频文件时的内存占用对比】
【图23 播放音频文件时的内存占用对比】 Mplayer因为必须选择播放文件后软件界面才能启动,故上面没有其空闲时的系统资源占用数据。内存占用和CPU使用率数据汇总如下(单位:KB): 【图24 CPU和内存使用汇总】 KMPlayer虽然功能丰富,但是其反映到CPU的使用率和内存的使用都比较低,特别是内存占用上控制得很好,不过其在音频播放上CPU使用率的处理欠佳 ·评测总结 绚彩魅影在内存占用上处理的不好,是八款软件中占用较多的;VLC在视频播放时对系统资源的占用比较严重; Mplayer是总体上对系统资源占用最少的,特别是其播放视频时的内存占用处理非常出色,这主要益于其简单的界面与功能和它特有的解码器;其他四款软件对系统资源的占用大致处于平均水平,没有什么特别的表现。 六、评测总结 根据以上各种评测数据,我们对这八款播放器各方面的星级评分如下(如图25,最高三星):
【图25 各方面的星级评定】 很明显KMPlayer在各方面的表现的都非常出色,获得八款播放器中的最高分。它不仅在影音功能方面基础扎实,而且还在系统资源占用较好的控制的情况下拥有富有人性化的特色功能设计和其他多方面的强大功能,这一点值得其他几款播放器的学习。 GOM Player在播放质量和效果上表现非常出色,在视频流畅播放上体现出超群的优势,而且也拥有一些有特色的功能;比较遗憾的是其对媒体格式支持做的不够好,假若能在这方面有所改进,相信GOM Player的实力会更强大。 兔子影音、暴风影音和My MPC都同样注重影、音的基本功底,支持格式最全面,但是它们的缺点都是特色功能少。 Mplayer的特色就是简单,系统资源占用少。它和GOM Player一样在视频流畅播放上有出色的表现。缺点是功能过于简单,控制系统不全面。 一般来说,如果你是电视剧狂热者那么KMPlayer是不二选择;对于其他电脑配置不是太差的用户,我们首推KMPlayer,理由已经很明显了,支持格式丰富、功能强大、资源占用少。其次,推荐兔子影音、暴风影音和My MPC,它们同样支持丰富的媒体格式,资源占用情况也比较正常。 如果你的电脑配置不好,系统资源紧张,不妨试一试Mplayer,它可以帮助你获得更好的播放效果,但是它的缺点是播放控制过于简单;另外,你也可以试一试GOM Player,它同样可以让你在低配置下获得非常流畅的播放效果,相比Mplayer,它的播放控制方面强大得多,而且也有许多有特色的功能。
实验10 多媒体与网络编程 【测试题1】 编写代码实现制作一个音频文件播放器。只需要实现如图所示的简单界面,点击打开弹出对话框,打开一个.wav的波形音频文件,点击“播放”按钮开始播放,点击“停止”按钮则停止播放,按“关机”按钮则退出应用程序。 需求分析: 1,项目背景和原因。 波形音频是一种电子数字化的声音,是计算机播放音频的一种重要格式,它存储的是声音的波形信息,当播放波形音频时,不管播放文件的设备是何种类型,都会得到相似的声音,波形音频文件通常wav作为文件扩展名。由于采用波形音频存储电子化声音需要大量的存储空间,因此它一般只用于短时间的声音播放。 通过设计一个简单的波形音频播放器,了解MFC,了解接口类MCI。 2,波形音频播放器的功能 播放器有“打开”,“播放”,“停止”,“关机”三个按钮,同时有一个状态栏,用于显示播放器当前处于的状态。 “打开”按钮用于打开一个波形音频文件; “播放”用于播放选中的波形音频文件; “停止”用于暂停正在播放的音频文件,再次点击“播放”时会从暂停出继续播放; “关机”用于退出播放器。播放器界面如图所示:
3,数据字典 类向导ClassWizard 静态文本Static Text 按钮Command Button ,4,功能列表 “打开”-------------------void CWaverDlg::OnOpen() “播放”-------------------void CWaverDlg::OnPlay() “停止”-------------------void CWaverDlg::OnStop() “关机”-------------------void CWaverDlg::OnExit() 5,具体实现步骤 ,1、首先在VisualC++平台上,选择File->New,新建一个名为WaveAudio.h的头文件。代码如下: #if!defined(WA VE_H_INCLUDED_) #define WA VE_H_INCLUDED_ #include "mmsystem.h" class CWave { public: BOOL m_bPlaying; BOOL m_bOpen; WORD m_wDeviceID; public:
在经理了无数磨难之后,我终于再次鼓起勇气来写kmp对应高清播放的文章。 希望这次写完之后赞的多骂偶的少…… kmp很多时候不同问题需要不同的对待方法,我不可能面面俱到,这里只是粗浅的带着大家入一下门,大家可以根据这些提示以及方法来自己研究合适自己的配置方案,好了,牢骚到此位置,进入正题。 kmplayer对应高清调试教程开始: 预先准备工作: 1.kmplayer 下载地址:https://www.doczj.com/doc/602032684.html,/html_2/1/124/id=10344&pn=0.html 2.终极解码(这里解释一下为什么需要终极解码,考虑到很多新手用户找不到各种解码器,所以下载一个终极解码作为解码器合集来提供给kmp解码器)【达人绕行这步,请自行下载自己需要的解码器】 下载地址: https://www.doczj.com/doc/602032684.html,/multimedia/media/detail-10544.html 3.准备电脑一台,操作系统一个,鼠标,键盘各一个,电源接入……(表打我- -) 安装工作: xp下无悬念,一路默认,所有的设置都不用考虑,全默认调整即可,我们会有后续调整。 win7用户,请注意安装终极解码的时候,一定要点击右键,选择使用管理员权限进行安装。这样可以确保解码器都正确的安装到系统(vista同win7)【关掉了UAC的用户可以同xp一样全默认】 ps:这里一定要注意,先装终极解码,再装kmp,两个都要装。 进入调试工作: 再次重申,要看文字,不要光看图,为了坑害只看图不看文字的人,我下了无数陷阱的说…… 1.终极解码调整解码中心。
解码中心按照下图所示调整。 这里解释一下为什么要选择为wmplayer这个播放器,首先wmp是微软自己的播放器,配合htpc以及遥控器看电影比较舒服,其次,这个播放器因为是微软自己出的,所以基本上没有什么报错的问题,这样我们把终极解码的解码方案指定给wmp可以说是让我们平时不用的播放器有所作为。 ps:不管你是xp还是vista win7,请确保你的wmp版本为windows mediaplayer 11.我们需要他内置的解码器以及漂亮的外观。(漂亮的外观比它的解码器重要……嘿嘿) ps2:终极解码的优先级别比kmp要高,如果你将这里指定为kmp,那么等一会不管你kmp做什么设置,都会受到终极解码的影响,从而发生一些诡异的问题……所以一定要记住,这里不能选择kmp,至于你喜欢其他的啥随便选也行。 进入kmp的调试:
YY视频播放简易教程 阿弥陀佛,师兄,您好,欢迎您发心参与地藏七YY网络共修的义工工作,随喜您的发心!为使您快速融入YY团队,成为播放视屏高手,现将工作流程及播放视屏技巧告知如下:(请边看边操作哦!如有不明白可以咨询有经验得师兄!) 阿弥陀佛,本文件为之前发心护持YY共修的师兄们根据实际操作及一些经验总结出来的,以下的一些定量的建议均为经验值,因为这些达到这些值时,效果会相应的好一些,但这些并不绝对,每位师兄的电脑和实际情况不一样,也会有些变动,无需完全按照经验值进行操作。同时,也欢迎师兄们继续发心总结更好的一些经验,完善咱们的这份计划。感恩师兄们! 一、播音 1、【电脑设置】 ①点击图标,进入设置面板 ②然后再点一下高级 ③进入下面这个界面,按红色圈出来的位置设置,并在麦克风降噪和启用回声消除前面打 勾。
④接着点一下高级设置后面的倒三角,在接着出现的界面中把右 侧的竖线拖到最下端。 在这些栏目前面都不要打勾, 特别是红色圈出来的前面不能打勾。这些是针对XP系统的电脑设置,如果是win7 系统的电脑则不用在此设置,默认的设置就好。 ⑤ 在此小圆点拖到1.5-2倍的地方,这样音质会比较响,然后点应用(注意先不要点确定)。
播放伴奏是这样的,要播放视屏的时候,点击会出来这个 界面,这时选择红色圆圈的“当前伴奏”模式, 这样不管是在网站上直接打开的视屏还是下载好的视屏,声音都能传出去。这个时 候要注意它上面的一条音量线, 红色箭头所示。信号线越长表明传出去的声音越大。同时您会看到自己名字前面的绿灯亮了 ,如果没亮(没亮的状态) 表明您播放的声音没传出去。只有当您开始播放视屏或者音频的时候才会出现这条 信号线。 ⑥ ⑦接着选择如红色圈所示的上课图标,它会出来这个界面 您接着选择桌面图标,它会在正中间出现 这个图标,选择红色圈所示的图标,会出来红色的方框,如
视频播放器设计 1 需求分析 由于计算机的普及,极大地改变了人们的生活。随之带来了开发各种软件的需求。家用型计算机主要用于家用软件、学习软件、游戏软件和多媒体和多媒体软件,以及播放CD、VCD、DVD、MP3等多媒体信息。然而多媒体播放器的开发仍然不能满足人们的需求,多媒体文件格式多样,但却没有一款播放器能够满足所有格式的解码。人们渴望解码能力更强大,功能更完备的多媒体播放器。 “多媒体”是一种新型的信息处理与传播技术。有人认为它是信息及其传输媒介方面的一场根本革命。人们对新技术的渴望和欢迎、新奇感和占有欲、宣传热情和赞美态度,是发自内心的。特别是计算机多媒体技术的功能,令人大开眼界,惊叹不已。它在商业、信息检索、文化娱乐和教育等方面的应用效果明显,前景广阔。 由多媒体播放器的开发现状看来,并没有哪一款播放器能适应所有多媒体文件的解读,随着视频、音频的迅猛发展,媒体文件的格式层出不穷,由过往美国在线(AOL)公司的Nullsoft部门开发的Winamp独占鳌头,到Real Networks公司的Real Player和微软公司的Windows Media Player风靡全球,再到如今播放器开发的百花齐放的竞争时代,多媒体播放器的开发经历了许多风浪和变化,但是,仍然没有出现全能的播放器,始终没有跨越编码格式的局限,随着多媒体技术的不断发展,人们对多媒体软件的要求也不断高涨,所以对多媒体软件的开发也成为当今计算机开发的重要课题。目前的音频、视频格式繁多,研制格式覆盖面广的多媒体播放器前景非常广泛。 随着计算机、家电、通信等技术的不断发展,多媒体技术有着广泛的开发前景,尤其是多媒体播放器的开发,开发格式覆盖面更广,兼容性更好,功能更完备的播放器势在必行。本文主要采用C++ Builder2009作为开发工具,设计并实现一个多媒体播放器。可播放MP3,AVI,WMV,WMA,RM,RMVB,SWF等多种格式的多媒体文件,并且能够控制播放,暂停,停止,快进,后退,音量控制的调节,选择上一曲,选择下一曲,图像的显示,文件的计时,列表文件的添减操作等多种播放控制功能,界面简明,操作简单。 2 系统总体设计 2.1DirectShow概述 DirectShow是一种通过自定义或内置的大量的Filter(过滤器)来处理多媒体 数据的体系结构。这些Filter大致分三类:Source Filter(源过滤器)、Transform Filter(转换过滤器)、Render Filter(呈现过滤器)。源过滤器主要负责获取数据,数据源可以是文件、网络、计算机采集卡或数字摄像机里的,然后数据向下传输到Transform Filter,它主要负责数据的格式转换,然后继续向下传输到Render Filter,它主要负责数据的最终去向,将数据送给显卡声卡进行播放或输出变成文件存储起来,见图2-1。
八种影视截图的方法 方法一:Windows Media Player10 首先介绍,最简单的视频截图方法。Media Player10是常用的视频播放器,也可以视频截图。我们在播放电影的过程中,遇到想截取的图片,只需按下【“Ctrl +I”组合键】。就会弹出保存图片的窗口。但是一定注意视频格式,对于ASF、 WMV格式是无法截图的。 截图优点: 截图方法简单点击【“Ctrl+I”组合键】就OK。 截图缺点: 有些视频能播放,而不能截图,如:ASF、WMV格式。 方法二:豪杰超级解霸系列 豪杰超级解霸也有的视频截图功能,【版本V8、V9、3000、都可以】。下面是以豪杰超级解霸V8播放器为例,的抓图方法。 1:首先打开豪杰超级解霸V8 2:点击【文件】按钮,打开要播放的影片。 3:影片开始,使用【播放/暂停】按钮,暂停要截的图片。就像照相机按快 门一样。 4:使用【单张抓图】按钮,或【连续抓图】按钮,截取图片。 5:点击【单张抓图】后,出现保存文件窗口。然后点击【保存】按钮。保存图片就OK了
截图优点: 截图方法比较简单,可以连续抓图,[对制作GIF 动态图片有帮助] 截图缺点: 有些视频文件格式能播放,而不能截图。截取图片不可随意调节大小,只能截取影片原大小。 方法三:PowerDVD PowerDVD也有截图功能,版本有很多。 下面是以PowerDVD 6 播放器为例,的抓图方法。 1:首先打开PowerDVD 6 2:设置捕捉模式以及调节画面大小。 首先要点击播放器【配置】按钮。 3:弹出对话框,点击【高级】按钮。 4:点击【快照】,在下面对话框设置,图片捕捉模式,以及调节截取画面的大小。最后点击【确定】,就OK了 5:最后点击播放器的【捕捉画面】按钮,或按下快捷键C,就可截取影视图 片了。 截图优点: 可截取任意大小的影视图片,截取图片比较清晰。 截图缺点: 某些网络下载视频,不能截取。 方法四:QQ截图
简单的视频制作快速入门 本教程软件:Corel VideoStudio 12 简体中文版 本教程有两种不同的截图,是因为时间关系,一会在家里写作,一会在办公室所以截图不一样。 提示:在采集视频的时候,建议使用“按场景采集”。虽然这样采集到的视频文件数量很多,但是有利于后期的编辑制作。另外,大家不要担心采集的时候文件很庞大,例如:一个1小时时间的视频,采集后可能为10G,不要紧,在编辑制作后,我们可以压缩在1G左右,如果是制作高清的,可能在3G左右。 一、视频制作准备工作 1、我在F盘建立“绘声绘影制作”这样的一个文件包,文件包内又建立以下文件包,如下图片: 2、将要制作的视频素材放入“视频素材”文件夹内,按照您的意愿编好号,如下图: “编号”的目的是便于我们按顺序将视频素材批量导入到绘声绘影里去。
3、启动绘声绘影,如下图:
4、选择“绘声绘影编辑器”,进入绘声绘影界面,如下图: 工具栏介绍: (1)捕获 主要用来采集摄像机里的视频。 (2)编辑 我们的工作都在这里完成。 (3)效果 举个简单例子:在相片与相片之间插入什么样的效果,相片就以什么方式显示在视频里,例如擦除显示方式、卷边显示方式等。
(4)复叠 简单理解就是制作“画中画,视频中的视频”的意思。 (5)标题 制作视频标题,在视频中加入文字 (6)音频 就是在视频中加入音乐或旁白 (7)分享 就是制作完毕后,视频以什么格式压缩输出,例如输出为MP4,或是720高清的MPEG 5、三个模式按钮介绍,如下图: (1)最左边的是“故事版视图” 主要用来导入视频、某个视频的单重修改、某个视频的多重修改 (2)中间的是“时间抽视图” 我们常常停留在此位置,特别是,如果您也爱好电影字幕制作,他是多么的重要 (3)最右边的是“音频视图” 主要用来编辑视频中录到的声音大小,或是编辑配音音乐的大小,这里指编辑声音音量的大小,不指声音文件的大小裁剪 6、选中(点击)故事版视图,切换到故事版视图,如下图:
常用网页播放器代码 我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其他的无非是面板不同,或者添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其最核心的编码和解码技术是相同的。例如:网络上最流行的windows media流(asf,wma,wmv格式...),Real流(rm,rmvb...),还有MPEG系列编码格式(MP4/MP3格式...) Windows Media Video 是微软推出的一种流媒体格式,它是在“同门”的ASF(Advanced Stream Format)格式升级延伸来得.在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输。Windows Media Player9兼容所有格式的WMV,官方编码器是Windows Media Encoder ,但是如果你想转制高质量的wmv文件,那您一定要有超大的内存来处理数据... 无意中发现CASTPOST的播放器可以自己定义大小,对于WMV格式的在线播放可以说已经足够快了,然后就费了好大劲把一些精彩的短片和一些经典的MTV转化WMV格式放了上来,尽管现在不能下载了,但是只要不是连接人数过多,播放起来还是很流畅的^_^ WMP加入了ActiveX解码器控件,不仅可以放曲子,还能放Flash和其它视频文件
C#中Windows Media Player控件使用实例|方法 2009-09-23 09:05:20 来源:原创【大中小】浏览:2241次 摘要:Windows Media Player是一种媒体播放器,可以播放当前最流行的音频、视频文件和大多数混合型的多媒体文件。为了便于程序的开发,Visual Studio 2005集成开发环境提供了Windows Media Player控件, Windows Media Player控件 Windows Media Player是一种媒体播放器,可以播放当前最流行的音频、视频文件和大多数混合型的多媒体文件。为了便于程序的开发,Visual Studio 2005集成开发环境提供了Windows Media Player 控件,并且提供了相关的属性、方法,开发者根据提供的属性、方法完全可以实现Windows Media Player 播放器的所有功能。 在使用Windows Media Player控件进行程序开发前,必须将Windows Media Player控件添加到工具箱中,步骤如下所示。 (1)选择工具箱,并单击鼠标右键,在弹出的快捷菜单中选择“选择项”。 (2)弹出“选择工具箱项”对话框,选择“COM组件”选项卡。 (3)在COM组件列表中,选择名称为“Windows Media Player”,单击【确定】按钮,Windows Media Player控件添加成功,如图1所示。 图1 添加Windows Media Player控件 表1和表2介绍Windows Media Player控件提供的主要属性和方法。
安卓手机视频播放器推荐 随着智能手机发展,用手机看电影、视频已很普遍,安卓系统视频播放器种类繁多,那么什么播放器简单实用呢?下面小编就给大家推荐几款给力实用的安卓视频播放器! 推荐的软件分别为:MoboPlayer、快播、暴风影音、PPTV、百度影音。1) MoboPlayer
欢迎界面 应用简介 MoboPlayer是运行在移动设备上,为音频和视频提供高质量回放的播放软件。它可以让你在移动设备上播放几乎所有的多媒体格式,将你的数字生活体验提升到新的境界。
视频浏览界面 MoboPlayer从一亮相就获得了广大用户的好感,界面在于华丽但不失简约,并且根据安卓手机横竖屏的不同特点设计了两种不同的视频缩略图显示方式:在竖屏时缩略图以窗口方式呈现,横屏时则类似于iPod的专辑封面,看起来非常华丽。
视频播放 点评:Mobo 视频播放器在兼顾性能的同时,采用了较为华丽的界面,同时它能够支持目前所有的流行的视频格式,无需转码即可播放。它有一个所谓的“智能核心技术”,能够自动检测视频格式,这样能够让视频播放更加流畅,视频质量更好。这款软件会扫描你的手机中的视频,使得它更加易于管理视频,能够保存你的视频播放进度。 MoboPlayer 播放器 Mobo Video Player Pro 二维码扫描下载 分类:媒体播放 评分: 大小:5MB 支持平台:Android 2) 快播
开始界面 应用简介 快播3.0全新改版了!“雷达”“私人模式”“娱乐风向标”…更多强大功能助你轻松玩转掌中视界!快播播放器(Qvod Player)是一款基于准视频点播(QVOD)内核的,集在线点播、在线直播及本地播放于一体的全能播放器。快播移动端实现了对PC端技术的完美移植,集全能播放、万能解码、高清流畅、极速播放为一体,让移动播放更轻松!
下载视频的简单方法 1:打开浏览器或某个网页后,选择:工具-internet选项-删除文件-确定。(这样做的目的是方便一会儿查找文件) 2:这时候开始去试听或试看你想要下载的文件。(记住,一定要等播放的视频或音频文件缓冲完成后再回头去找这个已经下载到电脑里的文件) 3:找到已经下载到电脑里的我们刚才试听或试看的文件,音频文件为MP3格式,视频文件为FLV或MP4或HLV或DAT等格式的文件。(找文件的方法:工具-internet选项-设置-查看文件-这时,在打开的C盘的画面的空白处点右键-排列图标-大小,其实点右键选择图标再选择大小的目的只是为了方便不太熟悉的朋友寻找文件,这时候最后的一个文件就是我们想下载的文件了,在最后的一个文件上点右键选择复制,之后粘贴到桌面或其他地方就可以了,如果需要,自己就更改一下文件的名字,播放的时候选择一下播放器就可以了,右键视频文件,选择程序,如果你电脑里有暴风影音直接就可以运行文件了,如果想下载到手机,找个格式转换软件转换一下格式就OK了) 看我写了这么多好象很麻烦,其实真的简单的不能再简单了! 天天开心!!!
?免责声明 ?VIP会员服务 ?联系我们 ?客户服务 ?如何观看 ?如何下载 ?友情链接 如何下载 如何下载本站的视频?(听课网官方教程) 感谢网友对本站的关注,应广大网友要求,在此和大家分享下载本站视频的一些技巧(当然,这些技巧也适用于其他大多数的网站)。 一、关于FLV视频格式。 以前,网上的很多视频,都是微软的asf/wmv格式、Real的rm、rmvb以及苹果的QuickTime格式等。这些所谓的流媒体格式开创了在线视频的时代。但在当时,在线收看仍然需要较高的带宽。 而如今,Adobe公司(以前是MacroMedia公司)的FlashVideo格式,逐渐演变成当今最流行的网络视频格式(FlashVideo,扩展名为FLV)。 本站的绝大部分视频,就是属于FLV格式,即视频文件名为*.flv。 二、用IE缓存法下载本站视频。 那么,应该如何从本站上(或其他视频网站)下载自己喜欢的FLV视频呢?有许多种可行的方法,下面我们只介绍一种最基本、最有效的方法:——Internet Explorer缓存法。 1、原理。 我们上过的网站,包括图片、音乐、视频,脚本程序、样式表都会被Internet Explorer 保存起来,这就是缓存技术;目的是下次打开同样的页面的时候,可以加快速度,不需要重新从网络下载这些文件了。 大家可能有这样的感觉,第一次打开某个网站的时候,速度可能会慢一些,但是以后再打开的时候,速度就会快不少。这就是Internet Explorer缓存在发挥作用。 2、具体操作。 第一步,打开视频播放的网址。完整地看完我们需要下载的视频(或等待视频全部缓冲完成)。如下图: