2015-01-05 5 views
0

다음 명령을 실행하여 비디오에 워터 마크를 삽입하고 mp4 형식으로 출력하지만 html5 비디오로 브라우저에서 해당 형식이 재생되지 않습니다. 플레이어.ffmpeg mp4 비디오가 브라우저의 html5 비디오 플레이어에서 재생되지 않습니다. (손상된 형식)

$video_url = '../../../uploads/myvideo.mp4'; 
$watermarked = '../../../uploads/watermarked_video.mp4'; 
exec("ffmpeg -i $video_url -vf \"movie='sos.png', crop=iw:ih:0:0:dar [img]; [in] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -vcodec mpeg4 -f avi $watermarked"); //creating water marked video 

로컬 컴퓨터에 다운로드하면 플레이어에서 완벽하게 재생됩니다.

구문에 문제가 있습니까?

+0

워터 마크가 찍힌 동영상은 무엇인가요? 나는 1 분 안에 3 퀴즈를 봤어! 어쨌든, 당신의 웹 플레이어는 ffmpeg를 지원합니까? –

+0

아니요, 워터 마크가있는 mp4 비디오가 생성됩니다. 브라우저에서 html5 비디오 플레이어로 재생하지 마십시오 –

+0

웹 (html5 플레이어)은 다른 것을 설치하지 않고 ffmpeg 형식을 지원합니까? –

답변

1

출력 형식이 올바르지 않습니다. 여기에서 고려해야 할 두 가지 요소가 있습니다

  1. 은 "컨테이너 형식"또는 전체 파일 (예 : AVI, MOV/퀵타임, WebM을, 오그)를 배치하는 방법입니다 "파일 형식",
  2. "코덱"은 컨테이너 내의 비디오 및 오디오 데이터를 압축하고 압축을 푸는 데 사용되는 알고리즘입니다. 대부분의 파일에는 음성 용 (예 : AAC, Vorbis, MP3, Opus) 코덱과 비디오 용 (예 : H.264, VP8, Theora)의 두 코덱이 있습니다.

ffmpeg는 VLC 플레이어처럼 다양한 형식과 코덱을 읽고 쓸 수 있습니다. QuickTime도 그렇지만 많지는 않습니다. 그러나 브라우저는 훨씬 까다 롭습니다. 브라우저가 지원하지 않는 "AVI"컨테이너 형식으로 파일을 저장합니다. 그리고 아마도 libx264을 코덱으로 사용해야하는데, H.264 비디오를 출력하고 MPEG-4 Part 2 비디오를 출력하는 mpeg4보다 조금 더 널리 사용되고 안정적입니다.

이 시도 :는 FFmpeg은 출력 파일 확장자의 형식을 추론 할 수 있기 때문에

$video_url = '../../../uploads/myvideo.mp4'; 
$watermarked = '../../../uploads/watermarked_video.mp4'; 
exec("ffmpeg -i $video_url -i sos.png -filter_complex \"[1:v]crop=iw:ih:0:0:dar [img]; [0:v] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -map \"[out]\" -map 0:a -vcodec libx264 -acodec copy $watermarked"); //creating water marked video 
  • 나는 -f 매개 변수를 제거했습니다.

  • 동영상 필터가 필요하지 않으므로 예제에서 제거되었습니다.

  • -vf-filter_complex으로 대체되었습니다. 차이점을 확인하려면 simplecomplex 필터링을 참조하십시오.

  • 이 예제의 오디오는 다시 인코딩되지 않고 인 stream copied이됩니다.