请选择 进入手机版 | 继续访问电脑版

ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2108|回复: 1

ffmpeg进行rtmp推流的问题

[复制链接]
发表于 2018-3-25 20:12:43 | 显示全部楼层 |阅读模式
使用ffmpeg,摄像头视频得到如下信息:
Input #0, dshow, from 'video=USB HD Webcam':
Duration: N/A, start: 22955.163000, bitrate: N/A
Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 30 fps, 30 tbr, 10000k tbn, 10000k tbc
另外本地搭建了rtmp服务器;
然后利用下面的函数实现解码、编码、推流的过程:
while (ret>=0)
{
ret=av_read_frame(fci, pkt);
index_frame++;
avcodec_send_packet(cci, pkt);
avcodec_receive_frame(cci, frm);
avcodec_send_frame(cco, frm);
avcodec_receive_packet(cco, pkt);
int64_t duration = AV_TIME_BASE / av_q2d(fci->streams[0]->r_frame_rate);
AVRational time_base1 = fci->streams[0]->time_base;
pkt->pts = index_frame*duration / (av_q2d(time_base1)*AV_TIME_BASE);
pkt->dts = pkt->pts;
pkt->duration = duration / (av_q2d(time_base1)*AV_TIME_BASE);
cout << "send " << index_frame << " frames" << endl;
cout <<"pts:"<< pkt->pts <<"\tduration:"<<pkt->duration<< endl;
//av_interleaved_write_frame(fco, pkt);
av_write_frame(fco, pkt);
av_packet_unref(pkt);
av_frame_unref(frm);
//av_usleep(300);
}
但是使用VLC或者ffplay进行拉流播放时,只有画面显示那一瞬间的画面被显示了出来。
各位大哥们,有知道怎么解决这个问题的吗?
回复

使用道具 举报

 楼主| 发表于 2018-3-25 20:14:49 | 显示全部楼层
进行真正的解码和编码之前av_dump_format(,,,1)的输出信息如下:
[libx264 @ 0044b720] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0044b720] profile High 4:2:2, level 3.0, 4:2:2 8-bit
Output #0, flv, to 'rtmp://localhost:1935/live':
    Stream #0:0: Video: h264 (libx264), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, q=-1--1, 30 fps, 30 tbr, 10000k tbn
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2020-8-12 12:12 , Processed in 0.043079 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表