Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • F ffmpeg-python
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 402
    • Issues 402
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 34
    • Merge requests 34
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Karl Kroening
  • ffmpeg-python
  • Issues
  • #744
Closed
Open
Issue created Feb 16, 2023 by David Wang@459737087

broken pipe when I use stdin.write, it broke

import cv2
import time
import datetime
import ffmpeg

rtsp_url = 'rtsp_addr'

output_filename = 'output.m3u8'

fps = 5

cap = cv2.VideoCapture(rtsp_url)

width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))


hls = (
    ffmpeg
    .input('pipe:', format='h264', r=fps, s='300x400')
    .output(output_filename, format='hls', hls_time=1, hls_list_size=0)
    .overwrite_output()
    .run_async(pipe_stdin=True)
)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    timestamp = time.time()
    date_time = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S.%f')

    hls.stdin.write(frame.tobytes())
    hls.stdin.write(f'{date_time}\n'.encode())


cap.release()
cv2.destroyAllWindows()
hls.stdin.close()
hls.wait()
Assignee
Assign to
Time tracking