我正在用 android 编写视频播放器。到目前为止,我可以在 av_read_frame 和 avcodec_decode_video2 的帮助下捕获帧,并更新到 SDL2.0。我已经关注了danger tutorial02.c http://dranger.com/ffmpeg/ .
须藤代码是:
while (1)
{
1. Read packet
2. check if video frame; if not Go to Step 3.
2.1 if video frame, then update with SDL_UpdateYUVTexture,
3. Handle SDL Event
4. Clear the Renderer.
5. Present Renderer.
}
我想知道,当我只需要显示视频时,我是否需要处理视频同步、dts/pts 计算?
这种情况在三星上运行良好,但在其他手机上却不行。
你有什么建议?
最佳答案
这取决于。如果您对以下事实感到满意,即您的视频将 a)以设备可以解码的速度播放,并且 b)将在不同的设备上以不同的速度播放,甚至在同一设备上播放,具体取决于其他进程,那么您不会需要同步,并且可以在解码后立即转储帧。
否则,您仍然需要将视频输出同步到 PTS。由于您没有音频,也没有音频时钟,因此您唯一的选择是将视频与系统时钟同步,这样会更简单。
关于android - ffmpeg 在 Android 中仅显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847364/