请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

重新编码之后怎么进行音视频同步

老师,对一个avi(wmv2+mp3)视频先解码然后在编码成一个MP4(h264+aac)的视频,怎么做视音频同步,我转出来的音频比视频快一些,不知道怎么把它们同步保存到文件中。课程里面的同步我看了,是播放器的,那么,我保存成文件应该在什么地方比较他们的时间戳呢,解码之前?解码之后重新编码之前?编码之后?

正在回答 回答被采纳积分+3

1回答

李超 2019-04-17 16:35:10

播放器的同步与写成文件是类似的,在编码之后把pts 和dts 设置进去就好了

0 回复 有任何疑惑可以回复我~
  • 提问者 慕后端0424746 #1
    老师能不能写个简单的demo,我现在是根据av_frame_read得到包,然后判断是音频还是视频,然后对其解码,解码完之后编码然后写入文件,
     if (AVMEDIA_TYPE_VIDEO == type) {
                 //先对其进行解码,然后在编码,在编码之前先进行pts的转换
                ret = avcodec_decode_video2(stream_ctx[stream_index].dec_ctx, frame,
                        &got_frame, &packet);
                 if (ret < 0) {
                    //说明解码失败,可以丢弃某些帧
                    av_frame_free(&frame);
                    av_log(NULL, AV_LOG_ERROR, "Decoding failed\n");
                    break;
                 }
                 if (got_frame) {
                  //在这个函数进行编码和解码
                    ret = encode_video(frame, stream_index);
                    if (ret < 0){
                        break;
                    } else if (ret == 1){
                        goto end;
                    }
                 } else {
                    av_frame_free(&frame);
                    av_log(NULL, AV_LOG_ERROR, "got_frame video  is null\n");
                 }
    
           } else if (AVMEDIA_TYPE_AUDIO == type) {
    //同样步骤处理音频
    }
    如果我在编码后比较两者的pts值,应该怎么操作?
    回复 有任何疑惑可以回复我~ 2019-04-18 10:17:01
  • 李超 #2
    在咱们群里的共享空间里有一个demo,你可以找找, 好像是以trans 开头的
    回复 有任何疑惑可以回复我~ 2019-04-21 08:48:07
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信