ffmpeg怎么样处理网络流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg怎么样处理网络流相关的知识,希望对你有一定的参考价值。

参考技术A 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

#include "utils.h"
#include <pthread.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
UdpQueue recvqueue;
UdpParam udpParam;
//注册av_read_frame的回调函数,这里只是最简处理,实际应用中应加上出错处理,超时等待...
int read_data(void *opaque, uint8_t *buf, int buf_size)
int size = buf_size;
int ret;
// printf("read data %d\n", buf_size);
do
ret = get_queue(&recvqueue, buf, buf_size);
while (ret);
// printf("read data Ok %d\n", buf_size);
return size;

#define BUF_SIZE 4096*500
int main(int argc, char** argv)
init_queue(&recvqueue, 1024*500);
udpParam.argv = argv;
udpParam.queue = &recvqueue;
uint8_t *buf = av_mallocz(sizeof(uint8_t)*BUF_SIZE);

//UDP接收线程
pthread_t udp_recv_thread;
pthread_create(&udp_recv_thread, NULL, udp_ts_recv, &udpParam);
pthread_detach(udp_recv_thread);

av_register_all();
AVCodec *pVideoCodec, *pAudioCodec;
AVCodecContext *pVideoCodecCtx = NULL;
AVCodecContext *pAudioCodecCtx = NULL;
AVIOContext * pb = NULL;
AVInputFormat *piFmt = NULL;
AVFormatContext *pFmt = NULL;
//step1:申请一个AVIOContext
pb = avio_alloc_context(buf, BUF_SIZE, 0, NU

以上是关于ffmpeg怎么样处理网络流的主要内容,如果未能解决你的问题,请参考以下文章

golang ffmpeg 做网络直播

ffmpeg如何从url获取视频帧数据

流媒体开发10ffmpeg命令直播

流媒体开发10ffmpeg命令直播

FFmpeg总结用ffmpeg进行转格式,Android下播放网络音频流

FFMPEG:RTSP 流冻结,但 FFMPEG 继续录制