【问题标题】:Convert .264 to .ts using ffmpeg library使用 ffmpeg 库将 .264 转换为 .ts
【发布时间】:2012-07-03 03:32:25
【问题描述】:

我目前正在将 h.264 基本流(带有 postfiix .264 的文件)转换为传输流(带有 postfix .ts 的文件)。我已经使用ffmpeg命令行“ffmpeg -i in.264 -an -vcodec copy -f mpegts out.ts”成功完成了转换。

现在我想使用我自己的 C++ 代码,通过调用 ffmpeg 的库来实现这种转换。我已经下载了预编译的 ffmpeg 库(libavcodec、libavformat 等)。我的输入 h.264 是预先录制的文件,而不是实时流,我的输出 .ts 文件也是如此。所以我的问题是我应该调用库中的哪些函数来实现转换?

【问题讨论】:

    标签: c++ ffmpeg h.264 libav


    【解决方案1】:

    在 Linux 中安装 ffmpeg 后,您将看到一个名为 ffmpeg.c 的示例文件。有许多选项可以在此文件中设置解码参数,例如opt_audio_codec、opt_video_codec、opt_audio_rate、opt_video_rate、opt_default 等。只需在调用“transcode”或“av_encode”函数之前使用适当的函数从命令中设置必要的参数(-i in.264 -an -vcodec copy -f mpegts out.ts)来自 ffmpeg.c 文件的“main”函数。

    【讨论】:

    • 看来我不需要调用库中定义的特定编码/复用函数。我只需要将 avcodec.h 或 avformat.h 中的函数作为接口调用,它们会隐含所有相关函数来实现转换。对吗?
    • @summerlismile 是的,只需调用“transcode”或“av_encode”(在早期版本中)设置适当的参数,如上所述。这并不难。如果你查看 ffmpeg.c 文件,我希望你能更清楚地理解一切。
    【解决方案2】:

    这不像列出库调用那么简单。这是一个旧的tutorial,它将帮助您开始阅读输入文件。还有一个名为decode_encoding.c 的示例,它包含在ffmpeg 源代码中。这些应该可以帮助您入门。

    【讨论】:

    • 感谢您的回答丹。是的,我目前正在阅读 Dranger 的教程,它有点过时了,但仍然很有帮助。顺便说一句,我还看到了一个名为 muxing.c 的示例,它包含在 ffmpeg 源文件中。我认为从 h.264 基本流到传输流的转换比编码/解码更复杂。所以我应该参考 muxing.c 代码。我说的对吗?
    • @summerlismile 我认为您不需要查看 muxing.c 文件。您已经有了命令(-i in.264 -an -vcodec copy -f mpegts out.ts)。只需查看如何使用 opt_audio_codec、opt_video_codec、opt_audio_rate、opt_video_rate、opt_default 等函数将此命令转换为代码,然后在 ffmpeg.c 文件中调用“transcode”或“av_encode”函数。就是这样。
    【解决方案3】:

    您无需在自己的代码中执行此操作。您可以改为以编程方式生成 ffmpeg 进程。在 Windows 上使用 CreateProcess,在 Linux 上使用 spawn

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 2010-12-22
      • 2013-03-24
      • 2023-03-03
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      相关资源
      最近更新 更多