Mam problem z FFMpeg, gdy chcę przekonwertować wideo na MP4 i wyprowadzić na FTP.
Po prostu spróbuj to zrobić (i nie zadziała):
ffmpeg.exe -i test.avi ftp://127.0.0.1/dumped.mp4
Ale działa, gdy konwertuję na FLV używając tego:
ffmpeg.exe -i test.avi ftp://127.0.0.1/dumped.flv
Czy ktoś może wyjaśnić, dlaczego nie działa / jak to zrobić?
UWAGA: Próbowałem tego na innym oprogramowaniu serwera FTP ( Serwer FileZilla , Quick'n'Easy FTP , BabyWeb FTP ), więc prawdopodobnie nie jest to problem z serwerem. Stworzyłem użytkownika z pełnymi uprawnieniami dostępu do odczytu / zapisu, ale bez powodzenia.
AKTUALIZACJA : Oto dziennik konsoli FFMpeg:
D:\Projects\FFMpeg FTP>ffmpeg -i test.avi ftp://anonymous:[email protected]/dumped.mp4
ffmpeg version N-54362-ge0be3cb Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 2 2013 22:15:59 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzli
b --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --ena
ble-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo
ra --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-lib
vpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.100 / 55. 18.100
libavformat 55. 11.100 / 55. 11.100
libavdevice 55. 2.100 / 55. 2.100
libavfilter 3. 77.101 / 3. 77.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Input #0, avi, from 'hand.avi':
Metadata:
encoder : Lavf55.11.100
Duration: 00:01:00.87, start: 0.000000, bitrate: 466 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 640x480 [SAR 1:1 DAR 4:
3], 30 tbr, 30 tbn, 30 tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p, 128 kb/s
[libx264 @ 0246db20] using SAR=1/1
[libx264 @ 0246db20] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 SlowShuffle
[libx264 @ 0246db20] profile High, level 3.0
[libx264 @ 0246db20] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - ht
tp://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subm
e=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,
11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 we
ightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc
=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[mp4 @ 036d8820] muxer does not support non seekable output
Output #0, mp4, to 'ftp://anonymous:[email protected]/dumped.mp4':
Metadata:
encoder : Lavf55.11.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x480 [SAR 1:1 DAR 4:3],
q=-1--1, 90k tbn, 30 tbc
Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 -> libx264)
Stream #0:1 -> #0:1 (mp3 -> libvo_aacenc)
Could not write header for output file #0 (incorrect codec parameters ?): Error number -1 occurred
Linie te zostały oznaczone czerwonym kolorem w konsoli (myślę, że są to najważniejsze):
[mp4 @ 036d8820] muxer does not support non seekable output
i
Could not write header for output file #0 (incorrect codec parameters ?): Error number -1 occurred
AKTUALIZACJA 2: Oto dzienniki serwera FTP.
1) konwersja do MP4 (niepowodzenie)
...
REST 0
350 Rest supported. Restarting at 0
SIZE /dumped.mp4
213 566120
disconnected.
2) konwersja do FLV (działa)
...
REST 0
350 Rest supported. Restarting at 0
SIZE /dumped.flv
213 566120
PASV
227 Entering Passive Mode (46,241,209,90,204,57)
STOR /dumped.flv
150 Connection accepted
AKTUALIZACJA 3: Po zauważeniu tego w dzienniku konsoli ffmpeg:
[mp4 @ 036d8820] muxer does not support non seekable output
,
Dodałem ten parametr -ftp-write-seekable 1
.
Teraz widzę, że konwertuje plik na MP4 bez błędy w dzienniku ffmpeg i widzę ten plik na moim serwerze FTP!
Ale ja nie mogę grać to (ponieważ jest uszkodzone?). Próbowałem wszystkich moich odtwarzaczy multimedialnych (bez powodzenia).
Oto dziennik FFPlay (nie FFMpeg):
...
libpostproc 52. 3.100 / 52. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 033302e0] moov atom not found
dumped.mp4: Invalid data found when processing input= 0B f=0/0
Odpowiedzi:
Niektóre serwery FTP obcinają pliki w miejscu, w którym do nich piszesz. Więc jeśli muxer szuka wstecz, a następnie pisze, twój plik zostanie obcięty w tej pozycji. Jeśli naprawdę chcesz użyć zasobu FTP jako wyjścia, prawdopodobnie musisz zmienić serwer FTP.
źródło
ffmpeg nie może umieścić pliku mp4 bezpośrednio na serwerze ftp, ponieważ ffmpeg musi przepisać nagłówek mp4 (moov) za każdym razem z domyślnymi opcjami mp4.
Możesz jednak podzielić fragment pliku mp4 na „-movflags frag_keyframe”. Dzięki tej opcji moov nie jest przepisywany.
Czy możesz spróbować za pomocą tego polecenia?
źródło