Prechádzať zdrojové kódy

新增打开失败错误原因打印

huihui 3 mesiacov pred
rodič
commit
9aee740172

+ 17 - 2
module/VideoPlayer/src/VideoPlayer/VideoPlayer.cpp

@@ -13,6 +13,18 @@
 #include <stdio.h>
 #include <iostream>
 
+#include <libavutil/error.h>
+#include <stdio.h>
+
+void print_ffmpeg_error(int errnum) 
+{
+    char errbuf[128];
+    const char *errbuf_ptr = errbuf;
+    if (av_strerror(errnum, errbuf, sizeof(errbuf)) < 0)
+        errbuf_ptr = strerror(AVUNERROR(errnum));
+    fprintf(stderr, "Error: %s\n", errbuf_ptr);
+}
+
 VideoPlayer::VideoPlayer()
 {
     m_state = VideoPlayer::Stop;
@@ -338,9 +350,12 @@ void VideoPlayer::run()
 
     mCallStartTime = av_gettime();
     mIsOpenStream  = true;
-    if (avformat_open_input(&pFormatCtx, file_path, nullptr, &opts) != 0)
+
+    int ret = avformat_open_input(&pFormatCtx, file_path, nullptr, &opts);
+    if (ret != 0)
     {
-        fprintf(stderr, "can't open the file. \n");
+        fprintf(stderr, "can't open the file. ret=%d \n", ret);
+        print_ffmpeg_error(ret);
         mIsReadError = true;
         doOpenVideoFileFailed();
         goto end;

+ 1 - 7
module/VideoPlayer/src/VideoPlayer/VideoPlayer.h

@@ -24,13 +24,7 @@ extern "C"
     #include <libavfilter/avfilter.h>
     #include <libavfilter/buffersink.h>
     #include <libavfilter/buffersrc.h>
-
-//    #include <SDL.h>
-//    #include <SDL_audio.h>
-//    #include <SDL_types.h>
-//    #include <SDL_name.h>
-//    #include <SDL_main.h>
-//    #include <SDL_config.h>
+    #include <libavcodec/bsf.h>
 }
 
 ///启用滤镜,用于旋转带角度的视频

+ 5 - 5
module/VideoPlayer/src/VideoPlayer/VideoPlayer_VideoThread.cpp

@@ -380,13 +380,13 @@ void VideoPlayer::decodeVideoThread()
 
             VideoEncodedFramePtr videoFrame = std::make_shared<VideoEncodedFrame>();
 
-            if (key_frame && mVideoStream->codec->extradata_size > 0)
+            if (key_frame && mVideoStream->codecpar->extradata_size > 0)
             {
-                int buffer_size = mVideoStream->codec->extradata_size + packet->size;
+                int buffer_size = mVideoStream->codecpar->extradata_size + packet->size;
                 uint8_t *buffer = (uint8_t*)malloc(buffer_size);
-                printf("mVideoStream->codec->extradata_size=%d \n", mVideoStream->codec->extradata_size);
-                memcpy(buffer, mVideoStream->codec->extradata, mVideoStream->codec->extradata_size);
-                memcpy(buffer + mVideoStream->codec->extradata_size, packet->data, packet->size);
+                printf("mVideoStream->codecpar->extradata_size=%d \n", mVideoStream->codecpar->extradata_size);
+                memcpy(buffer, mVideoStream->codecpar->extradata, mVideoStream->codecpar->extradata_size);
+                memcpy(buffer + mVideoStream->codecpar->extradata_size, packet->data, packet->size);
 
                 videoFrame->setNalu(buffer, buffer_size, false, nalu_type, video_clock);
             }