2011-06-21 22 views
7

Mam kilka filmów zakodowanych w formacie H.264, które renderują się w HTML5 poprawnie w przeglądarce, ale nie wyświetlają się poprawnie na iPadzie. Kiedy używam wideo H.264 pobranego z internetu, moje wideo jest renderowane poprawnie na iPadzie, więc nie jest to problem HTML.iPad nie renderuje wideo H.264 z HTML5

Oto ffmpeg informacji o moich filmach -

Mój oryginalny .mov wideo:

Wydaje strumień 1 kodek frame rate różni się od szybkości klatek pojemnik: 6000.00 (6000/1) -> 30.00 (30/1)

Wejście # 0, MOV, MP4, M4A, 3GP, 3G2, MJ2 od 'a_video.mp4':

Metadane:

major_brand  : qt 
minor_version : 537199360 
compatible_brands: qt 

Czas trwania: 00: 00: 42.74, start: 0.000000, bitrate: 220 kb/s

Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16, 94 kb/s 
Stream #0.1(eng): Video: h264, yuv420p, 762x464, 122 kb/s, 30 fps, 30 tbr, 3k tbn, 6k tbc 

Po użyciu hamulca ręcznego przekonwertować .MOV do mp4, jeszcze nie czyni na iPAD:

Wydaje strumień 0 kodek frame rate różni się od pojemnika szybkości klatek: 180000.00 (180000/1) -> 29,97 (30000/1001)

Wejście # 0 mov MP4, M4A 3GP 3g2, mj2, z 'a_video.m4v':

Metadane:

major_brand  : mp42 
minor_version : 0 
compatible_brands: mp42isomavc1 
encoder: HandBrake 0.9.5 2011010300 

Długość: 00: 00: 42,77, start: 0.000000, przepływność 169 kb/s

strumień # 0.0 (und): Film: H264 yuv420p, 752x464 [ PAR 381: 376 DAR 381: 232], 35 kb/s, PAR 145161: 141376 DAR 145161: 87232, 29,97 fps, 29,97 tb, 90 000 tbn, 180 000 tbc
Strumień # 0,1 (poler): Audio: aac, 44100 Hz , stereo, s16, 128 kb/s

Tutaj jest MP4 I znaleźć na stronie internetowej, która oznacza to, iż na IPAD:

Wydaje się strumień 1 kodek frame rate różni się od szybkości ramki Pojemnik 180000.00 (180000/1) -> 25,00 (25/1)

wejście # 0 mov MP4, M4A, 3GP, 3G2, MJ2 z 'a_video_3_emu.mp4':

Metadane: major_brand: M4VP
minor_version: 1
compatible_brands: M4VPM4A mp42isom
koder: CoreMediaAuthoring 677 CoreMedia 420,17, i38 6

Długość: 00: 01: 38,01, start: 0.000000, bitrate: 1023 kb/s

strumień # 0.0 (und) audio: aac 32000 Hz, mono-, S16, 97 kb/s
Strumień # 0.1 (und): Film: H264 yuv420p, 480x360 [para 1: 1 DAR 4: 3] 914 kb/s, 25 klatek na sekundę, 25 TBR 90k TBN, 180k potwierdzenia

nikomu patrz co źle ze sposobem, w jaki zakodowuję moje filmy?

Edit

Początkowo moja teoria, że ​​iPad był wrażliwy na różnych formatów kontenerowych; ale wydaje się, że tak nie jest. Zrobiłem wideo, które jest poprawnie renderowane na iPadzie i przekonwertowane na .mov, a ono nadal jest odtwarzane poprawnie na iPadzie. Musi więc istnieć problem z tym, jak iPad radzi sobie z podstawowym strumieniem H.264.

+0

Czy MP4 działa podczas przeglądania strony w przeglądarce na komputerze? – Niklas

+0

Tak. Dzieje się tak tylko na iPadzie. Ma to coś wspólnego z MP4 vs. M4V. – jgoldberg

+0

Po prostu uruchomiłem to polecenie dla wideo renderowanego na iPadzie: ffmpeg -i a_video_3_emu.mp4 -acodec copy -vcodec mpeg4 output.mp4. output.mp4 nadal działało na iPadzie. Wygląda na to, że może to nie być problem z pojemnikiem, ale strumień bazowy. – jgoldberg

Odpowiedz

3

Jeśli masz strumień wideo H.264 - niezależnie od kontenera (mov, m4v, mp4) - i wideo HTML5 renderowane w przeglądarce internetowej, ale nie renderowane na iPadzie, są dwa możliwe poprawki:

Pierwsze rozwiązanie to konwersja strumienia wideo H.264 na MPEG4.

ffmpeg -i video_h264_not_working.mov -acodec copy -vcodec mpeg4 video_mpeg.mov

(Alternatywnie, można wybrać zamiast MPEG4 H.264 hamulców ręcznych).

Drugie rozwiązanie jest ponownie proces wideo H.264 z następującymi parametrami:

ffmpeg -i video_h264_not_working.mov -vcodec libx264 -r 25 -b 516k -bt 516k -crf 22 -vpre normal video_h264.mov

drugie rozwiązanie zaczerpnięto z: http://houseoflaudanum.com/navigate/howtos/html5-video-no-webm/

Zgaduję, że w poprzednim przypadku kodek mpeg4 jest bardziej zrelaksowany na iPadzie; w tym drugim przypadku iPad nie podobał się niektórym parametrom strumienia z oryginalnego kodowania H.264, więc konieczne było "czyszczenie".

Aby określić, czym właściwie jest Twój strumień wideo, po prostu wykonaj ffmpeg -i myvideo.mov.

1

Udało mi się zakodować kodowanie i transkodować wideo w formacie HTML5 za pomocą bezpłatnego Miro Video Converter (OS X, Windows) zgodnie z zaleceniami podanymi w Video on the Web section of Dive Into HTML5 autorstwa Marka Pilgrima.

Miro Video Converter może konwertować praktycznie każdy plik wideo na MP4, Theora lub MP3 (tylko audio). Ma presety, które konwertują wideo na odpowiednie rozmiary i formaty popularnych telefonów, iPodów i innych odtwarzaczy multimedialnych. Po prostu skonwertuj wideo i skopiuj go na swoje urządzenie.

To bardzo prosty sposób na konwersję niemal każdego filmu na MP4, WebM (vp8), Ogg Theora lub na Androida, iPhone'a i inne. Będziesz czuł się dobrze, że jest w 100% darmowy i open-source.

Innym prawdziwym narzędziem do konwersji wideo jest Video Monkey, darmowa aplikacja do kodowania wideo przeznaczona wyłącznie dla komputerów Mac. Powstał po rozpadzie świetnego narzędzia Visual Hub. Video Monkey pożycza w dużej mierze z narzędzia do konwersji wideo Visual Hub, zarówno koncepcyjnie, jak i z oryginalnego zrzutu opublikowanego w serwisie SourceForge jako TranscoderRedux.

+0

Mam ten sam problem. Miro nie działa. W rzeczywistości, gdy konwertuję .wmv na .webm do użytku z Chrome, ulega awarii. (Dla porównania: hamulec ręczny i VLC również nie działają z iPadem, ale oba mogą tworzyć filmy w różnych formatach, które działają z Chrome) – Bobby

0

sudo port install ffmpeg i wypróbować ten tajny sos:

#!/bin/bash 
BR=512k 
WIDTH=640 
HEIGHT=272 
input=${1} 

# strip off the file extension 
output=$(echo ${input} | sed 's/\..*//') 

# works for most videos 
ffmpeg -y -i ${input} -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s ${WIDTH}x${HEIGHT} -vcodec libx264 -b ${BR} -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate ${BR} -bufsize ${BR} -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect ${WIDTH}:${HEIGHT} -g 30 -async 2 ${output}-iphone.ts 

Dostosuj szerokość i wysokość do oryginalnego wideo i ustawić bitrate jak widać pasuje. Przekaż oryginalne wideo jako parametr skryptu. Działa z prawie dowolnym formatem źródłowym. Do polecenia portu potrzebne jest macports.

Powiązane problemy