ปัญหาเอาต์พุต FFMpeg FTP ไม่สามารถส่งออกเป็นรูปแบบ MP4


0

ฉันมีปัญหากับ FFMpeg เมื่อฉันต้องการแปลงวิดีโอเป็น MP4 และส่งออกเป็น FTP
ลองทำสิ่งนี้ (และมันจะไม่ทำงาน):

ffmpeg.exe -i test.avi ftp://127.0.0.1/dumped.mp4 

แต่มันทำงานได้เมื่อฉันแปลงเป็น FLV โดยใช้สิ่งนี้:

ffmpeg.exe -i test.avi ftp://127.0.0.1/dumped.flv

ใครช่วยอธิบายได้ว่าทำไมมันไม่ทำงาน / วิธีทำ

หมายเหตุ:ฉันได้ลองใช้กับซอฟต์แวร์ FTP Server อื่น ( FileZilla Server , Quick'n'Easy FTP , BabyWeb FTP ) ดังนั้นอาจไม่ใช่ปัญหาเซิร์ฟเวอร์ ฉันสร้างผู้ใช้ที่มีสิทธิ์การเข้าถึงแบบอ่าน / เขียนเต็มรูปแบบ แต่ไม่ประสบความสำเร็จ

UPDATE:นี่คือบันทึกของคอนโซล FFMpeg:

D:\Projects\FFMpeg FTP>ffmpeg -i test.avi ftp://anonymous:anonymous@127.0.0.1/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:anonymous@127.0.0.1/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

บรรทัดเหล่านี้ถูกทำเครื่องหมายด้วยสีแดงในคอนโซล (ฉันคิดว่าสิ่งเหล่านี้สำคัญที่สุด):
[mp4 @ 036d8820] muxer does not support non seekable output
และ
Could not write header for output file #0 (incorrect codec parameters ?): Error number -1 occurred

อัพเดท 2: นี่คือบันทึกเซิร์ฟเวอร์ FTP

1) การแปลงเป็น MP4 (ล้มเหลว)

...
REST 0
350 Rest supported. Restarting at 0
SIZE /dumped.mp4
213 566120
disconnected.

2) แปลงเป็น FLV (ใช้งาน)

...
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

UPDATE 3:หลังจากสังเกตเห็นนี้ในบันทึกของคอนโซล ffmpeg:
[mp4 @ 036d8820] muxer does not support non seekable output, ฉันเพิ่มพารามิเตอร์นี้
ตอนนี้ฉันเห็นว่ามันแปลงไฟล์เป็น MP4 โดยไม่มีข้อผิดพลาดในบันทึก ffmpeg และฉันเห็นไฟล์นั้นบนเซิร์ฟเวอร์ FTP ของฉัน! แต่ฉันเล่นไม่ได้ (เพราะมันเสียหาย) ฉันลองเล่นมีเดียทั้งหมดของฉัน (ไม่มีโชค) นี่คือบันทึก FFPlay (ไม่ใช่ FFMpeg): -ftp-write-seekable 1


...
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

โปรดรวมเอาท์พุทคอนโซลที่สมบูรณ์และไม่เพียงส่วน
llogan

@ LordNeckbeard แต่ฉันคิดว่าส่วนบนของบันทึก ffmpeg ไม่มีประโยชน์ ให้ฉันลบมัน
เจ็

คุณอาจต้องเข้ารหัสไฟล์ในเครื่องแล้วอัปโหลดไฟล์ผ่าน FTP ในขั้นตอนแยกต่างหาก เอกสารสถานะโปรโตคอล FFmpeg FTP : "โปรโตคอลสามารถใช้เป็นเอาต์พุตได้ แต่ขอแนะนำให้อย่าทำเว้นแต่จะได้รับการดูแลเป็นพิเศษ (การทดสอบการกำหนดค่าเซิร์ฟเวอร์ที่กำหนดเอง ฯลฯ ) เซิร์ฟเวอร์ FTP ที่แตกต่างกันจะทำงานในลักษณะที่แตกต่างกันระหว่างการค้นหา เครื่องมืออาจสร้างเนื้อหาที่ไม่สมบูรณ์เนื่องจากข้อ จำกัด ของเซิร์ฟเวอร์ "
llogan

อาจเป็นข้อบกพร่องใน FFMpeg? ฉันเห็นว่ามันส่งคำสั่ง FTP "PASV" และเข้าสู่โหมดพาสซีฟเมื่อมันแปลงเป็น FLV (ดูในบันทึกของฉัน) แต่จะไม่ส่ง PASV สำหรับ MP4
เจ็

คำตอบ:


2

เซิร์ฟเวอร์ FTP บางตัวตัดทอนไฟล์ที่ตำแหน่งที่คุณเขียนลงไป ดังนั้นหาก muxer ค้นหาย้อนหลังแล้วเขียนไฟล์ของคุณจะถูกตัดทอนที่ตำแหน่งนี้ หากคุณต้องการใช้ทรัพยากร FTP เป็นผลลัพธ์คุณอาจต้องเปลี่ยนเซิร์ฟเวอร์ FTP ของคุณ


1

ffmpeg ไม่สามารถใส่ไฟล์ mp4 โดยตรงในเซิร์ฟเวอร์ ftp เพราะ ffmpeg จำเป็นต้องเขียนส่วนหัว mp4 ใหม่ (moov) ทุกครั้งด้วยตัวเลือก mp4 เริ่มต้น

อย่างไรก็ตามคุณสามารถแยกไฟล์ mp4 ของคุณด้วย "-movflags frag_keyframe" ด้วยตัวเลือกนี้ moov จะไม่ถูกเขียนใหม่

คุณลองคำสั่งนี้ได้ไหม

ffmpeg.exe -i test.avi -movflags frag_keyframe -f mp4 ftp://127.0.0.1/dumped.mp4 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.