I recently found some m3u8 videos on a website and all of them are AES 128 encrypted.
Some parts of the links/codes are removed in order to reduce the lenght of the question.
I tried to download them by using following ffmpeg command.
ffmpeg -i 'https://example.com/vod/61e0c7b08a8fd.mp4/chunk.m3u8?nimblesessionid=4475264&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=' -c copy output.ts
It gives out an error,
ffmpeg version 4.4-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads
--disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2
--enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq
--enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid
--enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype
--enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf
--enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va
--enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb
--enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb
--enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
'https://example.com/vod/61e0c7b08a8fd.mp4/chunk.m3u8?nimblesessionid=4475264: Invalid argument
'wmsAuthSign' is not recognized as an internal or external command,
operable program or batch file.
Look like the link is not requested properly or something else.
Then I manually downloaded the chunk.m3u8 file and all the ts files specified in it.
Here is the content from the .m3u8 file,
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://example/test.php?nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS="
#EXTINF:10,
https://example.com:443/vod/61d23fc612669.mp4/n_0_0_0.ts?
nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=
#EXTINF:10,
https://example.com:443/vod/61d23fc612669.mp4/n_1_0_0.ts?
nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=
#EXTINF:10,
https://example.com:443/vod/61d23fc612669.mp4/n_2_0_0.ts?
nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=
#EXTINF:10,
https://example.com:443/vod/61d23fc612669.mp4/n_3_0_0.ts?
nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=
#EXTINF:10,
https://example.com:443/vod/61d23fc612669.mp4/n_4_0_0.ts?
nimblesessionid=4356176&wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=
#EXT-X-ENDLIST
But the key uri to decrypt the ts files doesn't work.
So I copied the key from the test.php file and made a new file and pasted it.
And then created a m3u8 playlist locally with all the file names and key file
specified in it as below,
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI=test.php
#EXTINF:10,
n_0_0_0.ts
#EXTINF:10,
n_1_0_0.ts
#EXTINF:10,
n_2_0_0.ts
#EXTINF:10,
n_3_0_0.ts
#EXTINF:10,
n_4_0_0.ts
#EXT-X-ENDLIST
and tried to decrypt it using following ffmpeg command,
ffmpeg -allowed_extensions ALL -i chunk.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4
It gives out this error,
ffmpeg version 4.4-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect
--enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma
--enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx
--enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg
--enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc
--enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb
--enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus
--enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
[hls # 000001fb9011dac0] Skip ('#EXT-X-VERSION:3')
[hls # 000001fb9011dac0] Opening 'test.php' for reading
[hls # 000001fb9011dac0] Opening 'crypto:n_0_0_0.ts' for reading
[hls # 000001fb9011dac0] Opening 'crypto:n_1_0_0.ts' for reading
[hls # 000001fb9011dac0] Error when loading first segment 'n_0_0_0.ts'
chunk.m3u8: Invalid data found when processing input
So what I have done wrong in this attempt to download the m3u8 stream?
Can't figure out what to do next.There wasn't anyhting help full out there.
The browser is able to do all the stuff and decrypted the video.
So I know the video is decypted somewhere in the browser.
Then I opened the network tab in developer panel an checked for all the files recieved
by the browser carefully.Then I noticed that every time the first segment of the video(0_0_0_.ts)
is recieved by the browser,a new url is requested,
<blob:https://example.com/447bc693-052f-4bf0-b8e6-aca3b9f95e10>
And there is a big java script response in it and look like a some sort of
player or a decrypter(didn't include here).
Then I found this code in the inspect element,
<div class="relative h-0 overflow-hidden" style="padding-top: 60%;">
<div id="player" class="class-vc " style="position: absolute;top:0;height:100%;width:100%"
data-feedback-url="https://example.com/session-eyJpdiI6ImZaKz="
data-m-source="https://example.com/vod/61e7581a1143e.mp4/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MS8yMS=">...................
..........</div><video data-html5-video="" muted="true" preload="metadata" playsinline="playsinline"
src="blob:https://example.com/678d6566-d2bd-4af3-bef8-7e39fe265115"></video>
I don't have much knowledge about this.I couldn't find any helpful reference on this
and I think this has somethng to with this video.
Above is the procedure I followed to try to download the
hls stream and all of the problems I encountered while doing that.
Some parts of the links/codes are removed in order to reduce the lenght of the question.
So my question is, is there something I've missed here or anything I've done wrong.
I have no idea what to next.I guess that the blob player has something to do with this.
Any help would be greatly appreciated.
Related
I have compiled nginx with rtmp, and I'm trying to use to it stream a raspberry pi camera over the network. I've done a lot of googling, and there are a lot of approaches, but none seem to work for me. So far, I have this:
rtmp {
server {
listen 1935;
chunk_size 4096;
application rtmp {
live on;
record off;
exec_static /usr/bin/ffmpeg -f video4linux2 -input_format h264 -video_size 1280x720 -framerate 30 -i /dev/video0 -vcodec copy rtmp://localhost/rtmp 2>>/home/pi/test.log
}
}
}
I would have expected the stream from the camera to be available on rtmp://pi_ip/rtmp, but instead, the log file reports:
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 12021.310578, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x720, 30 fps, 30 tbr, 1000k tbn, 2000k tbc
[NULL # 0x1ca35d0] Unable to find a suitable output format for 'rtmp://localhost/rtmp'
rtmp://localhost/rtmp: Invalid argument
Presumably there is something wrong with ffmpeg command, but I have no idea what it is.
I'm trying to restream ip camera from home network to webpage (sort of video player in wordpress). I have rtsp url of camera and i want to have an output in http. It's bothering me for 2 days now and i'm not sure what i'm missing...
My ffserver.conf file:
HTTPPort 8090 # Port to bind the server to
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 10000 # Maximum bandwidth per client
RTSPPort 8002
# set this high enough to exceed stream bitrate
CustomLog -
<Feed cam.ffm>
File /tmp/cam.ffm
FileMaxSize 10G
ACL allow 192.168.0.0 192.168.255.255
</Feed>
<Stream cam.mpg>
Feed cam.ffm
Format mpeg
VideoCodec libx264
VideoSize 1280x720
VideoFrameRate 6
VideoBufferSize 40
AVOptionVideo flags +global_header
PreRoll 15
StartSendOnKey
VideoBitRate 4096
NoAudio
</Stream>
<Stream status.html> # Server status URL
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html> # Just an URL redirect for index
# Redirect index.html to the appropriate site
URL url/
</Redirect>
When i enter ffserver -f /etc/ffserver.conf, i get:
root#test:/tmp# ffserver -f /etc/ffserver.conf
ffserver version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
/etc/ffserver.conf:30: Setting default value for video bit rate tolerance = 1024000. Use NoDefaults to disable it.
/etc/ffserver.conf:30: Setting default value for video rate control equation = tex^qComp. Use NoDefaults to disable it.
/etc/ffserver.conf:30: Setting default value for video max rate = 8192000. Use NoDefaults to disable it.
Wed Mar 15 20:23:41 2017 FFserver started.
and when i enter ffmpeg -i rtsp://<ip of camera>:8002 http://<ip of this machine-server>:8090/cam.ffm, happens nothing.
I can also reach http://<ip of my server>:8090/status.html, but no luck with http://<ip of my server>:8090/cam.mpg.
Any suggestions?
Thank you!
I want to collect the statistics of a video stream backed by https url.
on executing
ffprobe https://www.youtube.com/watch?v=YbYjtSFa5Fs
I get the following output
vagrant#kaybus:/vagrant/kaybus$ ffprobe https://www.youtube.com/watch?v=YbYjtSFa5Fs
ffprobe version N-80901-gfebc862 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 47.100 / 6. 47.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[tls # 0x3547140] A TLS packet with unexpected length was received.
https://www.youtube.com/watch?v=YbYjtSFa5Fs: Input/output error
[tls # 0x3547140] A TLS packet with unexpected length was received.
How to fix the above error?
https is listed in ffprobe's supported input and output protocols.
ffprobe -version
vagrant#kaybus:/vagrant/kaybus$ ffprobe -version
ffprobe version N-80901-gfebc862 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
Thanks
Your URL is a typical web site: it is not a direct link to a video. ffprobe supports HTTP(S), but it is not an HTML parser.
I need to make this chain:
JVC HM650--UDP-->localhost-->ffmpeg(copy stream)-->nginx-rtmp
On input I have UDP stream from camera (udp://#:35501) and I need it to publish to rtmp server (nginx with rtmp module). Apart everything works - I can play input on VLC, I can stream from FMLE to nginx etc. Except, this is my first time with ffmpeg and I can't get it work. So:
This is best i have got:
C:\ffmpeg\bin>ffmpeg -re -i udp://#:35501 -f flv "rtmp://192.168.1.17/live/live" -loglevel debug
ffmpeg version N-69972-g6c91afe Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu
tls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-
libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-l
ibrtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --
enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --ena
ble-libxvid --enable-lzma --enable-decklink --enable-zlib
libavutil 54. 19.100 / 54. 19.100
libavcodec 56. 25.100 / 56. 25.100
libavformat 56. 23.100 / 56. 23.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.100 / 5. 11.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Splitting the commandline.
Reading option '-re' ... matched as option 're' (read input at native frame rate) with argument '1'.
Reading option '-i' ... matched as input file with argument 'udp://#:35501'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'flv'.
Reading option 'rtmp://192.168.1.17/live/live' ... matched as output file.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file udp://#:35501.
Applying option re (read input at native frame rate) with argument 1.
Successfully parsed a group of options.
Opening an input file: udp://#:35501.
[udp # 0000000002c30760] end receive buffer size reported is 65536
[AVIOContext # 0000000002c513c0] Statistics: 0 bytes read, 0 seeks
udp://#:35501: Immediate exit requested
Received signal 2: terminating.
C:\ffmpeg\bin>
What is wrong with ffmpeg configuration?
SOLUTION:
The ffmpeg was listening on wrong version of UDP protocol:
Even IPv6 is disabled on network cards, internally in system, using # allowed ffmpeg listen at UDPv6.
By using 127.0.0.1 tells ffmpeg to use clean UDP.
Thanks, #thomas to make me think differently!
It seems that your ffmpeg command is right, it works for me. For information here is the output resulting in a well configured udp connection :
...
Opening an input file: udp://#:35501.
[udp # 0x2058c80] end receive buffer size reported is 131072
[flv # 0x20631a0] Format flv probed with size=2048 and score=100
[flv # 0x20631a0] Before avformat_find_stream_info() pos: 13 bytes read:2099 seeks:0
[flv # 0x20631a0] max_analyze_duration 5000000 reached at 5016000 microseconds
rfps: 29.916667 0.015099
rfps: 30.000000 0.000067
Last message repeated 1 times
rfps: 60.000000 0.000267
Last message repeated 1 times
rfps: 120.000000 0.001067
Last message repeated 1 times
rfps: 240.000000 0.004267
rfps: 29.970030 0.002007
rfps: 59.940060 0.008027
[flv # 0x20631a0] After avformat_find_stream_info() pos: 12110 bytes read:12110 seeks:0 frames:154
Input #0, flv, from 'udp://#:35501':
Metadata:
AspectRatioX : 1
AspectRatioY : 1
metadatacreator : GStreamer FLV muxer
creationdate : Mon Feb 23 6:51:54 2015
Duration: N/A, start: 0.002000, bitrate: N/A
Stream #0:0, 154, 1/1000: Video: h264 (High), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 1/60, 30.30 fps, 30 tbr, 1k tbn, 60 tbc
Successfully opened the file.
Parsing a group of options: output file rtmp://192.168.0.20/live/live.
Applying option f (force format) with argument flv.
Successfully parsed a group of options.
Opening an output file: rtmp://192.168.0.20/live/live.
...
It means that your incoming stream is not well configured. Are you sure that your camera is streaming to the right protocol (udp), address (ip of the ffmpeg host) and port (35501)?
Maybe if you don't have it I have found the manual of your camera here : http://pro.jvc.com/pro/attributes/CAMERA/manual/GY-HM650U_V2.pdf (live streaming p.166)
I hope it will help!
i have created one graph as per below (i am using osprey card for input live stream)
(graphedit tool)
Osprey analog video in ----> GDCL MPEG-4 mulitplexer ----> File Writer (.mp4 file)
filesize is very big; even 5 seconds file have 80 mb size.
file doesn't get played.
when i see file detail in ffmpeg with ffmpeg -i,
it will give error like stream 0, missing mandatory atoms, broken header
below is ffmpeg response.
ffmpeg.exe -i "C:\Documents and Setti
ngs\Administrator\Desktop\mp4file\mp4file.mp4"
ffmpeg version N-38938-ge01f478 Copyright (c) 2000-2012 the FFmpeg developers
built on Mar 19 2012 23:18:25 with gcc 4.6.2
configuration: --disable-static --enable-shared --enable-gpl --enable-version3
--disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzli
b --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable
-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-l
ibrtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-li
bvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-l
ibx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 42.100 / 51. 42.100
libavcodec 54. 12.100 / 54. 12.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 65.101 / 2. 65.101
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 # 003E28E0] stream 0, missing mandatory atoms, broken h
eader
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Documents and Settings\Administrator
\Desktop\mp4file\mp4file.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
Duration: 00:00:00.00, bitrate: -2147483 kb/s
Stream #0:0(eng): Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k
tbr, 90k tbn, 90k tbc
Metadata:
handler_name :
At least one output file must be specified
do i need to make any gdcl filter settings?
please help me to solve problem.
A multiplexer is used to multiplex different streams into a single file. Most of the time this will be an audio and a video stream. But a multiplexer does not encode audio or video. If you need h.264 video, you need to add a h264 encoder to the graph. For example you can use ffdshow for that.
See also wikipedia for the mp4 file format, H.264 video compression format, and other parts of mpeg4.
If you really mean to create an uncompressed .mp4 file, take a look at the official supported formats for .mp4. Uncompressed video is probably not officially supported. But even if it is, you also need support from both the multiplexer as the player. On his website Geraint Davies has added the following note:
Note: both mux and demux filters need a small amount of code added for
each media type that is to be supported. So far I have only added a
limited set of types. If you need other types to be accepted, please
get in touch directly It's likely that only a few lines of code will
be needed.
It is probably better to use MXF for uncompressed video.