ffmpeg 3.2版本播放ts流正常,但是录制成为MP4的文件播放黑屏
2017-04-28 15:41
519 查看
终于把黑屏的问题解决了。
场景:用ffmpeg 3.2的库播放ts流或者m3u8文件正常,但是录制成为MP4文件的时候,只有声音,是黑屏的。
解决过程:Step1:采用ffmpeg 2.7进行ts流的录制,存为A.mp4,录像播放正常
Step2:通过Video Pro Analyzer 工具分析每一包数据,第一帧的数据大小是19396字节
Step3:采用采用ffmpeg 3.2进行ts流的录制,存为B.mp4,录像播放只有声音,没有画面。A和B保证 是从同一地方录制(有少许误差),保证第一帧是同一个画面。
Step4:通过Video Pro Analyzer 工具分析每一包数据,第一帧的数据大小是19410字节
Step5:再次重复上述动作,对原文件是MP4进行录制,发现数居一致。
Step6:进而初步判断利用ffmpeg3.2,执行
AVPacket stPkt;
int iFlag =
0;
int iRet =
0;
_RE_READ :
av_init_packet(&stPkt);
iRet = av_read_frame(thiz->pstCtx, &stPkt);
操作后,得到的AVPacket的size多了14个字节。
解决办法:在dumxer ts流的时候,判断如果是H264,对长度进行减14,
if (AV_CODEC_ID_H264 == thiz->pstCtx->streams[iIndex]->codec->codec_id
&&
pstPkt !=NULL && pstPkt->data !=
NULL && pstPkt->size >
0)
{
pstPkt->size = pstPkt->size -14;
}
结果:录制出来的MP4文件播放正常。
(备注:1 之前采用的ffmpeg是2.7版本,现在换为3.2版本
2 2.7版本 设置
AVCodecContext的flags 如下:pstCodec->flags = CODEC_FLAG_GLOBAL_HEADER,
3.2版本改为 如下:pstCodec->flags = AV_CODEC_FLAG_GLOBAL_HEADER;
)
场景:用ffmpeg 3.2的库播放ts流或者m3u8文件正常,但是录制成为MP4文件的时候,只有声音,是黑屏的。
解决过程:Step1:采用ffmpeg 2.7进行ts流的录制,存为A.mp4,录像播放正常
Step2:通过Video Pro Analyzer 工具分析每一包数据,第一帧的数据大小是19396字节
Step3:采用采用ffmpeg 3.2进行ts流的录制,存为B.mp4,录像播放只有声音,没有画面。A和B保证 是从同一地方录制(有少许误差),保证第一帧是同一个画面。
Step4:通过Video Pro Analyzer 工具分析每一包数据,第一帧的数据大小是19410字节
Step5:再次重复上述动作,对原文件是MP4进行录制,发现数居一致。
Step6:进而初步判断利用ffmpeg3.2,执行
AVPacket stPkt;
int iFlag =
0;
int iRet =
0;
_RE_READ :
av_init_packet(&stPkt);
iRet = av_read_frame(thiz->pstCtx, &stPkt);
操作后,得到的AVPacket的size多了14个字节。
解决办法:在dumxer ts流的时候,判断如果是H264,对长度进行减14,
if (AV_CODEC_ID_H264 == thiz->pstCtx->streams[iIndex]->codec->codec_id
&&
pstPkt !=NULL && pstPkt->data !=
NULL && pstPkt->size >
0)
{
pstPkt->size = pstPkt->size -14;
}
结果:录制出来的MP4文件播放正常。
(备注:1 之前采用的ffmpeg是2.7版本,现在换为3.2版本
2 2.7版本 设置
AVCodecContext的flags 如下:pstCodec->flags = CODEC_FLAG_GLOBAL_HEADER,
3.2版本改为 如下:pstCodec->flags = AV_CODEC_FLAG_GLOBAL_HEADER;
)
相关文章推荐
- Android 录制的mp4视频文件在IOS中无法播放问题
- ffmpeg录制屏幕,生成MP4视频文件开发过程
- 调用VLCjni.so播放rtsp视频流并录制成mp4文件
- Android 录制的mp4视频文件在IOS中无法播放问题
- 如何让FFMPEG生成的MP4文件做到边下载边播放
- 使用ffmpeg转码的MP4文件需要加载完了才能播放的解决办法
- ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢-解决
- 实现用FFmpeg接收RTSP,把H264视频和AAC音频录制成MP4文件(附完整代码)
- 使用ffmpeg转码的MP4文件需要加载完了才能播放的解决办法
- 使用ffmpeg把flv转换成Android可播放的mp4文件
- 在iOS中,摄像头录制的视频是mov格式的,虽然mov兼容mp4,但是有些需求需要用到mp4格式的视频文件。
- ffmpeg播放音视频文件(ffmpeg-3.2.4-win32-dev版本)
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- 经常出现正常运行Windows所需的文件已被替换成无法识别的版本
- FMS第二课:播放录制的媒体文件
- GStreamer播放mp4文件所需插件
- FFMpeg转码后得到的MP4必须要加载完才能播放的问题
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- 迅雷的专用文件播放格式.xv如何转化为正常的格式
- 关于 QuickTime MP4文件格式的流媒体播放