我的计算机上有一个名为 video_2.m4v 的文件,另一个程序正在使用该文件在其中写入数据(视频),因此文件大小每秒都在增加。我想做的是制作类似流式上传的东西:在写入文件时,它会将其上传到服务器。我在 Windows 7 下使用这个 bash 脚本:
@echo off
echo user USER_NAME> ftpcmd.dat
echo PASSWORD>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo cd ROOT_PATH>> ftpcmd.dat
echo put %1>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.example.com
del ftpcmd.dat
这工作正常,但它捕获当前文件状态(大小)并上传它。请不要告诉我我需要使用 RTMP 服务器 :)。
VLC 实际上做了我想要的,但我不能切换到二进制模式。我正在使用以下代码:
set VLC_EXE=C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
set SOUT_FTP_DOMAIN=ftp.example.com
set SOUT_FTP_PORT=21
set SOUT_FTP_USERNAME=user
set SOUT_FTP_PASSWORD=password
set SOUT_FTP_PATH=www/example.com
set SOUT_FILENAME=test
"%VLC_EXE%" D:\video_1.m4v :sout=#std{access=ftp,mux=mp4,dst=ftp://%SOUT_FTP_USERNAME%:%SOUT_FTP_PASSWORD%@%SOUT_FTP_DOMAIN%:%SOUT_FTP_PORT%/%SOUT_FTP_PATH%/%SOUT_FILENAME%.mp4} :sout-keep vlc://quit