ffmpeg
文章平均质量分 67
withoutfear
这个作者很懒,什么都没留下…
展开
-
PHP 使用FFMpeg压缩处理视频
FFMpeg压缩处理视频<?php$xd_file = '原视频地址路径和名';$file = dirname(dirname(dirname(__FILE__))) . '/' . $xd_file;$file_data = pathinfo($file);// PHP获取视频的所有信息$info = shell_exec("ffprobe -v quiet -print_format json -show_format -show_streams " . $file);//原创 2021-12-11 08:59:54 · 1384 阅读 · 0 评论 -
ffmpeg实战教程(十三)iJKPlayer源码简析
要使用封装优化ijk就必须先了解ffmpeg,然后看ijk对ffmpeg的C层封装!这是我看ijk源码时候的笔记,比较散乱。不喜勿喷~ijk源码简析:1.ijkplayer_jni.c 封装的播放器JNI层 API,对应java层调用。2.ijkplayer.c 封装的播放器API,对应给JNI层调用3.ff_ffplay_options.c 参数设置options4.ijkplayer_android.c 创建播放器,对应Android系统的音视频5..ff_ffplay.c ff转载 2021-03-26 11:20:30 · 711 阅读 · 0 评论 -
ffmpeg实战教程(十二)为视频添加/更换背景音乐
2017年,各种关于视频处理的功能层出不穷,现在基本上大多APP都有视频上传播放功能。然而上传,播放可用的优秀框架有很多,我们在此就不说了。本篇我们就做一个用ffmpeg给视频添加/更换背景音乐的功能UI界面有两个输入框,第一个填入要加背景音乐的视频文件,第一个要添加音乐的文件。然后点击按钮。可见在手机根目录生成了一个合成的视频文件。试播一下,发现已经有了背景音乐。其实现原理主要是剥开视频文件拿到视频裸流,然后拿到音频文件根据时间戳一帧一帧的封装成一个新的视频文件下面是具体实现转载 2021-03-26 11:20:18 · 2181 阅读 · 0 评论 -
ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK
直播,2016最火的技术之一了,更多的关于直播的知识:http://blog.csdn.net/king1425/article/details/72489272 …这篇我们就不依赖任何集成好的SDK,自己搭建服务器,用ffmpeg+nginx实现手机直播功能先上图:推流的手机拉流的网页和VL播放器拉流的手机客户端对于nginx服务器的搭建之前有写过:ffmpeg实战教程(九)windows下ffmpeg命令+nginx + rtmp实现推流,拉流。这篇也建议看一下:关于转载 2021-03-26 11:20:02 · 1993 阅读 · 2 评论 -
ffmpeg实战教程(十)ffmpeg/camera实现最近很火的视频壁纸,相机壁纸
本篇实现一个有意思的玩意儿,视频壁纸,相机壁纸这玩意好像现在还都是国外版本,哈哈先上图:视频壁纸相机壁纸1.动态壁纸制作的知识:每一个动态壁纸都继承自WallpaperService,其中必须实现的抽象方法onCreateEngine,返回一个Engine对象,实际上所有的绘图与刷新都是由engine完成。如下public class VideoLiveWallpaper extends WallpaperService { // 实现WallpaperService必须转载 2021-03-25 17:11:46 · 830 阅读 · 0 评论 -
ffmpeg实战教程(九)windows下ffmpeg命令+nginx + rtmp实现推流,拉流。
概述Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx-rmtp-module是Nginx服务器的流媒体插件。nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流。先介绍一下windows下搭建nginx + rtmp有两种方案:(一)1.下载nginx :http://nginx.org/2.下载nginx-rmtp-module:https:/转载 2021-03-25 17:04:57 · 611 阅读 · 0 评论 -
ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能
上一篇我们实现了Android平台解码avi并用SurfaceView播放。ffmpeg实战教程(七)Android CMake avi解码后SurfaceView显示本篇我们在此基础上实现滤镜,水印等功能。对ffmpeg不熟的客官看这里:ffmpeg源码简析(一)结构总览先上两张效果图:黑白:const char *filters_descr = “lutyuv=’u=128:v=128’”;添加水印:const char *filters_descr = “movie=/stora转载 2021-03-25 16:57:14 · 637 阅读 · 0 评论 -
ffmpeg实战教程(七)Android CMake avi解码后SurfaceView显示
在上一篇文章中实现了Android平台MP4解码YUV数据,本篇我们实现Android平台解码avi并用SurfaceView播放。先上图看效果:思路:1.把封装好的视频数据解码为YUV2.YUV数据转化为RGB。3.一帧一帧的传给SurfaceView显示出来PS:其实YUV数据可直接在SurfaceView显示,在研究Android系统多媒体框架的stagefright视频显示时发现,根本找不到omx解码后的yuv是怎么转换成RGB的代码,yuv数据在render之后就找不到去转载 2021-03-25 16:50:31 · 222 阅读 · 0 评论 -
ffmpeg实战教程(六)Android CMake实现解码(MP4转YUV)
在前面的文章中我们用ffmpeg在windows上实现了多种功能,下面系列的文章我们将移植到Android系统上实现。我们将使用最新版:最新版ffmpeg ffmpeg3.3新版Android studio Android studio2.3新版JNI编译方式 CMake对于Android开发者或许对C/C++/JNI知识不够了解。可以先看这里:C语言小结 :http://blog.csdn.net/king1425/article/details/70256764C++小结(一) :转载 2021-03-25 16:45:54 · 261 阅读 · 0 评论 -
ffmpeg实战教程(五)libswscale,libavfilter实践指南
1.libswscale实现YUV转RGBlibswscale里面实现了各种图像像素格式的转换。libswscale使用起来很方便,最主要的函数只有3个:(1) sws_getContext():使用参数初始化SwsContext结构体。(2) sws_scale():转换一帧图像。(3) sws_freeContext():释放SwsContext结构体。其中sws_getContext()也可以用另一个接口函数sws_getCachedContext()取代。初始化方法初始化Sws转载 2021-03-25 16:28:30 · 336 阅读 · 0 评论 -
ffmpeg实战教程(四)格式转换如MP4转MKV等
知识延伸:I,P,B帧和PTS,DTS的关系基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;B frame: 双向预测内插编码帧 又称bi-d转载 2021-03-25 16:18:55 · 1059 阅读 · 0 评论 -
ffmpeg实战教程(三)音频PCM采样为AAC,视频YUV编码为H264/HEVC
音频PCM采样数据编码为压缩码流(MP3,WMA,AAC等)简单介绍一下流程中各个函数的意义:av_register_all():注册FFmpeg所有编解码器。avformat_alloc_output_context2():初始化输出码流的AVFormatContext。avio_open():打开输出文件。av_new_stream():创建输出码流的AVStream。avcodec_find_encoder():查找编码器。avcodec_open2():打开编码器。转载 2021-03-25 16:16:50 · 512 阅读 · 0 评论 -
ffmpeg实战教程(二)用SDL播放YUV,并结合ffmpeg实现简易播放器
我们先实现用SDL播放YUV数据先来了解一下基本概念SDL基本函数:[初始化]* SDL_Init(): 初始化SDL。* SDL_CreateWindow(): 创建窗口(Window)。* SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。* SDL_CreateTexture(): 创建纹理(Texture)。[循环渲染数据]* SDL_UpdateTexture(): 设置纹理的数据。* SDL_RenderCopy(): 纹理复制给渲染器。*转载 2021-03-25 16:12:48 · 291 阅读 · 0 评论 -
ffmpeg实战教程(一)Mp4,mkv等格式解码为h264和yuv数据
FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。而网上对这些功能的使用大多是基于命令行的。这不利于我们深入学习定制化ffmpeg,今后我将写一系列的用代码实现这些功能的教程供大家学习。这系列的前部分我打算写在windows上的实现,后部分写移植到Android系统上实现。代码实现的前提是对ffmpeg源码有一定的了解,如果你不了解可以看这里ffmpeg源码简析(一)结构总览下面进入正题,用FFmpeg实现Mp4,mkv等格式的解码。解码为h264和YUV数据并存转载 2021-03-25 16:10:07 · 1549 阅读 · 0 评论