FFmpeg แปลงภาพเดียวเป็นวิดีโอ Android

ฉันกำลังพยายามแปลงรูปภาพเดียวให้เป็นวิดีโอโดยใช้ FFmpeg ฉันได้ลองติดตามไฟล์แล้ว:

"ffmpeg  -analyzeduration 2147483647 -probesize 2147483647 -i " + packat.get(i).path +"-r 25 -t 1000 -y op.mp4"

"ffmpeg -loop 1 -r 23.976 -i input.jpg -t 00:00:02 -vcodec qtrle -an output.mov"

"ffmpeg -i c:\rawvideo\mask.bmp -loop 1 -r 29.97 -s 720x480
        -aspect 4:3 -t 00:04:05 -vcodec mjpeg -vb 11261600 -an
        c:\rawvideo\fullmask.avi"

แต่พวกเขาทั้งหมดให้ข้อผิดพลาดที่น่ารำคาญแก่ฉัน:

 Can not process SOS before SOF, skipping marker parser used 0 bytes (0 bits) decode frame unused 0 bytes decoding for stream 0 failed 
Could not find codec parameters for stream 0 (Video: mjpeg): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options /storage/sdcard0/cblVE/temp/0.jpg: could not find codec parameters 
exit_program: 1 

กรุณาช่วย. ฉันค้นหาวิธีแก้ปัญหามาหนึ่งสัปดาห์แล้ว แต่ไม่พบอะไรเลย


person berserk    schedule 02.05.2014    source แหล่งที่มา
comment
เพิ่มแฟล็ก (ตัวเลือกวิดีโอและแฟล็กตัวเลือกเสียง) เช่นเปลี่ยนตัวเลือก vcodec mpeg4 และแฟล็กพิเศษต้องใช้ -r ตรวจสอบลิงก์นี้:( trac.ffmpeg.org/wiki/)   -  person dipali    schedule 02.05.2014
comment
ไม่ทำงาน เกิดข้อผิดพลาดเดียวกัน   -  person berserk    schedule 03.05.2014
comment
ฉันจะให้คำตอบหลังจากนั้นเป็นบางครั้ง โอเค...   -  person dipali    schedule 03.05.2014
comment
โอเค ฉันจะรอมัน   -  person berserk    schedule 03.05.2014
comment
ffmpeg -y -i /sdcard/img.png -loop 1 -vcodec libx264 -s 320*480 -b 1024k -t 2 -an /sdcard/test.mp4   -  person dipali    schedule 03.05.2014
comment
@dipali เกิดข้อผิดพลาดเดียวกัน :(   -  person berserk    schedule 03.05.2014
comment
@dipali แต่ทำงานกับภาพบางภาพ   -  person berserk    schedule 03.05.2014


คำตอบ (3)


--แก้ไข--

  1. คุณใช้ "-f mp4" ดังนั้นใน ffmpeg config/buid ของคุณคุณขอสิ่งนั้นหรือเปล่า? ตรวจสอบด้วย "ffmpeg -formats" และตรวจสอบว่างานสร้างของคุณรองรับ mp4 จริง ๆ

  2. ดูบันทึกของคุณและไปที่ ซอร์สโค้ด สำหรับ "libavcodec/mux.c "

    ค้นหาบรรทัด # 124 ในแหล่งที่มา func=avformat_alloc_output_context2

    นี่คือที่มาของข้อผิดพลาดบันทึกของคุณตาม pastebin #210 ของคุณ

    ตามบรรทัดของวิธีการ 146 และ pastebin ของคุณ - คุณไม่มีค่าสำหรับ 'ชื่อไฟล์' ....

    ใน pastebin ของคุณ #209- 210 นั่นเป็นชื่อไฟล์ที่แปลกมากสำหรับเอาต์พุตของคุณใช่ไหม

    โดยเฉพาะอย่างยิ่งเมื่อรูทีน CLI args ของคุณแสดงว่าชื่อไฟล์เอาต์พุตได้รับการยอมรับโดย ffmpeg.c

ด้านล่างทำงานบน linux แต่จะทำงานบน Android ขึ้นอยู่กับบิลด์ Android ของ ffmpeg...

ffmpeg -y -loop 1 -t 3.03 -i ~/Pictures/yaya_speech_choose2.png   -r 1  -vcodec libx264 -b:v 200k -bt 350k   -f mp4 ~/Videos/dummy.mp4


ffmpeg version N-35901-g27a3415 Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct  7 2012 12:06:43 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab --enable-libx264 --enable-nonfree --enable-version3
  libavutil      51. 73.102 / 51. 73.102
  libavcodec     54. 64.100 / 54. 64.100
  libavformat    54. 29.105 / 54. 29.105
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 19.102 /  3. 19.102
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Input #0, image2, from '/home/rob/Pictures/yaya_speech_choose2.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 1080x1920, 25 fps, 25 tbr, 25 tbn, 25 tbc
-t is not an input option, keeping it for the next output; consider fixing your command line.
[libx264 @ 0x1e32500] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x1e32500] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x1e32500] 264 - core 128 r10 198a7ea - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=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=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/home/rob/Videos/dummy.mp4':
  Metadata:
    encoder         : Lavf54.29.105
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 1080x1920, q=-1--1, 200 kb/s, 16384 tbn, 1 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame=    4 fps=1.8 q=32766.0 Lsize=     236kB time=00:00:02.00 bitrate= 968.3kbits/s dup=0 drop=59    
video:236kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.350287%
[libx264 @ 0x1e32500] frame I:1     Avg QP: 9.29  size:239979
[libx264 @ 0x1e32500] frame P:1     Avg QP: 9.85  size:   128
[libx264 @ 0x1e32500] frame B:2     Avg QP: 9.92  size:   192
[libx264 @ 0x1e32500] consecutive B-frames: 25.0%  0.0% 75.0%  0.0%
[libx264 @ 0x1e32500] mb I  I16..4: 36.2% 49.0% 14.7%
[libx264 @ 0x1e32500] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.1%  0.0%  0.0%  0.0%  0.0%    skip:99.8%
[libx264 @ 0x1e32500] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.3%  0.1%  0.1%  direct: 0.3%  skip:99.2%  L0:68.9% L1:31.1% BI: 0.0%
[libx264 @ 0x1e32500] final ratefactor: 24.49
[libx264 @ 0x1e32500] 8x8 transform intra:49.0% inter:92.3%
[libx264 @ 0x1e32500] coded y,u,v intra: 37.6% 27.9% 30.0% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x1e32500] i16 v,h,dc,p: 84% 10%  3%  3%
[libx264 @ 0x1e32500] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9% 67%  5%  2%  3%  2%  4%  4%  3%
[libx264 @ 0x1e32500] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 44% 10%  4%  6%  3%  8%  3%  6%
[libx264 @ 0x1e32500] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x1e32500] kb/s:480.98
person Robert Rowntree    schedule 07.05.2014
comment
ดูบันทึก แอพของคุณมีสิทธิ์เขียนที่เส้นทางนั้นหรือไม่? '/storage/sdcard0/cblVE/temp/a0.mp4' . - person Robert Rowntree; 08.05.2014
comment
ดู --EDIT ในคำตอบของฉัน - person Robert Rowntree; 09.05.2014
comment
BTW... ฉันคงจะสงสัยมากเกี่ยวกับ ffmpeg build สำหรับ Android ของคุณตามข้อผิดพลาดนั้น pastebin ของคุณแสดงว่ายอมรับ CLI args สำหรับไฟล์เอาต์พุต... แต่ในคลาส mux.c ชื่อไฟล์นั้นมีค่า null สำหรับไฟล์เอาต์พุตของคุณ ราวกับว่า CLI args ของคุณหายไปที่ไหนสักแห่งระหว่าง ffmpeg.c และ mux.c หากเป็นเช่นนั้น แสดงว่าคุณกำลังทำงานกับลิงก์เสียหรือบิลด์ไม่ดี - person Robert Rowntree; 09.05.2014
comment
รองรับ mp4 เนื่องจากฉันสามารถตัดวิดีโอ mp4 โดยใช้โครงสร้างนี้ได้ และเกี่ยวกับชื่อเอาต์พุตที่ไม่ถูกต้อง a0.mp4 เป็นชื่อที่ไม่ถูกต้องสำหรับ mp4 หรือไม่ ดูฉันโพสต์ 3 คำสั่งด้านบนในคำถาม ฉันสามารถสร้างวิดีโอจากภาพบางภาพได้ แต่ภาพบางภาพขัดข้อง ดังนั้นฉันคิดว่าชื่อไม่ใช่ประเด็น พูดว่าอะไรนะ? - person berserk; 09.05.2014
comment
ใช้ -y ดูว่าปัญหาเกี่ยวกับไฟล์ out ได้รับผลกระทบหรือไม่ - person Robert Rowntree; 09.05.2014
comment
มีวิธีแก้ไขปัญหาอื่น ๆ อีกไหม? - person berserk; 12.05.2014
comment
ลองดูที่ GitHub 'Guardianproject' และ 'halfninja' เป็น 2 วิธีที่เชื่อถือได้ในการรับไบนารี armv7a ที่ใช้งานได้สำหรับ ffmpeg ที่สร้างขึ้น - person Robert Rowntree; 12.05.2014

บางทีคุณอาจต้องคอมไพล์บิลด์ ffmpeg ใหม่แล้วใช้งาน คุณช่วยบอกฉันได้ไหมว่าคุณใช้ videokit ใด?

person Mukesh Rana    schedule 12.05.2014
comment
androidwarzone.blogspot.in/2011/12/ffmpeg4android.html ฉันใช้อยู่ ห้องสมุดนี้ - person berserk; 12.05.2014
comment
ห้องสมุดอาจพัง ลองใช้ halfninja หรือสร้างห้องสมุดของคุณเอง - person Mukesh Rana; 12.05.2014
comment
ห้องสมุดอาจจะเสียหาย ลองใช้ HalfNinja(github.com/halfninja/android-ffmpeg-x264) หรือสร้าง ชุดของคุณเองจาก ffmpeg - person Mukesh Rana; 12.05.2014

คงมีปัญหากับ ffmpeg build ของคุณ กรุณาสร้างอันใหม่

person Bhandari Deepak    schedule 15.05.2014