gpt4 book ai didi

c# - 如何使用 C#/.NET 的 FFmpeg 包装器从 .h264 转换为 .ts?

转载 作者:行者123 更新时间:2023-12-04 23:21:47 31 4
gpt4 key购买 nike

语境
我正在使用 FFMpegCore在我的 .NET Core API 项目中收到 .h264文件(以二进制格式发送,接收并转换为 byte array )要转换为 .ts .
我想转换 .h264流入.ts使用 FFmpeg 输出流。
当前方法

(...)

byte[] body;
using ( var ms = new MemoryStream() )
{
await request.Body.CopyToAsync( ms ); // read sent .h264 data
body = ms.ToArray();
}

var outputStream = new MemoryStream();

// FFMpegCore
await FFMpegArguments
.FromPipeInput( new StreamPipeSource( new MemoryStream( body ) ) )
.OutputToPipe( new StreamPipeSink( outputStream ), options => options
.ForceFormat( VideoType.MpegTs ) )
.ProcessAsynchronously();

// view converted ts file
await File.WriteAllBytesAsync( "output.ts", outputStream.ToArray() );

(...)
问题
我没有工作 .ts文件。我做错了什么?你能给我一些提示或帮助我吗?即使您有其他您认为更适合此问题的 FFmpeg 包装器。
笔记:
  • 我没有文件的物理位置,因为这将通过 HTTP 接收文件的内容。因此,我将只有字节数组,这意味着我需要使用输入流转换为另一种格式。
  • 用于测试从 .h264 转换的 FFmpeg 命令至.ts (使用文件):ffmpeg -i file.h264 -an -vcodec copy -f mpegts output.ts
  • 最佳答案

    缺少以下参数:.WithVideoCodec( "h264" )FFMpegArguments .

    (...)

    byte[] body;
    using ( var ms = new MemoryStream() )
    {
    await request.Body.CopyToAsync( ms ); // read sent .h264 data
    body = ms.ToArray();
    }

    var outputStream = new MemoryStream();

    // FFMpegCore
    await FFMpegArguments
    .FromPipeInput( new StreamPipeSource( new MemoryStream( body ) ) )
    .OutputToPipe( new StreamPipeSink( outputStream ), options => options
    .WithVideoCodec( "h264" ) // added this argument
    .ForceFormat( "mpegts" ) ) // or VideoType.MpegTs
    .ProcessAsynchronously();

    // view converted ts file
    await File.WriteAllBytesAsync( "output.ts", outputStream.ToArray() );

    (...)

    关于c# - 如何使用 C#/.NET 的 FFmpeg 包装器从 .h264 转换为 .ts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552977/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com