#include "widget.h"
#include <QApplication>
#include <wndebug.h>
#include <types.h>
#include <settings.h>
#include <daemon.h>
#include <QDir>
#include <QTranslator>
#include "xffmpeg.h"
//#ifdef __cplusplus
//extern "C"
//{
//#endif
//#include <libavformat/avformat.h>
//#include <libswscale/swscale.h>
//#ifdef __cplusplus
//}
//#endif
//static cdouble r2d(AVRational r){
// return r.num == 0 || r.den == 0?0.0:(double)r.num/r.den;
//}
int main(int argc, char *argv[])
{
const char *appName = APP;
QCoreApplication::setApplicationName(appName);
QCoreApplication::setApplicationVersion("0.1");
QCoreApplication::setOrganizationName("WuNan");
QCoreApplication::setOrganizationDomain("www.wunan.org");
#if __linux__ || linux
if(Settings::value("Configure/EnableRunAsDaemon", true).toBool())
{
Daemon::startDaemon();
Daemon::alwayRun();
WNDebug::enableLog(appName);
}
#endif
///release mode will write log to file log.txt
if(Settings::value("Configure/EnableLogToFile", true).toBool())
{
WNDebug::enableLog(appName);
}
WNDebug::setLogLevel((WNDebug::LOGLEVEL)Settings::value("Configure/LogLevel", 0).toInt());
WN_INFO<<QString("%1 Start!").arg(appName);
QApplication a(argc, argv);
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath()+QDir::separator()+"plugins");
//install language
QTranslator qTranslator;
const QString qmFile("zh_CN.qm");
if(!qTranslator.load(qmFile))
{
WN_WARNING<<QString("%1 load fail!").arg(qmFile);
}
else
{
QCoreApplication::installTranslator(&qTranslator);
}
// XFFmpeg xFFmpeg;
// if(!xFFmpeg.open("/home/andy/Videos/FHD.mp4")){
// WN_CRITICAL<<QString("Open file error, because of %1.").arg(xFFmpeg.errorString());
// return -1;
// }else{
// WN_DEBUG<<QString("Open file success!");
// }
// uchar *rgb = new uchar[800*600*4];
// while(true){
// AVPacket pkt = xFFmpeg.read();
// if(0 == pkt.size){
// break;
// }
// WN_DEBUG<<QString("Packet pts %1").arg(QString().sprintf("%lld", pkt.pts));
// enum AVMediaType avMediaType;
// AVFrame *avframe = xFFmpeg.decode(&pkt, avMediaType);
// if(!avframe){
// WN_CRITICAL<<QString("Decode error, because of %1.").arg(xFFmpeg.errorString());
// }else{
// switch (avMediaType) {
// case AVMEDIA_TYPE_VIDEO:
// WN_DEBUG<<QString("Decode video success!");
// xFFmpeg.toRGB(avframe, rgb, 800, 600);
// break;
// case AVMEDIA_TYPE_AUDIO:
// WN_DEBUG<<QString("Decode audio success!");
// break;
// default:
// WN_DEBUG<<QString("Decode unknow(%1) success!").arg(avMediaType);
// break;
// }
// }
// av_packet_unref(&pkt);
// }
// xFFmpeg.close();
// av_register_all();//注册所有
// cchar *url = "/home/andy/Videos/FHD.mp4";
//// cchar *url = "/home/andy/Videos/FHD.h264";
// //open stream
// AVFormatContext *ic = NULL;
// int ret = avformat_open_input(&ic, url, NULL, NULL);
// if(0 == ret){//打开文件或流
// cuint videoSecs = ic->duration/AV_TIME_BASE;
// WN_DEBUG<<QString("Url(%1) totalTime is %2:%3:%4").arg(url).arg(videoSecs/3600).arg(videoSecs/60%60).arg(videoSecs%60);
// }else{
// char errorBuf[1024];
// bzero(errorBuf, sizeof(errorBuf));
// if(0 != av_strerror(ret, errorBuf, sizeof(errorBuf))){
// strcpy(errorBuf, "Unknow error!");
// }
// WN_CRITICAL<<QString("Open %1 error because of %2.").arg(url).arg(errorBuf);
// return -1;
// }
// //open decoder
// int videoStreamIndex = -1;
// AVCodecContext *videoCtx = NULL;
// AVCodecContext *audioCtx = NULL;
// for(int i = 0; i < ic->nb_streams; i++){
// AVCodecContext *enc = ic->streams[i]->codec;
// if(AVMEDIA_TYPE_VIDEO == enc->codec_type){
// videoCtx = enc;
// videoStreamIndex = i;
// AVCodec *codec = avcodec_find_decoder(enc->codec_id);
// if(!codec){
// WN_CRITICAL<<QString("Decoder not find!");
// return -1;
// }
// //open decoder
// ret = avcodec_open2(enc, codec, NULL);
// if(0 != ret){
// char errorBuf[1024];
// bzero(errorBuf, sizeof(errorBuf));
// if(0 != av_strerror(ret, errorBuf, sizeof(errorBuf))){
// strcpy(errorBuf, "Unknow error!");
// }
// WN_CRITICAL<<QString("Open codec error because of %1").arg(errorBuf);
// return -1;
// }
// }else if(AVMEDIA_TYPE_AUDIO == enc->codec_type){
// audioCtx = enc;
// }
// }
// AVFrame *yuv = av_frame_alloc();// alloc AVFrame Object
// SwsContext *cCtx = NULL;
// cuint outWidth = 640;
// cuint outHeight = 480;
// uchar *rgb = new uchar[outWidth*outHeight*4];
// //get stream
// while(true){
// AVPacket pkt;
// ret = av_read_frame(ic, &pkt);
// if(0 == ret){
// WN_DEBUG<<QString("pts: %1").arg(QString().sprintf("%lld", (long)(pkt.pts*r2d(ic->streams[pkt.stream_index]->time_base)*1000)));
//#if 0
// bool isGetPic = false;
// ret = avcodec_decode_video2(videoCtx, yuv, (int *)&isGetPic, &pkt);
// if(0 > ret){
// char errorBuf[1024];
// bzero(errorBuf, sizeof(errorBuf));
// if(0 != av_strerror(ret, errorBuf, sizeof(errorBuf))){
// strcpy(errorBuf, "Unknow error!");
// }
// WN_CRITICAL<<QString("Open codec error because of %1").arg(errorBuf);
// return -1;
// }else if(0 == ret){
// WN_WARNING<<QString("Could not decompress!");
// }
// if(isGetPic){
// WN_DEBUG<<QString("decodec size %1").arg(ret);
// }
//#else
// //pass data to decode
// ret = avcodec_send_packet(videoCtx, &pkt);
// if(0 != ret){
// char errorBuf[1024];
// bzero(errorBuf, sizeof(errorBuf));
// if(0 != av_strerror(ret, errorBuf, sizeof(errorBuf))){
// strcpy(errorBuf, "Unknow error!");
// }
// WN_CRITICAL<<QString("Decode error because of %1").arg(errorBuf);
// av_packet_unref(&pkt);
// continue;
// }
// //recive a frame
// ret = avcodec_receive_frame(videoCtx, yuv);
// if(0 != ret){
// char errorBuf[1024];
// bzero(errorBuf, sizeof(errorBuf));
// if(0 != av_strerror(ret, errorBuf, sizeof(errorBuf))){
// strcpy(errorBuf, "Unknow error!");
// }
// WN_CRITICAL<<QString("Decode error because of %1").arg(errorBuf);
// av_packet_unref(&pkt);
// continue;
// }
// WN_DEBUG<<QString("Decode success!");
// cCtx = sws_getCachedContext(cCtx, videoCtx->width, videoCtx->height, videoCtx->pix_fmt,
// outWidth, outHeight, AV_PIX_FMT_BGRA,
// SWS_BICUBIC,
// NULL,
// NULL,
// NULL);
// if(!cCtx){
// WN_CRITICAL<<QString("sws_getCachedContext
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
XPlay.rar (14个子文件)
XPlay
xffmpeg.cpp 7KB
XPlay.v12.suo 26KB
xvideothread.h 928B
XPlay.pro 2KB
xvideothread.cpp 4KB
videowidget.h 306B
xffmpeg.h 2KB
widget.h 317B
videowidget.cpp 2KB
widget.ui 2KB
main.cpp 9KB
XPlay
buildInstall.sh 324B
XPlay.ini 84B
widget.cpp 876B
共 14 条
- 1
资源评论
- haizi142019-02-26资源不错 可以
- ashinfree2018-10-15很好的资源。
wnself3014923728
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功