基于FFmpeg的视频播放器之十四:remuxing

Posted 草上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于FFmpeg的视频播放器之十四:remuxing相关的知识,希望对你有一定的参考价值。

录像实际上就是remuxing的过程,因此本篇是下一篇——基于FFmpeg的视频播放器之十五:录像的理论部分
最权威的参考当然来自FFmpeg的examples:https://ffmpeg.org/doxygen/trunk/examples.htmlremuxing.c
这个例子不做转码,比如改变分辨率、帧率、编码方式等,而且是将整个视频文件从头到尾转存,代码不到200行,学习起来还是比较容易的
个人觉得有两个地方需要注意一下:

一.av_packet_rescale_ts

这个函数用于转封装过程中的时间基(time_base)转换,将AVPacket中各种时间值从一种时间基转换为另一种时间基,比如说mp4转mkv,如果这两种容器的时间基不一样,需要从新计算pts和dts
例子中的函数调用为

av_packet_rescale_ts(pkt, in_stream->time_base, out_stream->time_base);

这个函数和下面的代码段有相同的效果

以上是关于基于FFmpeg的视频播放器之十四:remuxing的主要内容,如果未能解决你的问题,请参考以下文章

基于FFmpeg的视频播放器之十二:seek

基于FFmpeg的视频播放器之十六:完结

基于FFmpeg的视频播放器之十三:抓图

基于FFmpeg的视频播放器之十一:倍速播放

基于libVLC的视频播放器之十四:VLC-Qt全屏与退出全屏

Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码