『壹』 小白求一个 movist mac 破解版
软件介绍:
movist mac 破解版是mac用户常用的一款视频播放器。它主要是使用QuickTime和FFmpeg的解码器来支持整个软件的视频播放的,使软件能够非常好的支持挂载字母,支持多种文件格式的播放,并且它的cpu占用率非常的低,在整个软件的使用体验上是远远大于很多视频播放器的。
所需工具:点击下载 movist mac 破解版
软件特点
1、支持QuickTime和FFmpeg解码器5
2、可定制高品质的标题
3、支持SMI,SRT格式的字幕
4、支持播放列表
5、媒体播放控制
6、控制面板全屏
7、简单的用户界面
8、通用二进制
movist mac功能
1、键盘背光在全屏显示。
2、媒体密钥支持。
3、关闭、注销、在播放列表中休眠的结束作业。
4、在全屏导航中按下和按住播放/暂停。
5、单窗口模式或多文档模式。
6、各种窗口大小调整中心和样式。
7、传统的或狮子式的全屏。
8、桌面背景显示。
9、支持应用程序沙盒。
10、视网膜显示器支持。
11、完全可定制的主题。
12、支持多种文件格式。
13、支持许多视频和音频编解码器。
14、Codec-to-Decoder 绑定。
15、264视频解码加速度。
16、支持许多核心图像过滤器。
17、视频旋转和翻转。
18、逐行扫描 (仅 ffmpeg)。
19、不扫描电视。
20、数字音频出 (s/s/pdif) (仅 ffmpeg)。
21、系统音量变化。
22、a/v 同步调整。
23、支持音频均衡器 (仅 ffmpeg)。
24、quicktime 解码器中的数字音频。
『贰』 如何在C++调用ffmpeg中循环播放一个视频呢现在是只能够播放一次。实现是参照雷霄骅的100行代码。
引子
OpenCV中有自己的用于处理图片和视频的类VideoCapture,可以很方便的读入文件和显示。
现在视频数据流是ffmpeg解码h264文件得到的,由于要依赖该数据源进行相应的后续处理,所以需要将ffmpeg中得到的数据缓存转换成可以被OpenCV处理的Mat类对象。
ffmpeg介绍
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。 FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。
FFmpeg的组成结构
FFmpeg主要由一下几个部分组成:
libavcodec:一个包含了所有FFmpeg音视频编解码器的库。 为了保证最优性能和高可复用性,大多数编解码器从头开发的。
libavformat:一个包含了所有的普通音视格式的解析器和 产生器的库。
三个实例程序,这三个实例较为复杂,基本可以作为API使用手册:
ffmpeg:命令行的视频格式转换程序。
ffplay:视频播放程序。(需要SDL支持)
ffserver:多媒体服务器
了解完组成结构后,你会发现,如果你在寻找一种视频格式转换的方式,那FFmpeg绝对是你的第一选择,libavcodec 则又是重 中之重。如果遇上API不会使用的情况,可以参考ffmpeg.c、ffplay.c、 ffserver.c、apiexample.c(解码)和output_example.c(编码)。
ffmpeg使用说明
ffmpeg库的接口都是c函数,其头文件也没有extern "C"的声明,所以在cpp文件里调用ffmpeg函数要注意了。
一般来说,一个用C写成的库如果想被C/C++同时可以使用,那在头文件应该加上
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
} // endof extern "C"
#endif
如果在.cpp里调用av_register_all()在链接时将找到不符号,因为.cpp要求的符号名
和ffmpeg库提供的符号名不一致。
可以这么解决:
extern "C"
{
#include <libavutil/avutil.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
使用ffmpeg SDK解码流数据过程
以H264视频流为例,讲解解码流数据的步骤。
准备变量
定义AVCodec,AVCodec *变量为解码器指针。
定义AVCodecContext,使用该变量可以将其定义为ffmpeg解码类的类成员。
定义AVFrame,AVFrame描述一个多媒体帧。解码后的数据将被放在其中。
定义AVFormatContext变量,AVFormatContext用于保存视频流的有效信息。
AVCodec *pCodec;
AVCodecContext * pCodecCtx;
AVFrame * pAvFrame;
AVFormatContext *pFormatCtx;
初始化解码器
第一件事情就是初始化libavformat/libavcodec:
ffmpeg注册复用器,编码器等的函数av_register_all()。
av_register_all();
这一步注册库中含有的所有可用的文件格式和编码器,这样当打开一个文件时,它们才能够自动选择相应的文件格式和编码器。要注意你只需调用一次 av_register_all(),所以,尽可能的在你的初始代码中使用它。这里注册了所有的文件格式和编解码器的库,所以它们将被自动的使用在被打开的合适格式的文件上。注意你只需要调用 av_register_all()一次,因此我们在主函数main()中来调用它。如果你喜欢,也可以只注册特定的格式和编解码器,但是通常你没有必要这样做。
打开视频文件,取出包含在文件中的流信息
// 打开视频文件
if(av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0)
handle_error(); // 不能打开此文件
这个函数读取文件的头部并且把信息保存到我们给的AVFormatContext结构体中。
最后三个参数描述了文件格式,缓冲区大小(size)和格式参数;我们通过简单地指明NULL或0告诉 libavformat 去自动探测文件格式并且使用默认的缓冲区大小。
// 取出流信息
if(av_find_stream_info(pFormatCtx)<0)
handle_error(); // 不能够找到流信息
查找文件的流信息,avformat_open_input函数只是检测了文件的头部,接着要检查在文件中的流的信息。
这一步会用有效的信息把 AVFormatContext 的流域(streams field)填满。作为一个可调试的诊断,我们会将这些信息全盘输出到标准错误输出中,不过你在一个应用程序的产品中并不用这么做。
我们仅仅处理视频流,而不是音频流。为了让这件事情更容易理解,我们只简单使用我们发现的第一种视频流。
//遍历文件的各个流,找到第一个视频流,并记录该流的编码信息
videoindex = -1;
for(i=0; i<pFormatCtx->nb_streams; i++)
{
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
videoindex=i;
break;
}
}
if(videoindex==-1)
{
printf("Didn't find a video stream.\n");
return;
}
pCodecCtx=pFormatCtx->streams[videoindex]->codec;
我们已经得到了一个指向视频流的称之为上下文的指针。接下来,我们需要找到真正的编码器打开它。
寻找视频流的解码器
在库里面查找支持该格式的解码器
pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
if(pCodec == NULL)
handle_error(); // 找不到解码器
打开解码器
if(avcodec_open(pCodecCtx, pCodec)<0)
handle_error();
给视频帧分配空间,以便存储解码后的图片数据
pAvFrame = avcodec_alloc_frame();
解码视频帧就像我前面提到过的,视频文件包含数个音频和视频流,并且他们各个独自被分开存储在固定大小的包里。我们要做的就是使用libavformat依次读取这些包,过滤掉所有那些视频流中我们不感兴趣的部分,并把它们交给libavcodec进行解码处理。
进行解码
通过该api读入一帧
result = av_read_frame(pFormatCtx, packet);
通过下面的api进行解码一帧数据,将有效的图像数据存储到pAvFrame成员变量中
ret = avcodec_decode_video2(pCodecCtx, pAvFrame, &got_picture, packet);
『叁』 有没有可能一个人写一个h264的解码器,不使用开源代码
一个人呢,看多长时间了,可能性肯定是有的
但是不浪费时间么
ffmpeg里仅h264.c一个文件就1w行
自己写的话,效率和稳定性又不一定好,不值当
『肆』 批处理下怎么用ffmpeg判断视频完不完整,有无问题
1、ffmpeg本身不能校验视频完整性,如果是可串流的格式,那么只要meta信息完整,里面数据未损坏,哪怕只有一半内容,也会认为正常
2、只使用-i可以获取meta,如果你是在bash环境可以配合grep来过滤错误信息
3、要确定数据是否健康无损坏,最简单的办法就是用最快速的preset跑一遍,输出到/dev/null就行了,同样使用grep过滤输出即可
『伍』 android ffmpeg怎么用
这个是一个大项,专业人员都要学两三天才能下手,所以我就简述一下
1、最简单你可以使用现成的,很多基于ffmpeg封装的框架 (ijkPlayer
GSYVideoPlayer)
2、自己做 需要有JNI知识(包含基本C/C++语法)给你看下大致流程
其中so库也可以网上下载到
3、ffmpeg参考文献基本都是推雷霄骅的,但是他不幸GG了,所以文献什么的都有点过时,我们使用AS开发有很多便利了,他都没讲到,可以网络过滤获取最新的视屏资源和文章学习
『陆』 如何用ffmpeg播放抓包下来的pcap文件,是播放远端视频服务器时抓的UDP包
视频源没问题 也没丢包 那就是解码器的问题
『柒』 bc!格式的文件 ■解决了再给分■
rmvb是一种视频格式,描述中你说将.bc去掉以后依旧是一个未知文件,所以说明你的电脑中也许没有支持rmvb格式的视频播放器。
结尾处你说,可以在BitComet中播放佐证了这一点,能够播放说明视频文件是没有问题的。所以你现在需要做的是下载一个支持rmvb格式的播放器软件。
另外,不要把它改成其他格式,一般来说,对文件进行后缀名的修改,以不是文件格式的方式是无法打开这个文件的。
(7)ffmpeg过滤器扩展阅读
在Windows平台,专用的RealPlayer HD播放器和开源的、使用合适的DirectShow过滤器或Real插件的MPC(Media
Player
Classic)播放器、暴风影音等,都支持RMVB文件播放。
在Linux或其他类Unix平台上,MPlayer,xine和Totem播放器使用开源的、反向工程破解的FFmpeg实现来播放RMVB文件。跨平台的VLC媒体播放器也支持该格式的播放。
硬盘类MP4相比闪存类MP4的一大特点就是其所支持的视频格式的多样性。但由于长期以来MP4都没能完全兼容RMVB格式。
因而两种MP4在日常使用中并没有让人感觉到之间有什么本质性的区别,因为对于占绝大多数的RMVB视频,两者都无法做到“即下即播”或是“即拖即放”。
难怪全面兼容RMVB格式的机型出来之时,业界也为之欢呼雀跃。当然,兼容RMVB格式的播放器除了要获得REALNETWORKS公司授权外,对播放器芯片的主频要求也是非常高。
而且在前面的三大视频格式的性能对比中,我们也看到了兼容RMVB格式,对于增强MP4尤其是容量小的闪存MP4的实用性,有着不可估量的巨大意义。
『捌』 我的桌面右下角总是出现一个图标,不知道是啥东西...关也关不了 求大神知道
呵呵你好 我的也是这个问题看吧 告诉你怎么解决 看看你最近安装了什么软件 这是个音频分割器,是关于视频音频的东东 吧他卸载就OK了 (这东西怪烦人找也找不到他 )
『玖』 ffmpeg中的skip_loop_filter有什么作用比如setAvCodecOptions("skip_loop_filter", "8");
是解码的一个参数,叫环路滤波,环路滤波主要用于滤除方块效应(块内模糊, 图像信号的低频区是用来反应一个图像的细节程度的,要是去掉低频部分,只用高频来描述图像的轮廓肯定很明显的出现方块效应 。)decode_slice()在解码完一行宏块之后,会调用loop_filter()函数完成环路滤波功能。
设置成48和0,图像清晰度对比,0比48清楚,理解起来就是,
0是开启了环路滤波,过滤的是大部分,
而48基本没启用环路滤波,所以清晰度更低,但是解码性能开销小
skip_loop_filter(环路滤波)简言之:
a:环路滤波器可以保证不同水平的图像质量。
b:环路滤波器更能增加视频流的主客观质量,同时降低解码器的复杂度。
『拾』 ffmpeg 下载一些视频会403 ,怎么解决下载器下载 浏览器下载都没问题 -i "http
方法一:FFmpeg concat 协议
对于 MPEG 格式的视频,可以直接连接:
ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c output.mpg
对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法
ffmpeg -i input1.flv -c -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.flv -c -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i input3.flv -c -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c -bsf:a aac_adtstoasc -movflags +faststart output.mp4
保存 QuickTime/MP4 格式容器的时候,建议加上 -movflags +faststart。这样分享文件给别人的时候可以边下边看。
方法二:FFmpeg concat 分离器
这种方法成功率很高,也是最好的,但是需要 FFmpeg 1.1 以上版本。先创建一个文本文件filelist.txt:
file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'
然后:
ffmpeg -f concat -i filelist.txt -c output.mkv
注意:使用 FFmpeg concat 分离器时,如果文件名有奇怪的字符,要在 filelist.txt 中转义。
方法三:Mencoder 连接文件并重建索引
这种方法只对很少的视频格式生效。幸运的是,新浪视频使用的 FLV 格式是可以这样连接的。对于没有使用 MPEG 编码器的视频(如 FLV1 编码器),可以尝试这种方法,或许能够成功。
mencoder -forceidx -of lavf -oac -ovc -o output.flv input1.flv input2.flv input3.flv
方法四:使用 FFmpeg concat 过滤器重新编码(有损)
语法有点复杂,但是其实不难。这个方法可以合并不同编码器的视频片段,也可以作为其他方法失效的后备措施。
ffmpeg -i input1.mp4 -i input2.webm -i input3.avi -filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' <编码器选项> output.mkv
如你所见,上面的命令合并了三种不同格式的文件,FFmpeg concat 过滤器会重新编码它们。注意这是有损压缩。
[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] 分别表示第一个输入文件的视频、音频、第二个输入文件的视频、音频、第三个输入文件的视频、音频。concat=n=3:v=1:a=1 表示有三个输入文件,输出一条视频流和一条音频流。[v] [a] 就是得到的视频流和音频流的名字,注意在 bash 等 shell 中需要用引号,防止通配符扩展。
提示
以上三种方法,在可能的情况下,最好使用第二种。第一种次之,第三种更次。第四种是后备方案,尽量避免。
规格不同的视频合并后可能会有无法预测的结果。
有些媒体需要先分离视频和音频,合并完成后再封装回去。
对于 Packed B-Frames 的视频,如果封装成 MKV 格式的时候提示 Can't write packet with unknown timestamp,尝试在 FFmpeg 命令的 ffmpeg 后面加上 -fflags +genpts