मैं YouTube से प्राप्त FLV फ़ाइल में एक ओवरले जोड़ने का प्रयास कर रहा हूं। इनपुट फ़ाइल 4.4MB और खेलने योग्य है, इसलिए यह किसी भी मुद्दे के लिए प्रकट नहीं होता है।
ffmpeg -i input.flv -vf drawtext="fontfile='arial.ttf':text='hello':fontsize=9" output.flv
मैं आश्चर्यजनक रूप से कुछ सेकंड के बाद निम्न आउटपुट प्राप्त करता हूं:
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on May 15 2013 13:13:12 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.flv':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2010-01-31 13:44:29
Duration: 00:02:20.85, start: 0.000000, bitrate: 249 kb/s
Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 56 kb/s
Metadata:
creation_time : 2010-01-31 13:44:29
handler_name : (C) 2007 Google Inc. v08.13.2007.
Stream #0:1(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 191 kb/s, 29.84 fps, 29.97 tbr, 30k tbn, 29.97 tbc
Metadata:
creation_time : 2010-01-31 13:44:29
handler_name : (C) 2007 Google Inc. v08.13.2007.
File 'output.flv' already exists. Overwrite ? [y/N] y
Output #0, flv, to 'output.flv':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf54.63.104
Stream #0:0(und): Video: flv1 ([2][0][0][0] / 0x0002), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1k tbn, 29.97 tbc
Metadata:
creation_time : 2010-01-31 13:44:29
handler_name : (C) 2007 Google Inc. v08.13.2007.
Stream #0:1(und): Audio: mp3 ([2][0][0][0] / 0x0002), 22050 Hz, mono, fltp
Metadata:
creation_time : 2010-01-31 13:44:29
handler_name : (C) 2007 Google Inc. v08.13.2007.
Stream mapping:
Stream #0:1 -> #0:0 (mpeg4 -> flv)
Stream #0:0 -> #0:1 (aac -> libmp3lame)
Press [q] to stop, [?] for help
frame= 4201 fps=1386 q=10.0 Lsize= 4304kB time=00:02:20.85 bitrate= 250.3kbits/s
video:3603kB audio:550kB subtitle:0 global headers:0kB muxing overhead 3.618454%
अब output.flv को क्विकटाइम द्वारा अनएप्लेबल छोड़ दिया जाता है, और फ्लैश शिकायत करता है कि ऑडियो कोडेक समर्थित नहीं है। इसे सफलतापूर्वक खेलने में सक्षम एकमात्र कार्यक्रम VLC है। इसका filesize input.flv जैसा ही है। इसका कारण क्या हो सकता है, और कौन से विकल्प एक खेलने योग्य प्रति उत्पन्न कर सकते हैं?
अपडेट करें
विभिन्न एनकोडर का उपयोग करने से प्राप्त आउटपुट छोटा:
ffmpeg -i input.flv -c:v libxvid -c:a copy -q:v 5 output2.flv
...
Stream mapping:
Stream #0:1 -> #0:0 (mpeg4 -> libxvid)
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 4201 fps=303 q=5.0 Lsize= 6597kB time=00:02:20.85 bitrate= 383.7kbits/s
video:5491kB audio:968kB subtitle:0 global headers:0kB muxing overhead 2.120003%
ffmpeg -i input.flv -c:v mpeg4 -c:a copy -q:v 5 output3.flv
...
Stream mapping:
Stream #0:1 -> #0:0 (mpeg4 -> mpeg4)
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 4201 fps=2523 q=5.0 Lsize= 6852kB time=00:02:20.85 bitrate= 398.5kbits/s
video:5746kB audio:968kB subtitle:0 global headers:0kB muxing overhead 2.044082%
ffmpeg -i input.flv -c copy outputcopy.flv
...
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 4201 fps=0.0 q=-1.0 Lsize= 4394kB time=00:02:20.85 bitrate= 255.6kbits/s
video:3289kB audio:968kB subtitle:0 global headers:0kB muxing overhead 3.216934%
इन फ़ाइलों में से किसी पर जानकारी प्राप्त करने से मुझे निम्न प्रकार की बहुत सी त्रुटियाँ मिलती हैं (जहाँ n एक बढ़ता हुआ पूर्णांक है):
- Stream discovered after head already parsed
- header damaged
- max_analyze_duration 5000000 reached at 5014000 microseconds
- Could not find codec parameters for stream n (Video: mpeg4, yuv420p): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
- decoding for stream n failed
इसके बाद टाइप के संदेश आते हैं:
Stream #0:n: Video: mpeg4, yuv420p, 1k tbr, 1k tbn
मैंने मैकफ़ॉर्ट्स के माध्यम से सिर्फ ffmpeg और उसकी निर्भरता को अपग्रेड किया है और अभी भी भाग्य से बाहर हूं। यह हर FLV फ़ाइल के लिए हो रहा है जिसे मैंने YouTube और अन्य जगहों से आज़माया है।
-c:v mpeg4
मुझे इसी तरह के परिणाम देता है।-c:v libxvid
प्रक्रिया के लिए अधिक यथार्थवादी मात्रा में समय लगता है, लेकिन फिर भी एक खेलने योग्य उत्पादन नहीं करता है। यहां तक किffmpeg -i input.flv -c:v copy -c:a copy output.flv
फिल्टर के बिना एक सीधी कॉपी कमांड दुर्भाग्य से काम नहीं करती है।