8000 ffmpeg-python/examples at revert-493-revert-430-master · Meshinfo/ffmpeg-python · GitHub
[go: up one dir, main page]

Skip to content
{"payload":{"allShortcutsEnabled":false,"path":"examples","repo":{"id":405887123,"defaultBranch":"master","name":"ffmpeg-python","ownerLogin":"Meshinfo","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2021-09-13T08:10:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/55117672?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"revert-493-revert-430-master","listCacheKey":"v0:1631520601.753559","canEdit":false,"refType":"branch","currentOid":"807aaccb14ac495608b51425b03e7e46227180e3"},"tree":{"items":[{"name":"graphs","path":"examples/graphs","contentType":"directory"},{"name":"README.md","path":"examples/README.md","contentType":"file"},{"name":"facetime.py","path":"examples/facetime.py","contentType":"file"},{"name":"ffmpeg-numpy.ipynb","path":"examples/ffmpeg-numpy.ipynb","contentType":"file"},{"name":"get_video_thumbnail.py","path":"examples/get_video_thumbnail.py","contentType":"file"},{"name":"in.mp4","path":"examples/in.mp4","contentType":"file"},{"name":"overlay.png","path":"examples/overlay.png","contentType":"file"},{"name":"read_frame_as_jpeg.py","path":"examples/read_frame_as_jpeg.py","contentType":"file"},{"name":"requirements.txt","path":"examples/requirements.txt","contentType":"file"},{"name":"show_progress.py","path":"examples/show_progress.py","contentType":"file"},{"name":"split_silence.py","path":"examples/split_silence.py","contentType":"file"},{"name":"tensorflow_stream.py","path":"examples/tensorflow_stream.py","contentType":"file"},{"name":"transcribe.py","path":"examples/transcribe.py","contentType":"file"},{"name":"video_info.py","path":"examples/video_info.py","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":{"displayName":"README.md","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eExamples\u003c/h1\u003e\u003ca id=\"user-content-examples\" class=\"anchor\" aria-label=\"Permalink: Examples\" href=\"#examples\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/video_info.py#L15\"\u003eGet video info (ffprobe)\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-get-video-info-ffprobe\" class=\"anchor\" aria-label=\"Permalink: Get video info (ffprobe)\" href=\"#get-video-info-ffprobe\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"probe = ffmpeg.probe(args.in_filename)\nvideo_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)\nwidth = int(video_stream['width'])\nheight = int(video_stream['height'])\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eprobe\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eprobe\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003eargs\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ein_filename\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003evideo_stream\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-en\"\u003enext\u003c/span\u003e((\u003cspan class=\"pl-s1\"\u003estream\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efor\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003estream\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003ein\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eprobe\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'streams'\u003c/span\u003e] \u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003estream\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'codec_type'\u003c/span\u003e] \u003cspan class=\"pl-c1\"\u003e==\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'video'\u003c/span\u003e), \u003cspan class=\"pl-c1\"\u003eNone\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003evideo_stream\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'width'\u003c/span\u003e])\n\u003cspan class=\"pl-s1\"\u003eheight\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003evideo_stream\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'height'\u003c/span\u003e])\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/get_video_thumbnail.py#L21\"\u003eGenerate thumbnail for video\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-generate-thumbnail-for-video\" class=\"anchor\" aria-label=\"Permalink: Generate thumbnail for video\" href=\"#generate-thumbnail-for-video\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/get_video_thumbnail.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/get_video_thumbnail.png\" alt=\"get-video-thumbnail graph\" width=\"30%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(\n ffmpeg\n .input(in_filename, ss=time)\n .filter('scale', width, -1)\n .output(out_filename, vframes=1)\n .run()\n)\"\u003e\u003cpre\u003e(\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_filename\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ess\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003etime\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'scale'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003eout_filename\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evframes\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb\"\u003eConvert video to numpy array\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-convert-video-to-numpy-array\" class=\"anchor\" aria-label=\"Permalink: Convert video to numpy array\" href=\"#convert-video-to-numpy-array\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/ffmpeg-numpy.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/ffmpeg-numpy.png\" alt=\"ffmpeg-numpy graph\" width=\"20%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"out, _ = (\n ffmpeg\n .input('in.mp4')\n .output('pipe:', format='rawvideo', pix_fmt='rgb24')\n .run(capture_stdout=True)\n)\nvideo = (\n np\n .frombuffer(out, np.uint8)\n .reshape([-1, height, width, 3])\n)\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e_\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'in.mp4'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'pipe:'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rawvideo'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rgb24'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ecapture_stdout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\n\u003cspan class=\"pl-s1\"\u003evideo\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003enp\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003efrombuffer\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003enp\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003euint8\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003ereshape\u003c/span\u003e([\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eheight\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e])\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/read_frame_as_jpeg.py#L16\"\u003eRead single video frame as jpeg through pipe\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-read-single-video-frame-as-jpeg-through-pipe\" class=\"anchor\" aria-label=\"Permalink: Read single video frame as jpeg through pipe\" href=\"#read-single-video-frame-as-jpeg-through-pipe\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/read_frame_as_jpeg.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/read_frame_as_jpeg.png\" alt=\"read-frame-as-jpeg graph\" width=\"30%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"out, _ = (\n ffmpeg\n .input(in_filename)\n .filter('select', 'gte(n,{})'.format(frame_num))\n .output('pipe:', vframes=1, format='image2', vcodec='mjpeg')\n .run(capture_stdout=True)\n)\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e_\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_filename\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'select'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'gte(n,{})'\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eformat\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003eframe_num\u003c/span\u003e))\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'pipe:'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evframes\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'image2'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evcodec\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'mjpeg'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ecapture_stdout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/transcribe.py#L23\"\u003eConvert sound to raw PCM audio\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-convert-sound-to-raw-pcm-audio\" class=\"anchor\" aria-label=\"Permalink: Convert sound to raw PCM audio\" href=\"#convert-sound-to-raw-pcm-audio\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/transcribe.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/transcribe.png\" alt=\"transcribe graph\" width=\"30%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"out, _ = (ffmpeg\n .input(in_filename, **input_kwargs)\n .output('-', format='s16le', acodec='pcm_s16le', ac=1, ar='16k')\n .overwrite_output()\n .run(capture_stdout=True)\n)\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e_\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_filename\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e**\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003einput_kwargs\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'-'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e's16le'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eacodec\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'pcm_s16le'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eac\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ear\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'16k'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoverwrite_output\u003c/span\u003e()\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ecapture_stdout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAssemble video from sequence of frames\u003c/h2\u003e\u003ca id=\"user-content-assemble-video-from-sequence-of-frames\" class=\"anchor\" aria-label=\"Permalink: Assemble video from sequence of frames\" href=\"#assemble-video-from-sequence-of-frames\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/glob.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/glob.png\" alt=\"glob\" width=\"25%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(\n ffmpeg\n .input('/path/to/jpegs/*.jpg', pattern_type='glob', framerate=25)\n .output('movie.mp4')\n .run()\n)\"\u003e\u003cpre\u003e(\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'/path/to/jpegs/*.jpg'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epattern_type\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'glob'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eframerate\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e25\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'movie.mp4'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWith additional filtering:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/glob-filter.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/glob-filter.png\" alt=\"glob-filter\" width=\"50%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(\n ffmpeg\n .input('/path/to/jpegs/*.jpg', pattern_type='glob', framerate=25)\n .filter('deflicker', mode='pm', size=10)\n .filter('scale', size='hd1080', force_original_aspect_ratio='increase')\n .output('movie.mp4', crf=20, preset='slower', movflags='faststart', pix_fmt='yuv420p')\n .view(filename='filter_graph')\n .run()\n)\"\u003e\u003cpre\u003e(\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'/path/to/jpegs/*.jpg'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epattern_type\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'glob'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eframerate\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e25\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'deflicker'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003emode\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'pm'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003esize\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'scale'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003esize\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'hd1080'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eforce_original_aspect_ratio\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'increase'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'movie.mp4'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ecrf\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e20\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epreset\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'slower'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003emovflags\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'faststart'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'yuv420p'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eview\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003efilename\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'filter_graph'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAudio/video pipeline\u003c/h2\u003e\u003ca id=\"user-content-audiovideo-pipeline\" class=\"anchor\" aria-label=\"Permalink: Audio/video pipeline\" href=\"#audiovideo-pipeline\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/av-pipeline.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/av-pipeline.png\" alt=\"av-pipeline graph\" width=\"80%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"in1 = ffmpeg.input('in1.mp4')\nin2 = ffmpeg.input('in2.mp4')\nv1 = in1.video.hflip()\na1 = in1.audio\nv2 = in2.video.filter('reverse').filter('hue', s=0)\na2 = in2.audio.filter('areverse').filter('aphaser')\njoined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node\nv3 = joined[0]\na3 = joined[1].filter('volume', 0.8)\nout = ffmpeg.output(v3, a3, 'out.mp4')\nout.run()\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003ein1\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'in1.mp4'\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003ein2\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'in2.mp4'\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003ev1\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ein1\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003evideo\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ehflip\u003c/span\u003e()\n\u003cspan class=\"pl-s1\"\u003ea1\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ein1\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eaudio\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003ev2\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ein2\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003evideo\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'reverse'\u003c/span\u003e).\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'hue'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003es\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003ea2\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ein2\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eaudio\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'areverse'\u003c/span\u003e).\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'aphaser'\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003ejoined\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003econcat\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ev1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ea1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ev2\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ea2\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ev\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ea\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e).\u003cspan class=\"pl-c1\"\u003enode\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003ev3\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ejoined\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e]\n\u003cspan class=\"pl-s1\"\u003ea3\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ejoined\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e].\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'volume'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0.8\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ev3\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ea3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'out.mp4'\u003c/span\u003e)\n\u003cspan class=\"pl-s1\"\u003eout\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMono to stereo with offsets and video\u003c/h2\u003e\u003ca id=\"user-content-mono-to-stereo-with-offsets-and-video\" class=\"anchor\" aria-label=\"Permalink: Mono to stereo with offsets and video\" href=\"#mono-to-stereo-with-offsets-and-video\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 8000 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/mono-to-stereo.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/mono-to-stereo.png\" alt=\"mono-to-stereo graph\" width=\"80%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"audio_left = (\n ffmpeg\n .input('audio-left.wav')\n .filter('atrim', start=5)\n .filter('asetpts', 'PTS-STARTPTS')\n)\n\naudio_right = (\n ffmpeg\n .input('audio-right.wav')\n .filter('atrim', start=10)\n .filter('asetpts', 'PTS-STARTPTS')\n)\n\ninput_video = ffmpeg.input('input-video.mp4')\n\n(\n ffmpeg\n .filter((audio_left, audio_right), 'join', inputs=2, channel_layout='stereo')\n .output(input_video.video, 'output-video.mp4', shortest=None, vcodec='copy')\n .overwrite_output()\n .run()\n)\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eaudio_left\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'audio-left.wav'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'atrim'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003estart\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'asetpts'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'PTS-STARTPTS'\u003c/span\u003e)\n)\n\n\u003cspan class=\"pl-s1\"\u003eaudio_right\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'audio-right.wav'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'atrim'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003estart\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'asetpts'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'PTS-STARTPTS'\u003c/span\u003e)\n)\n\n\u003cspan class=\"pl-s1\"\u003einput_video\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'input-video.mp4'\u003c/span\u003e)\n\n(\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003efilter\u003c/span\u003e((\u003cspan class=\"pl-s1\"\u003eaudio_left\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eaudio_right\u003c/span\u003e), \u003cspan class=\"pl-s\"\u003e'join'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003einputs\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003echannel_layout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'stereo'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003einput_video\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003evideo\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'output-video.mp4'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eshortest\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eNone\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evcodec\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'copy'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoverwrite_output\u003c/span\u003e()\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb\"\u003eJupyter Frame Viewer\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-jupyter-frame-viewer\" class=\"anchor\" aria-label=\"Permalink: Jupyter Frame Viewer\" href=\"#jupyter-frame-viewer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/doc/jupyter-screenshot.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/doc/jupyter-screenshot.png\" alt=\"jupyter screenshot\" width=\"75%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb\"\u003eJupyter Stream Editor\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-jupyter-stream-editor\" class=\"anchor\" aria-label=\"Permalink: Jupyter Stream Editor\" href=\"#jupyter-stream-editor\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/doc/jupyter-demo.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/doc/jupyter-demo.gif\" alt=\"jupyter demo\" width=\"75%\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/tensorflow_stream.py\"\u003eTensorflow Streaming\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-tensorflow-streaming\" class=\"anchor\" aria-label=\"Permalink: Tensorflow Streaming\" href=\"#tensorflow-streaming\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/tensorflow-stream.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/tensorflow-stream.png\" alt=\"tensorflow streaming; challenge mode: combine this with the webcam example below\" width=\"55%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDecode input video with ffmpeg\u003c/li\u003e\n\u003cli\u003eProcess video with tensorflow using \"deep dream\" example\u003c/li\u003e\n\u003cli\u003eEncode output video with ffmpeg\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"process1 = (\n ffmpeg\n .input(in_filename)\n .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8)\n .run_async(pipe_stdout=True)\n)\n\nprocess2 = (\n ffmpeg\n .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))\n .output(out_filename, pix_fmt='yuv420p')\n .overwrite_output()\n .run_async(pipe_stdin=True)\n)\n\nwhile True:\n in_bytes = process1.stdout.read(width * height * 3)\n if not in_bytes:\n break\n in_frame = (\n np\n .frombuffer(in_bytes, np.uint8)\n .reshape([height, width, 3])\n )\n\n # See examples/tensorflow_stream.py:\n out_frame = deep_dream.process_frame(in_frame)\n\n process2.stdin.write(\n out_frame\n .astype(np.uint8)\n .tobytes()\n )\n\nprocess2.stdin.close()\nprocess1.wait()\nprocess2.wait()\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003eprocess1\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_filename\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'pipe:'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rawvideo'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rgb24'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evframes\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun_async\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003epipe_stdout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\n\n\u003cspan class=\"pl-s1\"\u003eprocess2\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'pipe:'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rawvideo'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'rgb24'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003es\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'{}x{}'\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eformat\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eheight\u003c/span\u003e))\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003eout_filename\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'yuv420p'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoverwrite_output\u003c/span\u003e()\n .\u003cspan class=\"pl-c1\"\u003erun_async\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003epipe_stdin\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\n\n\u003cspan class=\"pl-k\"\u003ewhile\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e:\n \u003cspan class=\"pl-s1\"\u003ein_bytes\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eprocess1\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003estdout\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eread\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e*\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eheight\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e*\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e)\n \u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003enot\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ein_bytes\u003c/span\u003e:\n \u003cspan class=\"pl-k\"\u003ebreak\u003c/span\u003e\n \u003cspan class=\"pl-s1\"\u003ein_frame\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003enp\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003efrombuffer\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_bytes\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003enp\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003euint8\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003ereshape\u003c/span\u003e([\u003cspan class=\"pl-s1\"\u003eheight\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003ewidth\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e])\n )\n\n \u003cspan class=\"pl-c\"\u003e# See examples/tensorflow_stream.py:\u003c/span\u003e\n \u003cspan class=\"pl-s1\"\u003eout_frame\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003edeep_dream\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eprocess_frame\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003ein_frame\u003c/span\u003e)\n\n \u003cspan class=\"pl-s1\"\u003eprocess2\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003estdin\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ewrite\u003c/span\u003e(\n \u003cspan class=\"pl-s1\"\u003eout_frame\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003eastype\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003enp\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003euint8\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003etobytes\u003c/span\u003e()\n )\n\n\u003cspan class=\"pl-s1\"\u003eprocess2\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003estdin\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eclose\u003c/span\u003e()\n\u003cspan class=\"pl-s1\"\u003eprocess1\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ewait\u003c/span\u003e()\n\u003cspan class=\"pl-s1\"\u003eprocess2\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ewait\u003c/span\u003e()\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/dream.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/examples/graphs/dream.png\" alt=\"deep dream streaming\" width=\"40%\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/kkroening/ffmpeg-python/blob/master/examples/facetime.py\"\u003eFaceTime webcam input (OS X)\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-facetime-webcam-input-os-x\" class=\"anchor\" aria-label=\"Permalink: FaceTime webcam input (OS X)\" href=\"#facetime-webcam-input-os-x\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(\n ffmpeg\n .input('FaceTime', format='avfoundation', pix_fmt='uyvy422', framerate=30)\n .output('out.mp4', pix_fmt='yuv420p', vframes=100)\n .run()\n)\"\u003e\u003cpre\u003e(\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'FaceTime'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'avfoundation'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'uyvy422'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eframerate\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'out.mp4'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003epix_fmt\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'yuv420p'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003evframes\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStream from a local video to HTTP server\u003c/h2\u003e\u003ca id=\"user-content-stream-from-a-local-video-to-http-server\" class=\"anchor\" aria-label=\"Permalink: Stream from a local video to HTTP server\" href=\"#stream-from-a-local-video-to-http-server\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"video_format = \u0026quot;flv\u0026quot;\nserver_url = \u0026quot;http://127.0.0.1:8080\u0026quot;\n\nprocess = (\n ffmpeg\n .input(\u0026quot;input.mp4\u0026quot;)\n .output(\n server_url, \n codec = \u0026quot;copy\u0026quot;, # use same codecs of the original video\n listen=1, # enables HTTP server\n f=video_format)\n .global_args(\u0026quot;-re\u0026quot;) # argument to act as a live stream\n .run()\n)\n\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003evideo_format\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"flv\"\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003eserver_url\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"http://127.0.0.1:8080\"\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\"input.mp4\"\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\n \u003cspan class=\"pl-s1\"\u003eserver_url\u003c/span\u003e, \n \u003cspan class=\"pl-s1\"\u003ecodec\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"copy\"\u003c/span\u003e, \u003cspan class=\"pl-c\"\u003e# use same codecs of the original video\u003c/span\u003e\n \u003cspan class=\"pl-s1\"\u003elisten\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c\"\u003e# enables HTTP server\u003c/span\u003e\n \u003cspan class=\"pl-s1\"\u003ef\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003evideo_format\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eglobal_args\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\"-re\"\u003c/span\u003e) \u003cspan class=\"pl-c\"\u003e# argument to act as a live stream\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003erun\u003c/span\u003e()\n)\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eto receive the video you can use ffplay in the terminal:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$ ffplay -f flv http://localhost:8080\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$ ffplay -f flv http://localhost:8080\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStream from RTSP server to TCP socket\u003c/h2\u003e\u003ca id=\"user-content-stream-from-rtsp-server-to-tcp-socket\" class=\"anchor\" aria-label=\"Permalink: Stream from RTSP server to TCP socket\" href=\"#stream-from-rtsp-server-to-tcp-socket\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"packet_size = 4096\n\nprocess = (\n ffmpeg\n .input('rtsp://%s:8554/default')\n .output('-', format='h264')\n .run_async(pipe_stdout=True)\n)\n\nwhile process.poll() is None:\n packet = process.stdout.read(packet_size)\n try:\n tcp_socket.send(packet)\n except socket.error:\n process.stdout.close()\n process.wait()\n break\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epacket_size\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e4096\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\n \u003cspan class=\"pl-s1\"\u003effmpeg\u003c/span\u003e\n .\u003cspan class=\"pl-c1\"\u003einput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'rtsp://%s:8554/default'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003eoutput\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e'-'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003eformat\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e'h264'\u003c/span\u003e)\n .\u003cspan class=\"pl-c1\"\u003erun_async\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003epipe_stdout\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eTrue\u003c/span\u003e)\n)\n\n\u003cspan class=\"pl-k\"\u003ewhile\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epoll\u003c/span\u003e() \u003cspan class=\"pl-c1\"\u003eis\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003eNone\u003c/span\u003e:\n \u003cspan class=\"pl-s1\"\u003epacket\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003estdout\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eread\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003epacket_size\u003c/span\u003e)\n \u003cspan class=\"pl-k\"\u003etry\u003c/span\u003e:\n \u003cspan class=\"pl-s1\"\u003etcp_socket\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003esend\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003epacket\u003c/span\u003e)\n \u003cspan class=\"pl-k\"\u003eexcept\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003esocket\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eerror\u003c/span\u003e:\n \u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003estdout\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003eclose\u003c/span\u003e()\n \u003cspan class=\"pl-s1\"\u003eprocess\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003ewait\u003c/span\u003e()\n \u003cspan class=\"pl-k\"\u003ebreak\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/article\u003e","errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"Examples","anchor":"examples","htmlText":"Examples"},{"level":2,"text":"Get video info (ffprobe)","anchor":"get-video-info-ffprobe","htmlText":"Get video info (ffprobe)"},{"level":2,"text":"Generate thumbnail for video","anchor":"generate-thumbnail-for-video","htmlText":"Generate thumbnail for video"},{"level":2,"text":"Convert video to numpy array","anchor":"convert-video-to-numpy-array","htmlText":"Convert video to numpy array"},{"level":2,"text":"Read single video frame as jpeg through pipe","anchor":"read-single-video-frame-as-jpeg-through-pipe","htmlText":"Read single video frame as jpeg through pipe"},{"level":2,"text":"Convert sound to raw PCM audio","anchor":"convert-sound-to-raw-pcm-audio","htmlText":"Convert sound to raw PCM audio"},{"level":2,"text":"Assemble video from sequence of frames","anchor":"assemble-video-from-sequence-of-frames","htmlText":"Assemble video from sequence of frames"},{"level":2,"text":"Audio/video pipeline","anchor":"audiovideo-pipeline","htmlText":"Audio/video pipeline"},{"level":2,"text":"Mono to stereo with offsets and video","anchor":"mono-to-stereo-with-offsets-and-video","htmlText":"Mono to stereo with offsets and video"},{"level":2,"text":"Jupyter Frame Viewer","anchor":"jupyter-frame-viewer","htmlText":"Jupyter Frame Viewer"},{"level":2,"text":"Jupyter Stream Editor","anchor":"jupyter-stream-editor","htmlText":"Jupyter Stream Editor"},{"level":2,"text":"Tensorflow Streaming","anchor":"tensorflow-streaming","htmlText":"Tensorflow Streaming"},{"level":2,"text":"FaceTime webcam input (OS X)","anchor":"facetime-webcam-input-os-x","htmlText":"FaceTime webcam input (OS X)"},{"level":2,"text":"Stream from a local video to HTTP server","anchor":"stream-from-a-local-video-to-http-server","htmlText":"Stream from a local video to HTTP server"},{"level":2,"text":"Stream from RTSP server to TCP socket","anchor":"stream-from-rtsp-server-to-tcp-socket","htmlText":"Stream from RTSP server to TCP socket"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FMeshinfo%2Fffmpeg-python%2Ftree%2Frevert-493-revert-430-master%2Fexamples"}},"totalCount":14,"showBranchInfobar":true},"fileTree":{"":{"items":[{"name":"doc","path":"doc","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"ffmpeg","path":"ffmpeg","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"MANIFEST","path":"MANIFEST","contentType":"file"},{"name":"README","path":"README","contentType":"symlink_file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"pytest.ini","path":"pytest.ini","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"setup.cfg","path":"setup.cfg","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"},{"name":"tox.ini","path":"tox.ini","contentType":"file"}],"totalCount":14}},"fileTreeProcessingTime":16.687372999999997,"foldersToFetch":[],"treeExpanded":true,"symbolsExpanded":false,"csrf_tokens":{"/Meshinfo/ffmpeg-python/branches":{"post":"cDQ7ZM0Wzyc1SeUu3mGZCKenx-CTvf54mdFrnadHIqbAdhZ_lqWguG6iE3K1804k3B0OL0RSX36zK8QyqxB42A"},"/Meshinfo/ffmpeg-python/branches/fetch_and_merge/revert-493-revert-430-master":{"post":"aLYMNLw3jCJN1DxU_kkOMhg_4hLvLgTMy602Id4Sontlotf4JbGpCIwYlct7WIdkSs6-ueQER1eXvanZJthmnQ"},"/Meshinfo/ffmpeg-python/branches/fetch_and_merge/revert-493-revert-430-master?discard_changes=true":{"post":"I2usRWDjm68TWGG_MadVcvFgyRDdTjPkfeCBqvImZ20uf3eJ-WW-hdKUyCC0ttwko5GVu9ZkcH8h8B5SCuyjiw"}}},"title":"ffmpeg-python/examples at revert-493-revert-430-master · Meshinfo/ffmpeg-python","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0