ledok视频流识别bug
This commit is contained in:
parent
537db4b375
commit
9f37fabd4b
|
@ -14,36 +14,36 @@ QString videoInfo(QByteArray url, QImage &img, int64_t *dur, AVCodecID *codec_id
|
|||
AVFormatContext *fmt_ctx = avformat_alloc_context();
|
||||
QString err;
|
||||
{
|
||||
if(avformat_open_input(&fmt_ctx, url.constData(), nullptr, nullptr) != 0) {
|
||||
if(avformat_open_input(&fmt_ctx, url.constData(), 0, 0) != 0) {
|
||||
err = "Couldn't open input stream";
|
||||
goto free;
|
||||
}
|
||||
if(avformat_find_stream_info(fmt_ctx, nullptr) < 0) {
|
||||
if(avformat_find_stream_info(fmt_ctx, 0) < 0) {
|
||||
err = "Couldn't find stream information";
|
||||
goto free;
|
||||
}
|
||||
if(dur!=nullptr) *dur = fmt_ctx->duration;
|
||||
if(dur) *dur = fmt_ctx->duration;
|
||||
int vi_idx = -1;
|
||||
for(uint ss=0; ss<fmt_ctx->nb_streams; ss++) if(fmt_ctx->streams[ss]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) vi_idx = ss;
|
||||
for(uint ss=0; ss<fmt_ctx->nb_streams; ss++) if(fmt_ctx->streams[ss]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {vi_idx = ss; break;}
|
||||
if(vi_idx == -1) {
|
||||
err = "Didn't find a Video Stream";
|
||||
goto free;
|
||||
}
|
||||
auto codecpar = fmt_ctx->streams[vi_idx]->codecpar;
|
||||
if(codec_id!=nullptr) *codec_id = codecpar->codec_id;
|
||||
qDebug()<<"codec_id"<<codecpar->codec_id<<avcodec_get_name(codecpar->codec_id);
|
||||
if(codec_id) *codec_id = codecpar->codec_id;
|
||||
qDebug()<<"codecpar w h"<<codecpar->width<<"x"<<codecpar->height<<"codec_id"<<codecpar->codec_id<<avcodec_get_name(codecpar->codec_id);
|
||||
if(av_seek_frame(fmt_ctx, -1, 1000000, AVSEEK_FLAG_BACKWARD) < 0) {
|
||||
err = "av_seek_frame fail";
|
||||
goto free;
|
||||
}
|
||||
const AVCodec *decoder = avcodec_find_decoder(codecpar->codec_id);
|
||||
if(decoder==nullptr) {
|
||||
if(decoder==0) {
|
||||
err = "Could not found Video Decoder";
|
||||
goto free;
|
||||
}
|
||||
auto vcCtx = avcodec_alloc_context3(decoder);
|
||||
avcodec_parameters_to_context(vcCtx, codecpar);
|
||||
if(avcodec_open2(vcCtx, decoder, nullptr) < 0) {
|
||||
if(avcodec_open2(vcCtx, decoder, 0) < 0) {
|
||||
err = "Could not open Video Codec Ctx";
|
||||
avcodec_free_context(&vcCtx);
|
||||
goto free;
|
||||
|
|
|
@ -480,9 +480,6 @@ void CtrlTestPanel::SendAnycastCmd(LedCard card, int iProgramIndex, bool isSingl
|
|||
send->connectToHost(QHostAddress(card.ip),31299);
|
||||
|
||||
ST_ANSY_PROGRAM_PACKET tempStreadPakcet;
|
||||
tempStreadPakcet.SyncHead[0]=0x7e;
|
||||
tempStreadPakcet.SyncHead[1]=0x7e;
|
||||
tempStreadPakcet.SyncHead[2]=0x55;
|
||||
tempStreadPakcet.ucCommType=0x97;
|
||||
tempStreadPakcet.iBaoLiu=0;
|
||||
tempStreadPakcet.iLength=4;
|
||||
|
|
|
@ -41,4 +41,10 @@ signals:
|
|||
void sigSelectedDeviceList();
|
||||
};
|
||||
|
||||
struct UDPPacket {
|
||||
unsigned char SyncHead[3];
|
||||
unsigned char ucCommType;
|
||||
char serialCode[20];
|
||||
unsigned int iLength;
|
||||
};
|
||||
#endif // DEVICEPANEL_H
|
||||
|
|
|
@ -31,136 +31,15 @@ enum {
|
|||
MainPage_End,
|
||||
};
|
||||
|
||||
struct RESTORE_IP {
|
||||
char cNewIp[20];
|
||||
char cMask[20];
|
||||
char cGateway[20];
|
||||
char cDns[20];
|
||||
};
|
||||
struct UDPPacket {
|
||||
unsigned char SyncHead[3];
|
||||
unsigned char ucCommType;
|
||||
char serialCode[20];
|
||||
unsigned int iLength;
|
||||
};
|
||||
struct STREAM_PACKET {
|
||||
unsigned char SyncHead[3];
|
||||
unsigned char ucCommType;
|
||||
char ucSerialCode[20];
|
||||
unsigned int iLength;
|
||||
char pDataBuffer[2049];
|
||||
};
|
||||
|
||||
struct ST_ANSY_PROGRAM_PACKET {
|
||||
unsigned char SyncHead[3];
|
||||
unsigned char SyncHead[3]{0x7e, 0x7e, 0x55};
|
||||
unsigned char ucCommType;
|
||||
int iBaoLiu;
|
||||
unsigned int iLength;
|
||||
unsigned char pDataBuffer[20];
|
||||
};
|
||||
|
||||
enum _NET_COMMU_TYPE {
|
||||
COMMAND_SAVE_ADVANCE_PARAM_NOT_RESET=0x40,
|
||||
COMMAND_ONLY_RESET_CARD_IP=0X43,
|
||||
COMMAND_SET_M31_DOUBLE_HUB=0X44,
|
||||
COMMAND_CONNECT_COLSE =0x7A,
|
||||
COMMAND_UPGRADE = 0x80,
|
||||
COMMAND_SIGNLE_FILE_UPGRADE ,
|
||||
COMMAND_LOOPCHECK ,
|
||||
COMMAND_VERIFY_CLOCK ,
|
||||
COMMAND_SCREEN_OPERATOR,//0x84
|
||||
COMMAND_SET_SERIAL_NUM,
|
||||
NET_COMMU_TYPE_PLAY_IN_LINE , // 网络同步在线播放.
|
||||
NET_COMMU_TYPE_PREVIEW_IN_LINE, // 网络在线预览.
|
||||
NET_COMMU_TYPE_UPGRADE_SYSTEM, // 系统升级.
|
||||
NET_COMMU_TYPE_RECOVER_SYSTEM, // 系统还原到上一次正确的启动.
|
||||
SCREEN_OPERATOR_COMM_PARAMS_SAVE, // 参数保存.
|
||||
NET_COMMU_TYPE_COMM_EXIT,//普通退出,不重启
|
||||
NET_COMMU_TYPE_AUDIO_PLAY,//0X8C
|
||||
NET_COMMU_TYPE_IO,
|
||||
NET_COMMU_TYPE_IO_CHECK,
|
||||
NET_COMMU_TYPE_LIMITE_TIME,
|
||||
NET_COMMU_TYPE_SYSTEM_BROADCAST,//0X90
|
||||
NET_COMMU_TYPE_REALTIME_INSERT_PLAY,
|
||||
|
||||
NET_COMMU_TYPE_MODIFY_SERIAL_ID,
|
||||
NET_COMMU_TYPE_KERNEL_UPGRADE_SYSTEM,
|
||||
NET_COMMU_TYPE_UPGRADE_FINISHED_EXIT,
|
||||
NET_COMMU_TYPE_REAL_TIME_INSERT_PLAY_WITH_LIST_EXIT,
|
||||
NET_COMMU_TYPE_ZNSZ,// 智能设置命令.
|
||||
NET_COMMU_TYPE_SELECT_PROGRAM_PLAY,// 选节目播放.0x97
|
||||
NET_COMMU_TYPE_SELECT_MULI_PROGRAM_PLAY,//98选播多个节目
|
||||
NET_COMMU_TYPE_GET_PROGRAM_NAME,//99获取所有节目的名称
|
||||
NET_COMMU_TYPE_GET_CUR_PLAY_STATUS,//9a查询当前播放的详细信息
|
||||
NET_COMMU_TYPE_POWER_PANEL_ON_OR_OFF,//9b开关大屏幕
|
||||
NET_COMMU_TYPE_ADJUST_BRIGHTNESS,//9c调节亮度
|
||||
NET_COMMU_TYPE_GET_SYSTEM_STATUS,//9d获取系统状态
|
||||
NET_COMMU_TYPE_VERIFY_SIGN,//校验签名9e
|
||||
NET_COMMU_TYPE_SET_WEB_SERVER_PARAM,//配置web服务器参数
|
||||
NET_COMMU_TYPE_GET_WEB_SERVER_PARAM,//a0
|
||||
NET_COMMU_TYPE_SET_WIFI_PARAM,//a1配置wifi参数
|
||||
NET_COMMU_TYPE_GET_WIFI_PARAM,//a2获取wifi参数
|
||||
NET_COMMU_TYPE_SCAN_AP_WIFI_PARAM,//a3获取ap热点的名称
|
||||
NET_COMMU_TYPE_GET_ANDROID=0xa4,
|
||||
NET_COMMU_TYPE_INSTALL_APK=0xa5,
|
||||
NET_COMMU_TYPE_UNINSTALL_APK=0xa6,
|
||||
NET_COMMU_TYPE_SET_DNS=0xa7,
|
||||
NET_COMMU_TYPE_GET_DNS=0xa8,
|
||||
NET_COMMU_TYPE_SET_PROXY=0xa9,
|
||||
NET_COMMU_TYPE_GET_PROXY=0xaa,
|
||||
NET_COMMU_TYPE_SET_ANDROID_COMMUNICATION=0xab,
|
||||
NET_COMMU_TYPE_GET_ANDROID_COMMUNICATION=0xac,
|
||||
NET_COMMU_TYPE_GET_SIM_STATUS=0xad,
|
||||
NET_COMMU_TYPE_GET_APN_PARAM=0xae,
|
||||
NET_COMMU_TYPE_GET_APK_VERSION=0xaf,
|
||||
NET_COMMU_TYPE_SET_REALTIME_PARAM=0xb0,
|
||||
NET_COMMU_TYPE_GET_REALTIME_PARAM=0xb1,
|
||||
NET_COMMU_TYPE_SET_REALTIME_LINSTEN_PARAM=0xb2,
|
||||
NET_COMMU_TYPE_GET_REALTIME_LINSTEN_PARAM=0xb3,
|
||||
NET_COMMU_TYPE_SET_HUAWEI_4G=0xB4,
|
||||
NET_COMMU_TYPE_GET_HUAWEI_4G=0xB5,
|
||||
NET_COMMU_TYPE_CLEAR_ANDROID_PROGRAM=0xB6,
|
||||
NET_COMMU_TYPE_SET_AP_PARAM=0xB7,
|
||||
NET_COMMU_TYPE_GET_AP_PARAM=0xB8,
|
||||
GET_REALY_RESOLUTION=0xB9,
|
||||
GET_REALY_ANDROID_FIRMWARE_INFO=0xBA,
|
||||
NET_COMMU_TYPE_NUM,
|
||||
|
||||
COMMAND_UPGRADE_ANSWER =0xC0,
|
||||
COMMAND_SIGNLE_FILE_UPGRADE_ANSWER ,
|
||||
COMMAND_LOOPCHECK_ANSWER ,
|
||||
COMMAND_VERIFY_CLOCK_ANSWER ,
|
||||
COMMAND_SCREEN_OPERATOR_ANSWER,
|
||||
COMMAND_SET_SERIAL_NUM_ANSWER,
|
||||
NET_COMMU_TYPE_PLAY_IN_LINE_ANSWER , // 网络同步在线播放.
|
||||
NET_COMMU_TYPE_PREVIEW_IN_LINE_ANSWER, // 网络在线预览.
|
||||
NET_COMMU_TYPE_UPGRADE_SYSTEM_ANSWER, // 系统升级.
|
||||
NET_COMMU_TYPE_RECOVER_SYSTEM_ANSWER, // 系统还原到上一次正确的启动.
|
||||
SCREEN_OPERATOR_COMM_PARAMS_SAVE_ANSWER,
|
||||
NET_COMMU_TYPE_COMM_EXIT_ANSWER,
|
||||
NET_COMMU_TYPE_AUDIO_PLAY_ANSWER,//0XcC
|
||||
NET_COMMU_TYPE_IO_ANSWER,
|
||||
NET_COMMU_TYPE_IO_CHECK_ANSWER,
|
||||
NET_COMMU_TYPE_LIMITE_TIME_ANSWER,
|
||||
|
||||
NET_COMMU_TYPE_SYSTEM_BROADCAST_ANSWER,
|
||||
NET_COMMU_TYPE_REALTIME_INSERT_PLAY_ANSWER,
|
||||
NET_COMMU_TYPE_REALTIME_INSERT_PLAY_WITH_GLINT_ANSWER , //带闪烁功能的实时插播
|
||||
|
||||
NET_COMMU_TYPE_KERNEL_UPGRADE_SYSTEM_ANSWER,
|
||||
NET_COMMU_TYPE_UPGRADE_FINISHED_EXIT_ANSWER,//0xd4
|
||||
NET_COMMU_TYPE_REAL_TIME_INSERT_PLAY_WITH_LIST_EXIT_ANSWER,
|
||||
NET_COMMU_TYPE_ZNSZ_ANSWER,// 智能设置命令.
|
||||
NET_COMMU_TYPE_SELECT_PROGRAM_PLAY_ANSWER,//0x97 选节目播放.
|
||||
NET_COMMU_TYPE_SELECT_MULI_PROGRAM_PLAY_ANSWER,
|
||||
NET_COMMU_TYPE_GET_PROGRAM_NAME_ANSWER,
|
||||
NET_COMMU_TYPE_GET_CUR_PLAY_STATUS_ANSWER,
|
||||
NET_COMMU_TYPE_POWER_PANEL_ON_OR_OFF_ANSWER,
|
||||
NET_COMMU_TYPE_ADJUST_BRIGHTNESS_ANSWER,
|
||||
NET_COMMU_TYPE_GET_SYSTEM_STATUS_ANSWER,//获取系统状态
|
||||
NET_COMMU_TYPE_NUM_ANSWER,
|
||||
|
||||
COMMAND_CONNECT_COLSE_ANSWER
|
||||
};
|
||||
class DevicePanel;
|
||||
extern DevicePanel *gDevicePanel;
|
||||
extern QList<LedCard> gSelCards;
|
||||
|
|
|
@ -452,7 +452,7 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) {
|
|||
QByteArray ba("Broadcast!");
|
||||
memcpy(packet.ucSerialCode, ba.data(), ba.size());
|
||||
packet.iLength = 80;
|
||||
packet.ucCommType = COMMAND_ONLY_RESET_CARD_IP;
|
||||
packet.ucCommType = 0X43;
|
||||
memcpy(packet.pDataBuffer, &stTempIp, 80);
|
||||
packet.pDataBuffer[packet.iLength] = GetCheckCodeIn8(&packet.ucCommType,packet.iLength+sizeof(packet.ucCommType)+sizeof(char)*20+sizeof(packet.iLength));
|
||||
int iLenPacket = packet.iLength+sizeof(int)+3*sizeof(unsigned char)+sizeof(char)+20*sizeof(char)+sizeof(char);/////除正文外的协议结构大小;
|
||||
|
|
|
@ -43,4 +43,17 @@ private:
|
|||
void test();
|
||||
};
|
||||
|
||||
struct RESTORE_IP {
|
||||
char cNewIp[20];
|
||||
char cMask[20];
|
||||
char cGateway[20];
|
||||
char cDns[20];
|
||||
};
|
||||
struct STREAM_PACKET {
|
||||
unsigned char SyncHead[3];
|
||||
unsigned char ucCommType;
|
||||
char ucSerialCode[20];
|
||||
unsigned int iLength;
|
||||
char pDataBuffer[2049];
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
@ -1150,9 +1150,6 @@ void mGuangYingPinWidget::mymidelay(int imlsec)
|
|||
void mGuangYingPinWidget::MWSendCmdByUdp(unsigned char cmd,unsigned char *pUcValue,unsigned int iLength,int iCountCmd)
|
||||
{
|
||||
ST_ANSY_PROGRAM_PACKET tempStreadPakcet;
|
||||
tempStreadPakcet.SyncHead[0]=0x7e;
|
||||
tempStreadPakcet.SyncHead[1]=0x7e;
|
||||
tempStreadPakcet.SyncHead[2]=0x55;
|
||||
tempStreadPakcet.ucCommType=cmd;
|
||||
tempStreadPakcet.iBaoLiu=iCountCmd;
|
||||
tempStreadPakcet.iLength=iLength;
|
||||
|
@ -1188,9 +1185,6 @@ void mGuangYingPinWidget::MWSendCmdByUdp(unsigned char cmd,unsigned char *pUcVal
|
|||
void mGuangYingPinWidget::MWSendCmd(uint8_t iComIndex,unsigned char cmd,unsigned char *pUcValue,unsigned int iLength,int iCountCmd)
|
||||
{
|
||||
ST_ANSY_PROGRAM_PACKET tempStreadPakcet;
|
||||
tempStreadPakcet.SyncHead[0]=0x7e;
|
||||
tempStreadPakcet.SyncHead[1]=0x7e;
|
||||
tempStreadPakcet.SyncHead[2]=0x55;
|
||||
tempStreadPakcet.ucCommType=cmd;
|
||||
tempStreadPakcet.iBaoLiu=iCountCmd;
|
||||
tempStreadPakcet.iLength=iLength;
|
||||
|
|
Loading…
Reference in New Issue
Block a user