通过 ssh 将 ffmpeg/avconv 的输出传输到文件

通过 ssh 将 ffmpeg/avconv 的输出传输到文件

我喜欢通过 ssh 将 ffmpeg/avconv 的输出传输到文件。我想做这样的事情。

ssh USER_NAME@SERVER_IP "avconv -i "http://svtplay20k-f.akamaihd.net/i/se/open/20141013/1368164-001A/EPISOD-1368164-001A-c49ff75135a27611_,144,252,360,468,892,1584,2700,.mp4.csmil/index_6_av.m3u8?null=" -acodec copy -vcodec copy -bsf aac_adtstoasc -f mp4 pipe:1" | cat > pipeOutput.mp4

我已经尝试过以上但得到Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

我尝试更改为-f avipipeOutput.avi。但这给了我一个非常大但无法正常工作的文件。

有什么建议我做错了吗?

答案1

要使 ffmpeg 写入 MP4 文件,它需要输出可查找(用于创建所需的 MP4 原子)。但是 MP4 不是可流式传输的容器。这意味着您无法通过 SSH 连接或常规 Unix 管道传输“原始”MP4 数据。

您可以使用 Matroska 作为格式:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -f matroska pipe:1" | cat > out.mkv

或者使用 MPEG-2 传输流,但它们需要将 MP4 比特流过滤为可分组的 H.264 Annex B 字节流:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -bsf:v h264_mp4toannexb -f mpegts pipe:1" | cat > out.ts

注意:我ffmpeg在这里使用是因为我无法测试avconv

相关内容