我在将 ffmpeg 通过管道输出到 ffmpeg 输入时遇到问题。我试过如下
ffmpeg -i "y:\3000012936-TXMHD.mxf" -vcodec copy -acodec copy -f mpegts pipe:1 | ffmpeg -re -i pipe:0 -pix_fmt yuv420p -vsync 1 -map 0:v:0 -map 0:a:0 -c:a aac -c:v libx264 -use_template 1 -use_timeline 1 -init_seg_name "init-stream$RepresentationID$-$Bandwidth$.mp4" -media_seg_name "chunk-stream$RepresentationID$-$Number%05d$.$ext$" -b:v 1500k -b:a 128k -ac 2 -profile:v main -level:v 3.0 -s 1920x1080 -r 25 -vsync passthrough -increment_tc 1 -adaptation_sets "id=0,streams=v id=1,streams=a" -g 100 -keyint_min 100 -seg_duration 5 -frag_duration 5 -dash_segment_type auto -f dash "stream.mpd"
但我收到错误:
转换失败! av_interleaved_write_frame():管道损坏错误 管道的写入预告片:1:管道破损
输入文件是 MXF,输出文件是 MPEG DASH。进行管道传输的原因是因为输入文件是一个不断增长的 mxf 文件。如果我在没有管道的情况下执行此操作,那么 ffmpeg 将在 mxf 文件完全写入之前关闭。
为什么不让 ffmpeg 以与源媒体相同的帧速率读取文件?如果 ffmpeg 的读取速度与写入文件的速度相同,那么它永远不会跟上并关闭输出。
ffmpeg -re -i "y:\3000012936-TXMHD.mxf" . . . . . . . .
在启动 ffmpeg 之前,源上需要有足够的数据。对于网络驱动器,写入数据和数据通过网络可用之间可能存在延迟。
我正在努力读取不断增长的 MXF 文件。 然而,通过实时录制软件在 5 分钟内对视频进行分块是可行的。文件大小也为 750 GB。文件完成后我可以加载它。我需要在增长文件本身上运行一些代码