Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
How to dynamically overlay images with ffmpeg
23 mai, par RorschyAs a part of a bigger project, I'm trying to stream a live feed using ffmpeg through RTSP while also dynamically changing subtitles depending on the situation.
As of now, I'm able to live stream with no issue. I also came across a solution for the subtitles by using a text file.
However, I'd like to avoid having this text file in my project. I thought about creating a picture with the subtitles and overlaying it with the screen stream. However, with my current solution, the data is streamed only when I kill the running code (data streamed for a few seconds).
Here is the current code for this problem :
import subprocess import threading import string import random import time import io from PIL import Image, ImageDraw, ImageFont RTSP_URL = "..." ffmpeg = None def generate_subtitle(): width = 640 height = 100 font_size = 32 while True: if ffmpeg: try: text = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)) image = Image.new("RGBA", (width, height), (0, 0, 0, 128)) draw = ImageDraw.Draw(image) try: font = ImageFont.truetype("arial.ttf", font_size) except IOError: font = ImageFont.load_default() bbox = draw.textbbox((0, 0), text, font=font) text_width = bbox[2] - bbox[0] text_height = bbox[3] - bbox[1] x = (width - text_width) // 2 y = (height - text_height) // 2 draw.text((x, y), text, font=font, fill=(255, 255, 255, 255)) buffer = io.BytesIO() image.save(buffer, format="PNG") ffmpeg.stdin.write(buffer.getvalue()) ffmpeg.stdin.flush() time.sleep(5) except Exception as e: print("Erreur d'envoi d'image :", e) break else: time.sleep(1) def run_ffmpeg(): global ffmpeg ffmpeg = subprocess.Popen([ 'ffmpeg', # Input 0: capture desktop "-f", "gdigrab", "-offset_x", "0", "-offset_y", "0", "-video_size", "1920x1080", "-i", "desktop", # Input 1: PNG overlay from stdin "-f", "image2pipe", "-vcodec", "png", "-i", "-", # Filter to overlay Input 1 on Input 0 "-filter_complex", "[0:v][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)-10", # Output settings "-vcodec", "libx264", "-preset", "ultrafast", "-tune", "zerolatency", "-g", "30", "-sc_threshold", "0", "-f", "rtsp", RTSP_URL ], stdin=subprocess.PIPE) threading.Thread(target=run_ffmpeg, daemon=True).start() threading.Thread(target=generate_subtitle, daemon=True).start() while True: time.sleep(1)
My question is how can I stream the data correctly ? If there is another solution to change dynamically the subtitles without using a text file or a temporary file I'd be glad to hear it.
-
FFmpeg HLS input stream shows "Packet corrupt" and "timestamp discontinuity" errors when pushing to RTMP server [closed]
22 mai, par Amul BhatiaI'm trying to restream an HLS URL (https://cache.fastcdn.com.my/edge/53-1.stream/index_0.m3u8?misc=87uq4HjbDEDE3TzIY95ja1ZMxA-Cm1PbOXAk16riVlU&uid=139322&ts=1747931206&e=43200&lat=1747931206&sil=5&sk=no&uip=MTEwLjIyNC4yNDIuOTg&head=aHR0cF94X2ZvcndhcmRlZF9mb3I&chid=53-1') into my RTMP server with FFmpeg. The command I use is:
ffmpeg -i "https://cache.fastcdn.com.my/edge/53-1.stream/index_0.m3u8?misc=87uq4HjbDEDE3TzIY95ja1ZMxA-Cm1PbOXAk16riVlU&uid=139322&ts=1747931206&e=43200&lat=1747931206&sil=5&sk=no&uip=MTEwLjIyNC4yNDIuOTg&head=aHR0cF94X2ZvcndhcmRlZF9mb3I&chid=53-1" -c:v libx264 -preset veryfast -b:v 1000k -c:a aac -b:a 128k -f flv rtmp://69.62.85.241/live/streamkey
getting error
ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 13 (Ubuntu 13.2.0-23ubuntu3) configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared libavutil 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavdevice 60. 3.100 / 60. 3.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 4. 12.100 / 4. 12.100 libpostproc 57. 3.100 / 57. 3.100 [hls @ 0x60992c0c8880] Skip ('#EXT-X-VERSION:3') [hls @ 0x60992c0c8880] Skip ('#EXT-X-DISCONTINUITY') Last message repeated 9 times [hls @ 0x60992c0c8880] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading Last message repeated 1 times Input #0, hls, from 'https://cache.fastcdn.com.my/edge/53-1.stream/index_0.m3u8?misc=87uq4HjbDEDE3TzIY95ja1ZMxA-Cm1PbOXAk16riVlU&uid=139322&ts=1747931206&e=43200&lat=1747931206&sil=5&sk=no&uip=MTEwLjIyNC4yNDIuOTg&head=aHR0cF94X2ZvcndhcmRlZF9mb3I&chid=53-1': Duration: 00:01:00.00, start: 1.466667, bitrate: 0 kb/s Program 0 Metadata: variant_bitrate : 0 Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, unknown/bt709/iec61966-2-1), 854x480 [SAR 1:1 DAR 427:240], 30 fps, 30 tbr, 90k tbn Metadata: variant_bitrate : 0 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 0x60992cd68b00] using SAR=1/1 [libx264 @ 0x60992cd68b00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512 [libx264 @ 0x60992cd68b00] profile High, level 3.1, 4:2:0, 8-bit [libx264 @ 0x60992cd68b00] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 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=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=abr mbtree=1 bitrate=1000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, flv, to 'rtmp://69.62.85.241/live/streamkey': Metadata: encoder : Lavf60.16.100 Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p(tv, unknown/bt709/iec61966-2-1, progressive), 854x480 [SAR 1:1 DAR 427:240], q=2-31, 1000 kb/s, 30 fps, 1k tbn Metadata: variant_bitrate : 0 encoder : Lavc60.31.102 libx264 Side data: cpb: bitrate max/min/avg: 0/0/1000000 buffer size: 0 vbv_delay: N/A [https @ 0x60992c48fc40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 6000000 [https @ 0x60992c4a9d40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 12000000 [https @ 0x60992c48fc40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 18000000 [https @ 0x60992c4a9d40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 24000000 [https @ 0x60992c48fc40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 30000000 [https @ 0x60992c4a9d40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 36000000 [https @ 0x60992c48fc40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 42000000 [https @ 0x60992c4a9d40] Opening 'https://cache.fastcdn.com.my/error/chunks/407.ts' for reading [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 48000000 [mpegts @ 0x60992c161940] Packet corrupt (stream = 0, dts = 663000). [hls @ 0x60992c0c8880] Packet corrupt (stream = 0, dts = 660000). [in#0/hls @ 0x60992c0c8780] corrupt input packet in stream 0 [vist#0:0/h264 @ 0x60992c47ae80] timestamp discontinuity (stream id=0): -6000000, new offset= 54000000 [flv @ 0x60992c88a340] Failed to update header with correct duration.44.8kbits/s speed=22.6x [flv @ 0x60992c88a340] Failed to update header with correct filesize. [out#0/flv @ 0x60992cc36180] video:304kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 11.671993% frame= 1800 fps=685 q=-1.0 Lsize= 339kB time=00:00:59.90 bitrate= 46.4kbits/s speed=22.8x [libx264 @ 0x60992cd68b00] frame I:8 Avg QP: 2.07 size: 20330 [libx264 @ 0x60992cd68b00] frame P:454 Avg QP: 0.23 size: 218 [libx264 @ 0x60992cd68b00] frame B:1338 Avg QP: 0.21 size: 37 [libx264 @ 0x60992cd68b00] consecutive B-frames: 0.9% 0.0% 0.0% 99.1% [libx264 @ 0x60992cd68b00] mb I I16..4: 86.7% 0.3% 13.0% [libx264 @ 0x60992cd68b00] mb P I16..4: 0.1% 0.0% 0.0% P16..4: 1.4% 0.0% 0.0% 0.0% 0.0% skip:98.6% [libx264 @ 0x60992cd68b00] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.1% 0.0% 0.0% direct: 0.1% skip:99.8% L0:59.9% L1:40.1% BI: 0.0% [libx264 @ 0x60992cd68b00] final ratefactor: -25.04 [libx264 @ 0x60992cd68b00] 8x8 transform intra:0.3% inter:1.8% [libx264 @ 0x60992cd68b00] coded y,uvDC,uvAC intra: 13.5% 0.0% 0.0% inter: 0.2% 0.0% 0.0% [libx264 @ 0x60992cd68b00] i16 v,h,dc,p: 90% 6% 4% 0% [libx264 @ 0x60992cd68b00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 59% 12% 28% 0% 1% 1% 0% 0% 0% [libx264 @ 0x60992cd68b00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 18% 19% 4% 4% 4% 3% 4% 3% [libx264 @ 0x60992cd68b00] i8c dc,h,v,p: 100% 0% 0% 0% [libx264 @ 0x60992cd68b00] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x60992cd68b00] kb/s:41.38
However, I get repeated errors like:
Packet corrupt (stream = 0, dts = xxxx)
timestamp discontinuity (stream id=0)
corrupt input packet in stream 0
The stream partially works but seems unstable. How can I fix this error?
my nginx.conf
rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; hls on; hls_path /var/www/hls; hls_fragment 5; # each TS segment = 5s hls_playlist_length 120; # keep last 2 minutes of stream hls_cleanup off; # do not delete old segments } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 81; location /hls { root /var/www; types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'Range'; add_header Access-Control-Expose-Headers 'Content-Length, Content-Range'; } } }
The same url is working fine when used in browser, but extracting the stream and putting it in RTMP server and accessing my RTMP server at rtmp://69.62.85.241/live/streamkey not working
-
How to implement in-browser video editing features in a React app ? [closed]
21 mai, par Neeru SinghI'm building a React app that uses AI to generate short videos (reels, explainers, etc.). The generation works well, but I want users to edit the output directly in the browser.
Key features I need in the frontend:
Add/style captions
Trim, split, and reorder clips
Sync audio, apply transitions, and preview changes
I'm considering a custom React-based editor with drag-and-drop, timeline editing, and real-time playback.
Question: What’s the best approach to implement these features in-browser using React? Should I use with canvas/SVG overlays? How do I handle accurate timeline syncing and user interactions? Any architectural tips or examples would be helpful.
-
openbase_dir preventing access to ffmpeg executable
21 mai, par Arthur GorbanaI have installed FFMPEG on Ubuntu. In the console I ran
whereis ffmpeg
and I got this info:ffmpeg: /usr/bin/ffmpeg /usr/share/ffmpeg /usr/share/man/man1/ffmpeg.1.gz
But when I enter the path on my website I get this error:
I have PHP 8.4 and AAPANEL.
Please can you help to make my Clipbucket V5 script work?
-
How to fix "moov atom not found" error in ffmpeg ?
21 mai, par user10664722Well, I'm using this project to create a Telegram bot which receives URL of
.mp4
files, downloads them on server and uploads them to Telegram.Issue
Everything works fine so far, except converting certain
.mp4
files.For example if I use a sample
.mp4
video from https://sample-videos.com/. Then it works fine and converts it successfully.But if I use a video from some random website which is also simple
.mp4
file, it doesn't work and throws this error:[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1932420] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible! [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1932420] moov atom not found data/720P_1500K_210306701.mp4: Invalid data found when processing input