
ffmpeg
bixinwei
这个作者很懒,什么都没留下…
展开
-
obs插件开发~直播助手
大公司都得有自己的直播助手,我们公司也跟风,让我做一个obs插件,直播助手,实现的功能包括但不限于上面截图,比如还做了弹幕显示,还有一些逻辑,截图也反应不出来。不一一废话了。整个UI层面全自己来,没产品,没设计,平民版,针对特定人群,能用就行。目前已经上线,经受考验。技术难度不大。原创 2022-10-26 00:51:37 · 1367 阅读 · 1 评论 -
上线云导播台
前面是PVW信号面板的媒体流,以前做过桌面系统导播台,后来公司需要开发一个云导播台,所以做了一版,为了降低前端开发难度,就直接把前端操作全部封装在一路流中,这个思路也是参考七牛云导播台的方式,坑不少。目前已上线,经受考验原创 2022-10-26 00:40:41 · 623 阅读 · 2 评论 -
obs源码二次开发,自定义插入SEI
平台win10,基于vs2019编译,现已完成:1,透传媒体源(输入源)的SEI给输出output2,obs增加了一个socket http 服务(主要为了轻量级),通过接口传入SEI3,RTMP错误时dump打印发送的16进制数据原创 2022-01-11 15:22:35 · 1181 阅读 · 0 评论 -
流监控(二)
之前博客介绍过实现七牛云后台那样的码流监控曲线。但是不能满足我的需求。我们测试的时候,经常需要知道卡顿检测,画面跳帧(丢画面),音频丢帧,已经在什么时间点出现,且为什么出现的,需要有数据回放。所以我升级了监控。这个界面下面是一个滚动list, 用于打印重要的日志。码率数据的详细情况,由于数据量比较大,所以写到日志文件中。附上截图最重要是做卡顿检测,不用再人眼去盯着播放器,是不是卡顿了。什么时候卡顿了。目前程序的卡顿检测,和ffpaly的播放观看,是非常同步的。...原创 2020-06-03 19:19:44 · 364 阅读 · 0 评论 -
博主实现的流监控
上图是七牛的流监控,下面是我做的一个高仿版,基于ajax每5秒刷新(异步获取数据)原创 2019-12-24 10:55:30 · 261 阅读 · 0 评论 -
ubuntu编译支持h265的ffmpeg,ffplay
ffmpeg2.8.1x264-snapshot-20170521-2245x265-3.2SDL-1.2.15Ubuntu14.041.ffmpeg扩展h265,参看金山云的github。修改了三个文件。2.x265编译很简单,弹出一个dos窗口的时候,先按c,再按g,“一直下一步”。没什么好说的,网上查。推荐是static编译3.SDL编译,我的版本是2.8....原创 2019-10-15 16:40:14 · 1810 阅读 · 0 评论 -
avcodec_copy_context() copy方式实现h264和mp3合成mp4
/**实现h264和mp3合成mp4通过avcodec_copy_context()函数可以将输入视频/音频的参数拷贝至输出视频/音频的AVCodecContext结构体。不涉及编解码*/#include <stdio.h>#include <stdint.h>extern "C"{#include "libavcodec/avcodec.h"#include "libavform原创 2017-12-12 15:30:54 · 1493 阅读 · 0 评论 -
ffmpeg实现视频实时动态时间水印
首先看下效果左上角的实时当前时间,纯c完成。下面的是hello ffmpeg字样是avfilter的drawtext实现。动态时间水印,其实ffmpeg有命令可以实现,不过我在windows下发现用不了,而且转换出来的图片会质量变差。所以想着自己用C去实现。上面的2019-07-02 16:30:46 这些是在android下,用canvas drawtext每一个字符,然后生产对...原创 2019-07-02 16:47:44 · 8016 阅读 · 9 评论 -
让大疆灵眸 OSMO 口袋云台相机支持直播
https://www.dji.com/cn/osmo-pocket?site=brandsite&from=landing_page这是大疆灵眸 OSMO 口袋云台相机的产品官网。该产品可以录制高清1080p mp4或mov格式的视频。但是并不支持直播。录制mp4是实时的,熟悉mp4的格式的朋友都知道,moov在文件尾的mp4是不能解析的。因为所有的音视频帧时间戳,datas...原创 2019-06-24 14:26:49 · 22306 阅读 · 6 评论 -
H.264码流分析器,雷霄骅版本人修改版
雷霄骅自然不必多介绍,做音视频开发的无人不知无人不晓,雷神在h264bitstream基础上做了一版,不过代码bug也遗留不少。目前已知bug,1.slice header解析器中sps pps未保存,导致实际的slice header解析其实是有问题的。原因在h264_stream_t对象每次被清空2.OnItemchangedVH264Nallist函数被多次响应3.read_...原创 2019-08-26 14:58:26 · 2134 阅读 · 6 评论 -
博主Qt+ffmpeg实现的导播台
支持画中画音频试听PV画面,PG画面预览支持输入流不同帧率音视频同步(同源)原创 2019-01-18 20:12:44 · 1404 阅读 · 2 评论 -
ffmpeg swcale实现rgb24转yuv420p
我测试的rgb素材是BGR24的,如果你的 rgb数据是AV_PIX_FMT_RGB24格式,请自行替换#include <stdio.h>#include <stdint.h>#include <cstring>#include <malloc.h>extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avfo原创 2017-12-06 18:43:12 · 2592 阅读 · 0 评论 -
两张yuv图片叠加
程序实现将一个400x400的yuv420p小图,覆盖在一张640x480的yuv420p大图上#include <stdio.h>#include <stdint.h>#include <cstring>int main(int argc, char **argv){ int sw = 400, sh=400; int bw = 640, bh = 480; FILE*原创 2017-12-06 18:40:20 · 2789 阅读 · 0 评论 -
rgb24转yuv420p
有几个关键点:首先yuv420p的采样规则一定要明白。代码中注释已经写明了,还有rgb的数据,是不是倒序,还有是rgb排序,还是brg排序,根据rgb数据源的不同,程序处理也会不一样。#include #include #include #include typedef struct原创 2017-12-04 18:10:39 · 1291 阅读 · 1 评论 -
视频保存为yuv文件
视频保存yuv文件,应考虑转换成什么yuv文件格式以及为什么要转换格式,还有改变视频画面宽高,核心函数是sws_scale/*** 本程序实现了视频文件解码为YUV数据。**/#include <stdio.h>extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "l原创 2017-12-05 15:13:10 · 4460 阅读 · 5 评论 -
pthread
1.pthread_create(pthread_t thread,const pthread_attr_t *attr,void (start_routine) (void),void *arg); 线程id,线程属性,线程创建之后执行的函数,start_routine的函数的传参 void (*start_routine) (void) 是函数指针,void* 是函数返回值类型,start原创 2017-12-13 14:19:46 · 245 阅读 · 0 评论 -
yuv,pcm合成mp4
代码涉及音频编码,视频编码,pts计算,可参考前面的几篇博文,已经模块化 这里pts计算直接使用outputStream的时间基,不存在inputStream转outputStream时间基的问题。因为yuv和pcm都是裸数据,no pts。所以直接写pts值就行。如果是从aac和h264合成mp4那么就需要做输入输出流的时间基转换了。关于时间基的理解和转换,参考上篇深入理解pts,dts,tim原创 2017-12-12 10:06:37 · 2749 阅读 · 3 评论 -
C/C++中数据类型在不同平台下所占字节数
标准的32位的系统: char 1个字节 short 2个字节 int 4个字节 long: 4个字节 float: 4个字节 double: 8个字节 long long: 8个字节16位,32位,64位平台固定的 float:4个字节 double: 8个字节跨平台运用 typedef signed char int8_t; typedef sho原创 2017-11-23 10:29:07 · 1249 阅读 · 0 评论 -
yuv420转h264
注意视频的AVCodecContext需要设置哪些参数,还有avcodec_encode_video2编码出来的AVPacket是不是空(部落格它为空,got_packet_ptr为0)和max_b_frames有关。另外视频的flush,和音频同理。#include <stdio.h>#include <stdint.h>#include <cstring>#include <malloc.原创 2017-12-08 11:25:15 · 2612 阅读 · 0 评论 -
ffmpeg MP3转wav
#include <stdio.h>/*音频mp3->wav*/extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswscale/swscale.h"#include "libswresample/swresample.h"#include <libavut原创 2017-11-22 15:36:57 · 5391 阅读 · 0 评论 -
yuv图片旋转180度,镜像水平翻转
接着上篇文章,如果得到的yuv是倒的,但我希望得到正的图,即将左边的yuv_out.yuv旋转180度,希望得到右图rotate180.yuv 这里需要理解,yuv420p图片,宽w,高h,图像分辨率是w*h,但是并不是说图像在内存中就是w*h的“正方形”内存大小,它的实际内存是超过w*h的,具体是y占了w*h,然后接着u占了w/2*h/2,接着是v占w/2*h/2。 图像旋转180度,则原图的原创 2017-12-07 11:06:47 · 7328 阅读 · 0 评论 -
ffmpeg多线程本地mp4 rtmp推流,h264+aac编码
程序说明:使用了c++11的std线程,锁,信号量等东西,替换了pthread多线程。主要之前用windows下移植的linux发现多线程始终有问题,所以决定用原生的试试。不过现在想来,应该问题还是我队列的设计问题。主要这里有个坑,就是c语言for循环内部的局部变量的内存地址是不变的,所以如果在for循环里面给指针赋值,一定要特别注意。 这次的程序编写过程中遇到很多坑。malloc生产的avfra原创 2018-01-02 14:36:49 · 5712 阅读 · 1 评论 -
windows下MinGW编译ffmpeg+x264+lame+fdk-aac
关于编译环境的搭建,网上很多,主要说下编译中遇到的坑,ffmpeg2.8.1x264-snapshot-20170521lame3.99.5fdk-aac-0.1.4mingw32-4.8.2.rarMSYS-1.0.11.rarglib_2.26.1-1_win32.zip ,pkg-config_0.26-1_win32.zip,coreutils-5.3.0-...原创 2018-04-08 16:04:58 · 3356 阅读 · 0 评论 -
c++11 多线程实现生产者消费者模型
#include <stdio.h>#include <iostream> #include <thread>#include <mutex>#include <condition_variable>#include <queue>using namespace std;const int length = 5;int buffer[length];int read_index;i原创 2017-12-29 22:13:54 · 410 阅读 · 0 评论 -
FFmpeg+SDL2音频播放器
基于雷神最简单的音频播放器修改。/*** 最简单的基于FFmpeg的音频播放器 2* Simplest FFmpeg Audio Player 2** 雷霄骅 Lei Xiaohua* leixiaohua1020@126.com* 中国传媒大学/数字电视技术* Communication University of China / Digital TV Technology* ht原创 2018-01-11 16:53:22 · 1171 阅读 · 2 评论 -
ffmpeg和c++11 std库同时使用的报错信息
ffmpeg和c++11 std库同时使用时,你如果发现上面的错误,请删掉ffmpeg include目录下的stdint.h文件,是删掉文件,不是代码里面去掉引用。必须是删掉这个文件。原创 2018-01-02 16:13:32 · 666 阅读 · 1 评论 -
接上篇博客,更换成AudioFifo音频转码
之前的ffmpeg的博客,大多用audiofifo做音频转码,并没有用avfilter,当然相比较来说,AVFilter更加简单,适合无脑上手。不过其实它底层也是用fifo实现。下面我们自己实现fifo。重点理解音频pts的计算。还有重采样。 这里只上dbt_rtmp.h和dbt_rtmp.cpp的代码,队列部分代码不用变。//dbt_rtmp.cpp#include <dbt_rtmp.h>v原创 2018-01-02 16:02:18 · 1033 阅读 · 1 评论 -
mp3转aac,用AVAudioFifo缓冲pcm数据
#include <stdio.h>#include <windows.h>/*音频转码器mp3->aac*/extern "C"{#include "libavcodec/avcodec.h"#include "libavutil/audio_fifo.h"#include "libavformat/avformat.h"#include "libavutil/avstring原创 2017-11-30 13:54:08 · 2428 阅读 · 1 评论