我正在使用FFMPEG库将H.264和AAC帧复用到MP4文件。我可以使用命令行和C程序来做到这一点。
现在,我没有将多路复用的MP4数据写入文件,而是希望将这些多路复用数据直接写入套接字或管道。命令行选项将不胜感激。我的实际目标是编写一个C程序。
我尝试使用协议tcp和udp,但他们没有使用Mp4格式。他们正在使用matroska格式。
以下工作正在进行中。
ffmpeg -i Cartoon.mjpeg -f matroska -r 25 -vcodec copy tcp://10.99.19.224:8888
以下不是,并给出如下错误。
ffmpeg -i Cartoon.mjpeg -f mp4 -r 25 -vcodec copy tcp://10.99.19.224:8888
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted
任何帮助或建议?提前谢谢。
答案 0 :(得分:7)
只有一种方法可以使用片段直接在套接字上输出多路复用的MP4输出。我知道使用片段有局限性,但这可能很有用。
https://www.ffmpeg.org/ffmpeg-formats.html#Example-1
以下命令行现在正在为我工作。我能够播放从8888端口收到的MP4文件。 ffprobe也确认它真的是一个MP4文件。
ffmpeg -i Stingray.264 -f mp4 -movflags isml+frag_keyframe -vcodec copy tcp://10.99.19.224:8888
现在我必须编写C程序来实现这一目的。
答案 1 :(得分:2)
如果查看所有ffmpeg输出,则有一行:
[mp4 @ 0033d660] muxer不支持非可搜索输出
mp4容器需要返回文件的开头以写入其他信息。网络套接字无法做到的事情。所以这里不可能使用mp4容器。