linux下安装的FFMPEG,播放视频有点问题
在linux(虚拟机)下安装的ffmpeg,编译安装的,其他的编解码库的话只安装了x264。 用ffplay播放视频总是绿屏。虚拟机的原因?ffmpeg --version信息如下:ffmpeg -version
ffmpeg version 2.2.16
built on Mar5 2017 12:36:18 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pthreads
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4.2.100 /4.2.100
libswscale 2.5.102 /2.5.102
libswresample 0. 18.100 /0. 18.100
libpostproc 52.3.100 / 52.3.100
git clone git://source.ffmpeg.org/ffmpeg.git 用最新版本试试看 孙悟空 发表于 2017-3-6 11:30
git clone git://source.ffmpeg.org/ffmpeg.git 用最新版本试试看
谢谢回复 孙悟空 发表于 2017-3-6 11:30
git clone git://source.ffmpeg.org/ffmpeg.git 用最新版本试试看
再请教您一个问题啊:
我将内存中的H264数据封装成MP4文件;得到的帧率总是设置的一半,这是为什么?
(不是直接读h264文件,而是内存中把一个NAL作为一个Packet),对pts的设置如下:
if (packet.pts == AV_NOPTS_VALUE){
//Write PTS
//Duration between 2 frames (us)
int64_t calc_duration = (double)AV_TIME_BASE / frameRate;
//Parameters
packet.pts = (double)(frame_index*calc_duration) / (double)(av_q2d(pStream->time_base)*AV_TIME_BASE);
packet.dts = packet.pts;
packet.duration = (double)calc_duration / (double)(av_q2d(pStream->time_base)*AV_TIME_BASE);
packet.pos = -1;
packet.stream_index = pStream->index;
frame_index++;
printf("Write 1 Packet. size:%5d\tpts:%lld\n", packet.size, packet.pts);
if (av_interleaved_write_frame(pFmtCtx, &packet) < 0) {
printf("Error muxing packet\n");
return -1;
}
}
其中frameRate是自己设置的实际值,例如设置成25,播放出来的实际帧率是12.设置成50,播放出来的实际帧率是25
页:
[1]