Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go ffmpeg:读取头管道时出错:0:参数无效_Go_Ffmpeg - Fatal编程技术网

Go ffmpeg:读取头管道时出错:0:参数无效

Go ffmpeg:读取头管道时出错:0:参数无效,go,ffmpeg,Go,Ffmpeg,我需要微服务(使用流转换音频),但ffmpeg有问题 我的测试ffmpeg 包编解码器 进口( “字节” “操作系统” “os/exec” “测试” ) func Test1(t*testing.t){ in,err:=os.Open(“/mp4-mp3/src.m4a”) 如果错误!=零{ t、 致命错误(err.Error()) } out,err:=os.OpenFile(“/mp4-mp3/out.mp3”,os.O|RDWR | os.O|u CREATE,0666) 如果错误!=零{

我需要微服务(使用流转换音频),但ffmpeg有问题

我的测试ffmpeg

包编解码器
进口(
“字节”
“操作系统”
“os/exec”
“测试”
)
func Test1(t*testing.t){
in,err:=os.Open(“/mp4-mp3/src.m4a”)
如果错误!=零{
t、 致命错误(err.Error())
}
out,err:=os.OpenFile(“/mp4-mp3/out.mp3”,os.O|RDWR | os.O|u CREATE,0666)
如果错误!=零{
t、 致命错误(err.Error())
}
cmd:=exec.Command(
“ffmpeg”,
“-f”、“m4a”,
“-i”,“管道:0”,
“-f”,“mp3”,
“管道:1”)
cmd.Stdin=in
cmd.Stdout=out
stderr:=&bytes.Buffer{}
cmd.Stderr=Stderr
如果错误:=cmd.Run();错误!=nil{
t、 Logf(stderr.String())
t、 致命错误(err.Error())
}
}
在出口处,我有一个错误无效参数 我尝试了不同的选择,但问题没有改变

=== RUN   Test1
    codec_test.go:31: ffmpeg version git-2020-08-31-4a11a6f Copyright (c) 2000-2020 the FFmpeg developers
          built with gcc 10.2.1 (GCC) 20200805
          configuration: hide...
          libavutil      56. 58.100 / 56. 58.100
          libavcodec     58.101.101 / 58.101.101
          libavformat    58. 51.101 / 58. 51.101
          libavdevice    58. 11.101 / 58. 11.101
          libavfilter     7. 87.100 /  7. 87.100
          libswscale      5.  8.100 /  5.  8.100
          libswresample   3.  8.100 /  3.  8.100
          libpostproc    55.  8.100 / 55.  8.100
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0000019ccc3acb40] error reading header
        pipe:0: Invalid argument
    codec_test.go:32: exit status 1
--- FAIL: Test1 (0.07s)
FAIL

Process finished with exit code 1
我决定使用cmd,但我有一个新问题 管道:0:处理输入时发现无效数据

cat src.m4a | ffmpeg -f m4a -i pipe:0 out.mp3
ffmpeg version git-2020-08-31-4a11a6f Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.1 (GCC) 20200805
  configuration: hide...
  libavutil      56. 58.100 / 56. 58.100
  libavcodec     58.101.101 / 58.101.101
  libavformat    58. 51.101 / 58. 51.101
  libavdevice    58. 11.101 / 58. 11.101
  libavfilter     7. 87.100 /  7. 87.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000019afa98d800] invalid STSD entries 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000019afa98d800] error reading header
pipe:0: Invalid data found when processing input


如何正确设置ffmpeg参数以从流转换为流?

通常,
mp4
不能通过
pipe
协议加载。无法按顺序读取视频容器。如果
mp4
是,这可以减轻,但这可能会导致一些其他问题。

我认为只有这样才能破坏虚拟文件系统。我不想触碰硬盘(它只使用mp4?或者webm和ogg也不工作?请使用webm works检查!一些mp4文件也可以工作。如果您可以用python打开该文件,它可能也可以从C打开。如果不能,您可以将该文件复制到可打开的位置。