카메라 스트림에서 비디오를 복사하는 명령을 사용하고 있는데 cat /dev/video0 > file.mpeg
잘 작동하지만 파일을 더 작은 덩어리로 분할하고 싶기 때문에 Ctrl+C를 계속 기다리고 있습니다. 자동화하고 싶어서 배치 스크립트를 만들었습니다. X분을 기다린 후 작업을 중지하고 진행률 표시줄을 표시합니다. 그것은 훌륭하게 작동했지만 한 단계 더 나아가고 싶었습니다. 정확한 시간과 파일 이름이 포함된 XML 파일이 있고 파일을 구문 분석하는 모노 프로그램이 있습니다.
질문은 다음과 같습니다. 이 cat 명령을 프로그래밍 방식으로 어떻게 실행합니까? 물론 시스템 명령을 실행할 수도 있습니다. 하지만 전체 애플리케이션을 동일한 언어로 만들고 싶습니다. 파일을 열어서 바이너리로 쓰고 한 번에 1000바이트를 읽을 수 있습니다. 그런데 cat은 무엇을 하고 있나요? 어떻게든 얼마나 많이/얼마나 빨리 읽을 수 있는지 알고 있나요?
답변1
timeout
죽여 버리자cat
cat
및 + 와 ctrl잘 작동 하므로 c다음 명령줄에서는 문제에 따라 데이터를 처리해야 하며 재생 시간을 5초로 기록하려는 것으로 가정해야 합니다.
timeout 5 cat /dev/video0 > file.mpeg
cat
데이터를 읽고 쓰는 간단한 도구입니다. 데이터 전송 속도나 시간 간격을 설정할 수 없습니다 cat
. 외부에서 통제해야 합니다 cat
. 하지만 다른 도구도 많이 있습니다.
내장 기능 사용ffmpeg
멀티미디어 도구도 사용할 수 있습니다 ffmpeg
. 가파른 학습 곡선이 있지만 사용을 시작하면 매우 강력한 도구라는 것을 알게 될 것입니다. 설명서에 자세한 설명이 나와있어요man ffmpeg
하지만 인터넷을 통해 적합한 튜토리얼을 검색하는 것이 더 좋습니다.
MTS 파일을 mpeg 파일로 변환하기 위해 다음 명령줄을 테스트했습니다. 아직 장치에서 테스트하지는 않았지만 작동할 것이라고 생각합니다. 변환을 제어하기 위해 명령줄에서 더 많은 옵션을 사용할 수 있습니다(기본값과 다름).
ffmpeg -t 5 -i /dev/video0 file.mpeg
-t 5
5초 동안 녹음한다는 의미입니다 .
다음 명령줄은 중요한 개선이 될 수 있습니다.
ffmpeg -i /dev/video0 -f segment -segment_time 10:0 out%03d.mp4
입력을 10분 길이의 파일로 분할합니다. 문서를 읽어야합니다여기
ffmpeg
버전
Lubuntu 18.04.1 LTS를 사용하는 작업 컴퓨터에는
ffmpeg version 3.4.4-0ubuntu0.18.04.1
버전 3.4.4가 있습니다. 이것은 Ubuntu 저장소에서 설치한 후 얻을 수 있는 것입니다. 다른 Linux 배포판 및 버전에는 다른 버전(최신 또는 이전)이 있을 수 있습니다.다음으로 연결https://ffmpeg.org) 버전 4.1에 대해 설명하지만 이 버전의 일부 기능은 이전 버전에서는 사용하지 못할 수 있습니다. 이 버전은 더욱 고급 버전이지만 버그 수정을 받고 업데이트하는 것이 더 복잡할 수 있습니다.